私はiPadのアプリケーションを使用して、idleTimerDisabledを環境設定のスイッチでYESまたはNOに設定できます。その部分は正常に動作します。しかし、最初にアプリデリゲートのdidFinishLaunchingWithOptionsメソッドをYESに設定するのは、アプリが初めて実行された場合(デバイスが自動的にスリープ状態になる)です。iOS:didFinishLaunchingWithOptionsでUIApplication idleTimerDisabledをYESに設定することはできません
私は最初にNOに設定し、次にYESに設定するというハックを試みましたが、他のスレッドでは使用できません。環境設定の他のすべての側面(standardUserDefaults)もうまくいきます。 objectForKeyがnilである場合
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// if app run for the first time, set these as defaults
NSUserDefaults *prefs = [NSUserDefaults standardUserDefaults];
if (![prefs objectForKey:@"autoSleep"]) {
// this conditional code runs, as traced using NSLog
[prefs setBool:YES forKey:@"autoSleep"];
application.idleTimerDisabled = NO;
application.idleTimerDisabled = YES;
}
}
タイマーが実際に動作していませんか? getterメソッドは '-isIdleTimerDisabled'であることに注意してください。 – PengOne
良い質問です。私はそれをチェックしていませんでしたが、[application isIdleTimerDisabled]は1を返します。デバイスはとにかくスリープします。 – Gregir
ロングショットですが、長いフォームを試してみてください: '[application setIdleTimerDisabled:YES]; ' – PengOne