Я запускаю фоновую загрузку, используя content-available
флаг в push-уведомлении. У меня есть fetch
и remote-notification
UIBackgroundModes
включен.
Вот реализация, которую я использую в своем 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);
}
Когда приложение работает в фоновом режиме, оно работает нормально. (Уведомление получено, и приложение запустило локальное уведомление «похоже, я получил уведомление», как и приведенный выше код).
Однако, когда приложение не запущено и получено push-уведомление с content-available
флагом, приложение не запускается и didRecieveRemoteNotification
метод делегата никогда не вызывается.
Видео WWDC Что нового с многозадачностью (# 204 от WWDC 2013) показывает это:
В нем говорится, что приложение «запускается в фоновом режиме» при получении push-уведомления с content-available
флагом.
Почему мое приложение не запускается в фоновом режиме?
Итак, настоящий вопрос:
Будет ли iOS выполнять фоновые задачи после принудительного выхода из приложения?
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions