Je suis le déclenchement d'un fetch en arrière-plan à l'aide de la content-available
drapeau sur une notification push. J'ai l' fetch
et remote-notification
UIBackgroundModes
activé.
Ici est l'application que j'utilisais pour ma 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);
}
Lorsque l'application est en cours d'exécution en arrière-plan, il fonctionne très bien. (La réception de la notification et de l'app a déclenché le "on dirait que j'ai reçu une notification de" notification locale, comme le code ci-dessus devrait faire).
Toutefois, lorsque l'application n'est pas en cours d'exécution et une notification push est reçu avec l' content-available
drapeau, l'application n'est pas lancée et l' didRecieveRemoteNotification
délégué de la méthode n'est jamais appelée.
La WWDC Vidéo Quoi de Nouveau Avec le Multitâche (#204 de la WWDC 2013) montre ceci:
Il est dit que l'application est "lancé en arrière-plan" lorsqu'une notification push est reçu avec l' content-available
drapeau.
Pourquoi mon application ne s'exécute pas en arrière-plan?
La vraie question est donc:
Va iOS effectuer des tâches en arrière-plan une fois que l'utilisateur a force de quitter l'application?