content-available
プッシュ通知のフラグを使用して、バックグラウンド フェッチをトリガーしています。と が有効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);
}
アプリがバックグラウンドで実行されている場合、問題なく動作します。(通知が受信され、アプリは上記のコードで行う必要があるように、「通知を受け取ったようです」というローカル通知をトリガーしました)。
ただし、アプリが実行されておらずcontent-available
、フラグ付きのプッシュ通知が受信された場合、アプリは起動されず、didRecieveRemoteNotification
delegate メソッドが呼び出されることはありません。
WWDC Video Whats New With Multitasking (WWDC 2013 の #204) は、次のことを示しています。
content-available
フラグ付きのプッシュ通知を受信すると、アプリケーションは「バックグラウンドで起動」されます。
アプリがバックグラウンドで起動しないのはなぜですか?
したがって、本当の質問は次のとおりです。
ユーザーがアプリを強制終了した後、iOS はバックグラウンド タスクを実行しますか?