2011-12-24 22 views
10

Estoy tratando de implementar Notificaciones Push para mi aplicación iOS 5 por la guía de Ray Wenderlich: http://www.raywenderlich.com/3443/apple-push-notification-services-tutorial-part-12.iOS: cómo registrarse para recibir notificaciones push?

he insertado el siguiente en mi método didFinishLaunchingWithOptions en mi AppDelegate:

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

Cuando se ejecuta la aplicación en el dispositivo (no simulador) el popup/alerta diciéndome a aceptar notificaciones push no se visualiza . He insertado un punto de depuración en la línea y puedo ver que se llama al registerForRemoteNotificationTypes.

¿Por qué no sucede nada?

Respuesta

7

Quizás, elimine su aplicación y vuelva a intentarlo. Ese diálogo solo aparece una vez. Pero no estoy seguro de si ese cuadro de diálogo aparecerá nuevamente cuando reinstale esa aplicación.

También puede ir a su aplicación de configuración del centro de notificaciones, ver si su aplicación está en la lista.

También puede agregar un punto de interrupción y ver si se ejecuta didRegisterForRemoteNotificationsWithDeviceToken.

+0

He intentado eliminar la aplicación del dispositivo sin éxito. La aplicación no está en el Centro de notificaciones. Además, nunca se llama a 'didRegisterForRemoteNotificationsWithDeviceToken' o' didFailToRegisterForRemoteNotificationsWithError'. – dhrm

+0

¿Ha establecido el identificador de paquete correcto? ¿Estás usando una ID de aplicación comodín? – YuAo

+3

Gracias por su respuesta. El problema fue que tuve que volver a generar mi perfil de aprovisionamiento después de habilitar las notificaciones automáticas para el certificado. – dhrm

3

Tuve este problema exacto (con el mismo tutorial no menos), y descubrí que estaba firmando el código con el perfil de aprovisionamiento incorrecto.

Específicamente, solo habilité notificaciones automáticas de "Producción" para mi aplicación (ya que no quería hacer certificados dos veces, etc.) pero mi Configuración de compilación en Xcode usó "Desarrollo de iPhone" como la "Identidad de firma de código" predeterminada "Release", en lugar de "iPhone Distribution" como debería haber sido. Esta parece ser la configuración predeterminada en mi aplicación de prueba.

Afortunadamente puedo evitar que otra persona pierda el tiempo con el mismo problema.

+0

Mismo tutorial, mismo problema. Estoy ejecutando la creación de Debug conectada al dispositivo, y tengo la identidad de firma de desarrollo ... Cuando dices "Solo habilité" Notificaciones de producción "push para mi aplicación", ¿podrías explicar qué significa eso? –

1

Desde iOS 8 hay un nuevo método para esto. Directamente desde UIApplication.h:

- (void)registerForRemoteNotifications NS_AVAILABLE_IOS(8_0); 

Al llamar a este den lugar a application:didRegisterForRemoteNotificationsWithDeviceToken: o application:didFailToRegisterForRemoteNotificationsWithError: a ser llamado el delegado de la aplicación.

Nota: estas devoluciones de llamada se realizarán solo si la aplicación se ha registrado satisfactoriamente para notificaciones de usuario con registerUserNotificationSettings:, o si está habilitada para la actualización de la aplicación en segundo plano.

Cuestiones relacionadas