私は現在、iOS 7 のサイレント プッシュ通知を利用して、要求に応じてバックグラウンドでアプリを起動するアプリを構築しています。
で行うように、次のような-applicationDidEnterBackground:
バックグラウンド タスクを開始しました。-application:didReceiveRemoteNotification:fetchCompletionHandler:
- (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler
{
self.taskId = [[UIApplication sharedApplication] beginBackgroundTaskWithExpirationHandler:^{
[[UIApplication sharedApplication] endBackgroundTask:self.taskId];
self.taskId = UIBackgroundTaskInvalid;
completionHandler(UIBackgroundFetchResultNewData);
}];
}
アプリはリモート通知の登録に成功し-application:didReceiveRemoteNotification:fetchCompletionHandler:
、通知の到着時に呼び出されますが、アプリは一時停止状態に戻る前にわずか数秒間バックグラウンドにとどまり、予想される実行時間 (で呼び出されたとき-applicationDidEnterBackground:
) よりもはるかに短く、約 3 分と考えられます。
これは予想される動作ですか?または、リモート通知を使用することはできませんか?