データを同期する iOS アプリを作成しています。アプリがバックグラウンドにあるときにも同期サービスを実行する必要があります。そこで、データをアップロードする場所にこのコードを書きました。
- (void)startAsyncUpload {
UIApplication *thisApplication = [UIApplication sharedApplication];
if([thisApplication respondsToSelector:@selector(beginBackgroundTaskWithExpirationHandler:)]) {
bgTaskIdentifier_ = [thisApplication beginBackgroundTaskWithExpirationHandler:^(void)
{
[thisApplication endBackgroundTask:bgTaskIdentifier_];
bgTaskIdentifier_ = UIBackgroundTaskInvalid;
}];
}
[self multipartUpload];}
正常に動作し、バックグラウンドで実行されます。しかし、ここで問題があります。動画ファイルをアップロードしていて、バックグラウンド時間が切れたときにハンドラーが呼び出され、タスクが終了しました。再びフォアグラウンドに戻ると、アップロードが再開されました。しかし、再びバックグラウンドに戻ったときに、バックグラウンド タスクが再開されません。
基本的に、以前にタスクを終了したため、その理由はわかっています。しかし、バックグラウンド実行のためにタスクを再度登録するなど、タスクを再開する方法はありますか?