満了ハンドラが呼び出されると、私たちのアプリケーションをログアウトします。これはいくつかの時間で動作しますが、endBackgroundTaskを呼び出してバックグラウンドタスクを終了しても、プロセスを強制終了させることがあるようです。私たちのログアウトプロセスは、このケースでは時間がかかり過ぎて、iOSだけがそれを殺すように思えるようです。これは長い作業ではありませんが、余分な時間を要求する方法はありますか?iOSがアプリを終了する前に、有効期限ハンドラでタスクを正常に終了するにはどうすればよいですか?
if ([app respondsToSelector:@selector(beginBackgroundTaskWithExpirationHandler:)]) {
bgTask = [app beginBackgroundTaskWithExpirationHandler:^{
// Synchronize the cleanup call on the main thread in case
// the task actually finishes at around the same time.
dispatch_async(dispatch_get_main_queue(), ^{
if (bgTask != UIBackgroundTaskInvalid) {
backgroundKilled = true;
[self logoutAll];
[app endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
}
});
}];
}
これは本当に素晴らしい図です。 – tjg184