2012-01-17 14 views
8

He intentado con el ejemplo encontrado en el enlace http://www.raywenderlich.com/3443/apple-push-notification-services-tutorial-part-12, para el mensaje de notificación de inserción de mi iPhone. Pude ejecutar con éxito todos los pasos, excepto los pasos para registrar la aplicación para la notificación automática por primera vez.Registrar la aplicación iPhone para notificaciones push no funciona

he seguido diferentes variaciones del código:

[[UIApplication sharedApplication] registerForRemoteNotificationTypes: 
(UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeSound | UIRemoteNotificationTypeAlert)]; 

Pero nada funcionó para mí. Lo estoy probando en mi iPhone 4 y mi versión Xode es 4.2, OS es Lion. Por favor consejo.

+0

¿Qué problema estás enfrentando? ¿Pasaste por este enlace: http://mobiforge.com/developing/story/programming-apple-push-notification-services también http://stackoverflow.com/questions/8075255/push-notification-for-development-certificate/8075436 # 8075436 – Sarah

Respuesta

31

Puede intentar lo siguiente:

  • Asegúrese de que su proyecto de Xcode está configurado para utilizar el ID de paquete explícito del portal de aprovisionamiento
  • Asegúrese de que no está construyendo el objetivo con el equipo comodín o un archivo de suministro, verificar esta información en el proyecto Y configuración de destino
  • Si ha creado su aprovisionamiento perfil antes de configurar el ID de aplicación para el empuje, volver a generar el archivo de suministro

estudian también el objeto de error en el método UIApplicationDelegate

application:didFailToRegisterForRemoteNotificationsWithError: 

EDITAR 1

Abra su perfil de aprovisionamiento en un editor de texto y busque la cadena

<key>aps-environment</key> 

Si su perfil no lo contiene, no está configurado correctamente para la inserción.

+0

1) sí, tengo el Id. De paquete explícito 2) No estoy usando comodines, 3) He regenerado el perfil de provisión e intenté ejecutar la aplicación nuevamente. – Vinod

+0

¿Qué error está obteniendo en el método de delegado mencionado anteriormente? – nduplessis

+0

Consulte la edición anterior sobre el error de registro de inserción – nduplessis

0

¿Alguna vez ha visto el cuadro de diálogo de notificación de inserción en su aplicación? Si descarta el diálogo, tardará 24 horas en volver a mostrar. Verifique esto al establecer la hora en su iPhone antes de 2 días y ver si se muestra.

También se han ejecutado los métodos de delegado:

- (void)application:(UIApplication *)application didRegisterForRemoteNotificationsWithDeviceToken:(NSData *)deviceToken { 

- (void)application:(UIApplication *)application didFailToRegisterForRemoteNotificationsWithError:(NSError *)error { 

- (void) application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo { 

Trate de poner un NSLog (@ "") en el didRegisterForRemoteNotificationsWithDeviceToken y didFailToRegisterForRemoteNotificationsWithError y vea que se está recibiendo en ese país?

También necesita un ID de aplicación configurado para la notificación de inserción y debe haber generado los certificados de notificación de inserción para enviar los mensajes.

+0

sí, tengo estos métodos. Y también, tengo la identificación de la aplicación con los servicios de notificación push habilitados. – Vinod

+0

Obtengo el resultado de NSlog para el método "didFinishLaunchingWithOptions" no para otros. Ahora obtengo el error Error al obtener el token, error: Dominio de error = NSCocoaErrorDomain Code = 3000 "no se encontró una cadena de autorización 'aps-environment' válida para la aplicación" UserInfo = 0x1657c0 {NSLocalizedDescription = cadena de autorización 'aps-environment' válida no encontrada para la aplicación} – Vinod

+0

Verifique que compila con el archivo de aprovisionamiento correcto. Suena como el problema para mí. Tendría que crear un archivo de aprovisionamiento en la Id de la aplicación con notificaciones push. – jodm

3

Aquí es mi Workin ejemplo de código de aplicación delegue (AppDelegate.m)

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    [application registerForRemoteNotificationTypes:UIRemoteNotificationTypeBadge | UIRemoteNotificationTypeAlert | UIRemoteNotificationTypeSound]; 
} 

Para comprobar si el registro fue bien, poner en práctica estos tres métodos

– application:didReceiveRemoteNotification: 
– application:didRegisterForRemoteNotificationsWithDeviceToken: 
– application:didFailToRegisterForRemoteNotificationsWithError: 

http://developer.apple.com/library/ios/#documentation/uikit/reference/UIApplicationDelegate_Protocol/Reference/Reference.html

o puede ir a Configuraciones para ver si hay configuraciones de permisos disponibles

así:

iPad Notification Settings

+0

He agregado los 3 métodos anteriores, luego aparece el error en la consola "Error al obtener token, error: Dominio de error = NSCocoaErrorDomain Code = 3000" no se encontró una cadena de autorización 'aps-environment' válida para la aplicación "UserInfo = 0x143bc0 { NSLocalizedDescription = no se encuentra una cadena de autorización 'aps-environment' válida para la aplicación} "Pero la aplicación se ejecuta en iPhone con una pantalla blanca en blanco. Además, no he comenzado la parte de payload/php del código. – Vinod

+0

He agregado la impresión de NSlog para cada método, pude obtener el resultado del método "didFinishLaunchingWithOptions" solamente, y luego el error anterior. – Vinod

+0

@Vinod genial, ahora cuando tienes respuesta de error, puedes encontrar dónde está el problema. Lea esto: http://stackoverflow.com/questions/5681172/bundle-identifier-and-push-certificate-aps-environment-entitlement-error –

1

Si este problema aparece en la producción (con su aplicación en la AppStore), es muy probable debido a que ha creado/habilitar el modo de producción APN de su aplicación DESPUÉS tener creó el perfil de distribución.

En este caso, no hay otra opción que presentar de nuevo con un certificado correcto ...

Regla de oro: SIEMPRE activar/Crear certificado de producción para su aplicación ANTES crear el perfil de distribución.

Puede usar el método descrito por 'nduplessis' (ver más abajo) para verificar manualmente si su aplicación ejecutará la notificación una vez aprobada.

0

Ir a Capacidades ->Notificaciones de inserción. Si hay errores, entonces pruebe esta solución.

Si la versión de Xcode se cambió de 7 a 8, entonces pruebe esta solución.

Xcode 7 copia el derecho de aps-environment de su perfil de aprovisionamiento. Activar las notificaciones push en Xcode 8 agrega la titularidad tanto a su perfil de aprovisionamiento como a su archivo de derechos.

Intente agregar el derecho de aps-environment al archivo de autorizaciones de su aplicación o desactive y vuelva a activar la capacidad de notificación.

Cuestiones relacionadas