0

ユーザーが一定時間後にアプリが一時停止することを選択できるスリープタイマーを備えたアプリがあります。基本的に私がしていることは次のとおりです。

  1. アプリの開始時に次のコードを使用して、アプリ タイマーを無効にします。

    [[UIApplication sharedApplication] setIdleTimerDisabled: はい];

  2. スリープ タイマーが切れると、次のようになります。

    [[UIApplication sharedApplication] setIdleTimerDisabled: NO];

ユーザー設定の自動ロック値が上がると、画面が暗くなり、アプリがスリープ状態になります。

正常に動作していましたが、何らかの理由で動作しなくなりました。私はトラブルシューティングを行っており、setIdleTimerDisabled を含むコマンドをコメントアウトしましたが、スリープ状態にはなりません。

([UIApplication sharedApplication].isIdleTimerDisabled) で idleTimer の状態をテストすると、IdleTimer が実際には無効になっていないことがわかります。

デバイスのスリープを妨げている可能性があるものは他にあるでしょうか? アプリが操作なしで終了したとき。便利な場合に備えて、私のデバイスは 9.3.3 を実行しています。

4

1 に答える 1

0

答えを見つけたと思います。実際には 2 つの問題がありました。1. Xcode を実行してビルドしている限り、アプリがスリープ状態になることはありません (と思います)。2.私のアプリにはサウンドがあるので、デバイスがロックされているときでもコントロールとオーディオが確実に機能するように、次のようなことをしています:

audioSession = [AVAudioSession sharedInstance];
    NSError *setCategoryError = nil;
        [audioSession setCategory:AVAudioSessionCategoryPlayback error:&setCategoryError];

ただし、これによりデバイスはスリープ状態になりません。サウンドは再生され続けます。そこで私が今やっていることは、画面がロックされたら、audioSession のカテゴリを次のように変更することです。

[audioSession setCategory:AVAudioSessionCategoryAmbient error:&setCategoryError];

しかし、それは私がまだ理解していない別の問題を引き起こします...</p>

于 2016-10-14T22:16:41.257 に答える