難しい質問があります。私のアプリでは、ユーザーはアプリをバックグラウンドで実行するかどうかを変更できます。はいの場合 - ユーザーがそれを殺すまで動作するはずです。そうでない場合は、ユーザーがホームボタンを押すまで機能し、トップボタンで画面をロックした後に機能する必要があります。
そのため、「アプリケーションはバックグラウンドで実行されません」という plist ファイルの行があります。「はい」にすると、ホームボタンが押されるまでアプリが実行され、画面をロックした後も動作します。完全。「いいえ」にすると、アプリを殺すまで常に実行されます。完全。
しかし、アプリから plist の値を変更することはできないと思います。さて、私はapplicationDidEnterBackgroundでそれを行う方法を見つけました:
if (userDontWantItRunInBackground) { exit(0); }
しかし、これには問題があります (ただし、Apple は推奨していません)。
if "application does not run in background" = YES:
applicationDidEnterBackground is NOT CALLED on locking the screen
if "application does not run in background" = NO:
applicationDidEnterBackground is CALLED on locking the screen
意味がない!これにより、ロックされた画面でアプリを実行できなくなります。