ver recuperar pantalla notificaciones historial funciona como centro borradas bloqueada aparece ios objective-c notifications uilocalnotification localnotification

ios - pantalla - recuperar notificaciones iphone



Manejo de notificaciones locales cuando el usuario presiona el ícono en lugar de la alerta (3)

Aquí está la situación que quiero manejar citada de la documentación de Apple.

Como resultado de la notificación presentada, el usuario toca el botón de acción de la alerta o toca (o hace clic) el ícono de la aplicación. Si se toca el botón de acción (en un dispositivo que ejecuta iOS), el sistema inicia la aplicación y la aplicación llama a la aplicación de su delegado: didFinishLaunchingWithOptions: method (si está implementado); pasa en la carga útil de notificación (para notificaciones remotas) o el objeto de notificación local (para notificaciones locales).

Si se toca el icono de la aplicación en un dispositivo con iOS, la aplicación llama al mismo método, pero no proporciona información sobre la notificación. Si se hace clic en el ícono de la aplicación en una computadora que ejecuta OS X, la aplicación llama al método applicationDidFinishLaunching: del delegado en el que el delegado puede obtener la carga útil de notificación remota.

¿Cómo manejo esta situación si no hay información sobre la notificación?


Si te entiendo correctamente, parece que tienes una UILocalNotification que se ha activado, pero aún debes manejarla si el usuario toca el ícono de la aplicación en lugar de la notificación. ¿Correcto?

Si este es el caso, entonces, que yo sepa, no podrá manejar la notificación del delegado de la aplicación, ya que la aplicación no se iniciará o se sacará de segundo por la notificación, sino por la interacción del usuario.

Sin embargo, si está configurando un badgeNumber en la aplicación con la notificación, podría intentar algo como esto:

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { if (launchOptions[UIApplicationLaunchOptionsLocalNotificationKey]) { UILocalNotification *notification = launchOptions[UIApplicationLaunchOptionsLocalNotificationKey]; } else if ([UIApplication sharedApplication].applicationIconBadgeNumber > 0) { // Assume that user launched the app from the icon with a notification present. }}

También es posible que deba comprobar badgeNumber en - (void)applicationDidBecomeActive:(UIApplication *)application también.


Tal como lo indica la documentación, si toca el ícono en iOS (y no la alerta / pancarta de notificación), se llama al mismo método pero no recibe información de notificación. No hay forma de manejar una notificación local simplemente tocando el ícono de la aplicación.


Mejorar a @Aron Crittendon respuesta:

Considere también manejar eso en applicationDidBecomeActive:

-(void)applicationDidBecomeActive:(UIApplication *)application { if ([UIApplication sharedApplication].applicationIconBadgeNumber > 0) { //application is in background, fired notification and user tapped app icon with badge } }