TurtleSoft

iOS 17.6.2 で「スリープしない設定なのに画面が消える」理由

UIApplication.shared.isIdleTimerDisabled = true

これを書いても、
バッテリーが著しく低下していると iOS が“無視”します。

バグじゃありません。仕様です。

iOSは電池が危険水域に入ると👇
・画面ON維持より端末保護を優先
・低電力モード中はIdleTimerが効かない場合あり
・バックグラウンド/CPU制限も強化

特に iOS 17.6系はかなり厳しい。

つまり
❌ コードが間違っている
⭕ OSが強制的に省電力へ寄せている

対策は
・低電力モードを検知してUXを切り替える
・「充電しながら使ってください」と明示
・画面ON前提の設計を捨てる

スリープ防止は“権利”じゃなく“許可制”
これ、知らないと一生ハマります。