Notificación de inserción de iOS: cómo get los datos de notificación cuando hace clic en el ícono de la aplicación en lugar de la notificación

Similar a esta pregunta: ¿Cómo puedo acceder a los datos de notificación de inserción remota en applicationDidBecomeActive?

Pero lo diferente es cómo puedes acceder a los datos de notifications cuando estás en applicationDidBecomeActive y si has hecho clic en el ícono de la aplicación en lugar de la notificación push.

El flujo es: si hace clic en la push notification didReceiveRemoteNotification , se activará la push notification didReceiveRemoteNotification , pero si hace clic en el icono de la aplicación original, solo se activará la applicationDidBecomeActive y la didReceiveRemoteNotification no se llamará.

Estoy buscando el caso posterior, así que ¿cómo puedo acceder a los datos de notifications push.

(Ambos casos suponiendo que la aplicación esté en segundo plano y no haya sido asesinada aún).

No puede get carga de descarga remota al iniciar la aplicación desde la pantalla de inicio.

Si los datos push son importantes para el uso de la aplicación, cárgalo desde tu server después de que se lance la aplicación.

Respuesta @fannheyward es absolutamente correcto. No puede get una carga cuando la aplicación se inicia al tocar el ícono de la aplicación.

Tengo una idea, ¿qué pasa si sabes que hay alguna notificación pendiente cuando la aplicación se inicia al tocar el icono de la aplicación? Con este conocimiento, su aplicación puede get la carga útil de su server.

Puede configurar "Badge" en cada notificación y en applicationDidBecomeActive puede verificar [application applicationIconBadgeNumber]> 0 para saber que alguna notificación está activa. Después de get la carga útil de su server, puede configurarlo a 0 como a continuación.

 [UIApplication shanetworkingApplication] setApplicationIconBadgeNumber:1]; [[UIApplication shanetworkingApplication] setApplicationIconBadgeNumber:0]; 

Tenga en count: Esto significa que su aplicación tendrá una insignia que se mostrará cuando reciba la notificación. No estoy seguro del comportamiento cuando la insignia está deshabilitada por el usuario de la configuration.

Si su objective de aplicación está sobre iOS7, puede hacerlo solo si la aplicación está viva en el backgroud.

En la configuration de capacidades en Xcode, debe habilitar Modos de background> Notificaciones remotas y escribir el código siguiente.

 - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler { // save userInfo in NSUserDefaults completionHandler( UIBackgroundFetchResultNoData ); } 

Si quieres probarlo, será útil usar https://github.com/acoomans/SimulatorRemoteNotifications

  • Desde el lado del server, asegúrese de establecer la propiedad de contenido disponible con un valor de 1

Para que esto funcione, también tuve que revisar el cuadro de búsqueda de background.

Debería get la notificación en el método launchWithOptions en su appDelegate algo así:

 NSDictionary *remoteNotif = [launchOptions objectForKey: UIApplicationLaunchOptionsRemoteNotificationKey]; if(remoteNotif != nil){ //Handle your notification }