アプリにこのコードがあります-
- (void)applicationDidEnterBackground:(UIApplication *)application
{
...
bgTask = [application beginBackgroundTaskWithExpirationHandler:^{
if (bgTask != UIBackgroundTaskInvalid)
{
[application endBackgroundTask:bgTask];
bgTask = UIBackgroundTaskInvalid;
}
}];
//NO MORE CODE AFTER THAT
}
外部ソースからのいくつかのイベントを処理するために、アプリのバックグラウンドでの実行時間を延長したいだけです。このコードをアプリで使用すると、アプリがログでクラッシュすることがあります -
[app-name]には、許可された時間を超えてアクティブなアサーションがあります
誰でもこれで私を助けることができますか?
クラッシュしても、ユーザーには影響しません。アプリがバックグラウンドにあるため、ユーザーはクラッシュについて知ることはありません。ただアプリストアのレビューで拒否されるのが気になります。緊急の助けが必要です!:(
EDIT: 私のアプリは、非同期TCPソケットを介した外部デバイスへの通信です。上記のコードでは、アプリをバックグラウンドに送信すると、さらに 10 分間データを受信します。アプリをフォアグラウンドに移動してから 10 分後、アプリはまだ閉じていませんが、ソケット接続が切断されたことが示されています。そのため、アプリが 10 分後にフォアグラウンドになるとすぐに、接続の再確立が開始されます。
これは、テスト ケースの約 80% で発生します。残りの 20% は、前述のクラッシュにつながります。