iOS 設(shè)置APP屏幕常亮

代碼設(shè)置屏幕常亮:

[[UIApplication sharedApplication] setIdleTimerDisabled: YES];

一句代碼搞定!

補(bǔ)充:
APP某個(gè)版本上線后有司機(jī)反饋應(yīng)用升級(jí)后如果不操作APP,屏幕不久就會(huì)息屏。對(duì)于司機(jī)來說在行駛過程中黑屏或者駕駛中操作手機(jī)都是一種危險(xiǎn)行為,而技術(shù)人員也沒辦法通知所有的用戶在設(shè)置-顯示與亮度-自動(dòng)鎖定選擇永不,所以直接在代碼層面解決該問題才是王道(被動(dòng)等待司機(jī)反饋,不如主動(dòng)出擊)。

經(jīng)網(wǎng)上查詢得知在調(diào)用系統(tǒng)拍照結(jié)束時(shí)系統(tǒng)會(huì)將idleTimerDisabled屬性設(shè)置為NO(也有文章介紹在使用AVPlayer播放結(jié)束后該屬性也會(huì)被設(shè)置為NO,然而經(jīng)過在iOS13.3系統(tǒng)的iPhone XS Max上測(cè)試發(fā)現(xiàn)屬性值并未改變)。受此啟發(fā),可能新版本中某功能也會(huì)存在類似設(shè)置。

解決方法:監(jiān)聽idleTimerDisabled屬性,當(dāng)值被設(shè)置為NO時(shí),將idleTimerDisabled屬性值修改為YES。同時(shí)不要忘記在合適的地方移除監(jiān)聽。

代碼如下:

- (void)keepIdleTimerDisabled {
    [[UIApplication sharedApplication] setIdleTimerDisabled: YES];
    [[UIApplication sharedApplication] addObserver:self forKeyPath:@"idleTimerDisabled" options:NSKeyValueObservingOptionNew context:nil];
}
- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context{
    if (![UIApplication sharedApplication].idleTimerDisabled) {
        [UIApplication sharedApplication].idleTimerDisabled = YES;
    }
}

- (void)dealloc{
    [[UIApplication sharedApplication] removeObserver:self forKeyPath:@"idleTimerDisabled"];
    [UIApplication sharedApplication].idleTimerDisabled = NO;
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容