Estoy activando una búsqueda de fondo usando la content-available
bandera en una notificación push. Tengo el fetch
y remote-notification
UIBackgroundModes
habilitado.
Aquí está la implementación que estoy usando en mi AppDelegate.m:
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler
{
NSLog(@"Remote Notification Recieved");
UILocalNotification *notification = [[UILocalNotification alloc] init];
notification.alertBody = @"Looks like i got a notification - fetch thingy";
[application presentLocalNotificationNow:notification];
completionHandler(UIBackgroundFetchResultNewData);
}
Cuando la aplicación se ejecuta en segundo plano, funciona bien. (Se recibe la notificación y la aplicación activó la notificación local "Parece que recibí una notificación", como debería hacer el código anterior).
Sin embargo, cuando la aplicación no se está ejecutando y se recibe una notificación push con el content-available
indicador, la aplicación no se inicia y didRecieveRemoteNotification
nunca se llama al método delegado.
El video WWDC Qué hay de nuevo con la multitarea (# 204 de WWDC 2013) muestra esto:
Dice que la aplicación se "inicia en segundo plano" cuando se recibe una notificación push con la content-available
bandera.
¿Por qué mi aplicación no se inicia en segundo plano?
Entonces la verdadera pregunta es:
¿IOS realizará tareas en segundo plano después de que el usuario haya forzado el cierre de la aplicación?
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions