2012-06-11 12 views
26

Hay muchas preguntas sobre didRegisterForRemoteNotificationsWithDeviceToken, pero todas dejan de lado una pregunta muy directa a la que no puedo encontrar una respuesta exacta.¿Cuándo se llama a didRegisterForRemoteNotificationsWithDeviceToken?

Para una aplicación que está configurada correctamente para las notificaciones de cualquier otra manera y tiene conectividad de red adecuada: ¿cuándo se llama a didRegisterForRemoteNotificationsWithDeviceToken? Algunas opciones posibles podrían ser:

  1. Cada vez que se inicia la aplicación
  2. Sólo después de que el símbolo inicial al usuario que acepte las notificaciones push
  3. Algo más?

Respuesta

24

El delegado aplicación llamará al método tras el registro exitoso de la notificación a distancia después de llamar a este método en su UIApplication:

(void)registerForRemoteNotificationTypes:(UIRemoteNotificationType)types

De acuerdo con: http://developer.apple.com/library/ios/#DOCUMENTATION/UIKit/Reference/UIApplication_Class/Reference/Reference.html

When you send this message, the device initiates the registration process with Apple Push Service. If it succeeds, the application delegate receives a device token in the application:didRegisterForRemoteNotificationsWithDeviceToken: method; if registration doesn’t succeed, the delegate is informed via the application:didFailToRegisterForRemoteNotificationsWithError: method. If the application delegate receives a device token, it should connect with its provider and pass it the token.

Ahora, para dar más detalles, normalmente una aplicación llamará al registerForRemoteNotificationTypes en su didFinishLaunchingWithOptions: (NSDictionary *) launchOptions en su delegado de la aplicación. Y por lo tanto, la aplicación : didRegisterForRemoteNotificationsWithDeviceToken se suele llamar momentos después del lanzamiento de la aplicación.

Edit: La aplicación: didRegisterForRemoteNotificationsWithDeviceToken todavía se invoca para el registro subsiguiente después de la primera.

+1

Hemos encontrado lo que parece ser un error de iOS (a partir del v. 6), en el que el sistema operativo le indicará que el usuario se negó todas las notificaciones incluso cuando eso no es cierto. Esto ocurre solo en el primer lanzamiento: si llama a [[UIApplication sharedApplication] enabledRemoteNotificationTypes] en didRegisterForRemote ..., dice que están apagados. No lo son, y si envía una notificación automática, la aplicación la obtendrá.Y los lanzamientos posteriores devolverán el resultado correcto; el problema es que la mayoría de las aplicaciones se ejecutan en segundo plano, por lo que no sabe cuándo o si ocurre el segundo lanzamiento. – Oscar

+2

¿Estás seguro de que se llama a didRegisterForRemoteNotifications incluso si ya te has registrado? Estoy tratando de implementar la notificación de inserción en mi aplicación, y registerForRemoteNotifications funcionó maravillosamente la primera vez, pero ahora ni las devoluciones de llamada de éxito o fracaso se están ejecutando en intentos posteriores. – Bryan

+0

@Bryan: ¿cómo lo arreglas? – jAckOdE

8

Cuando la aplicación se ejecuta por primera vez le preguntará al usuario si permitirá notificaciones remotas. Si dicen que sí, se activará didRegisterForRemoteNotificationsWithDeviceToken en ese momento y cada vez que se active esta función cuando la aplicación se abra por primera vez. Si dicen que no, no se activará a menos que ingresen a la configuración y permitan las notificaciones en la aplicación.

0

Puede haber muchas razones, comprobar algunas de las razones

  • Si ejecuta la aplicación en el simulador, el aplicación: didFailToRegisterForRemoteNotificationsWithError: Método se llama como notificaciones push no se admiten en el simulador .

  • Compruebe su conexión a internet si no la conecta.

Para más información consultar Link

Cuestiones relacionadas