ios - recuperar - Cómo responder a la notificación de inserción ver si la aplicación ya se está ejecutando en segundo plano
recuperar notificaciones iphone (2)
Tengo algo bastante simple que quiero hacer. Adjunto una pieza personalizada de datos a algunas notificaciones automáticas que manejo en
-(BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
Busco la UIApplicationLaunchOptionsRemoteNotificationKey y listo allí está.
Ese método solo se llama si mi aplicación se lanza por primera vez. ¿Cómo leo la misma clave si mi aplicación se está ejecutando en segundo plano cuando la notificación entra y el usuario presiona el botón "Ver" en la notificación? Quiero enviarlos a un controlador de vista particular con los datos abiertos en él, lo mismo que hago si la aplicación se lanza por primera vez desde la notificación.
Mira la application:didReceiveRemoteNotification:fetchCompletionHandler:
en iOS 7 y posterior.
La application:didReceiveRemoteNotification:
método application:didReceiveRemoteNotification:
se application:didReceiveRemoteNotification:
si su aplicación se ejecuta en primer plano. También se invoca si su aplicación se ejecuta en segundo plano y el usuario interactúa con su notificación automática (lo que hace que su aplicación esté activa).
Entonces, la verdadera pregunta es cómo determinar si la aplicación estaba en primer plano o si el usuario la activó para interactuar con su notificación push.
Parece que esta respuesta a la pregunta didReceiveRemoteNotification cuando en el fondo tiene la clave:
Puede decir si su aplicación acaba de application:didReceiveRemoteNotification:
en primer plano o no en la application:didReceiveRemoteNotification:
utilizando este fragmento de código:
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo
{
if ( application.applicationState == UIApplicationStateActive )
// app was already in the foreground
else
// app was just brought from background to foreground
...
}
Para detectar si la aplicación fue activada por notificación remota, intente esto:
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
NSDictionary *userInfo = [launchOptions objectForKey:UIApplicationLaunchOptionsRemoteNotificationKey];
if (userInfo == NULL)
{
NSLog(@"didFinishLaunchingWithOptions user startup userinfo: %@", userInfo);
}
else
{
NSLog(@"didFinishLaunchingWithOptions notification startup userinfo: %@", userInfo);
}
}