web-dev-qa-db-ja.com

iOSアプリはデバイスのスリープモードを防ぎます

IOSアプリの動作が非常に奇妙です。デバイスがスタンバイ状態になるのを防ぎます。 idleTimeDisabledフラグが設定されている場所があるかどうかはすでに検索しましたが、そうではありません。設定アプリ内のアイドルタイマーは2分に設定されており、他のアプリ内で機能します。デバイスはジェイルブレイクされておらず、デバイスを再起動しても役に立ちませんでした。このアプリは他の誰かによって書かれたもので、私は初めてです。ですから、現時点では何を探すべきかわかりません。誰かが考えを持っていますか、なぜこれが当てはまるのか、またはこの動作の理由を私がどのように理解できるのですか?

どうもありがとうございました!

19
Alex

スリープモードである必要がないこの行をViewControllerに入れます

[[UIApplication sharedApplication] setIdleTimerDisabled:YES];

重要:このプロパティは必要な場合にのみ設定し、必要がなくなったら必ずNOにリセットする必要があります。ほとんどのアプリケーションでは、アイドルタイマーが経過したときにシステムが画面をオフにする必要があります。これにはオーディオアプリケーションが含まれます。オーディオセッションサービスを適切に使用すると、画面がオフになっても再生と録音が中断されることなく続行されます。アイドルタイマーを無効にする必要がある唯一のアプリケーションは、散発的なユーザー操作を伴うマッピングアプリケーション、ゲーム、または同様のプログラムです。

13
Mutawe

アプリがAVPlayerまたは他の同様のAVFoundation機能を使用している場合、これが原因である可能性があります。

AVPlayerがビデオを再生している場合、ビデオの再生中にデバイスはスリープ状態になりません。

ビデオがループで再生されている場合、デバイスはスリープ状態になりません。

編集: iOS 12では、これを設定することで可能になりました

player.preventsDisplaySleepDuringVideoPlayback = false
11
ancajic

Xcodeで「テスト」していないことを確認してください。 iPhoneをケーブルで接続している限り、常にオンの状態のままになるためです。

5
Ted Kim