Я запускаю фоновый выбор, используя флаг 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 выполнять фоновые задачи после того, как пользователь отключит приложение?