[英]idleTimerDisabled not working since iPhone 3.0
我用過:
[UIApplication sharedApplication].idleTimerDisabled = YES;
在iPhone OS 2.x下開發和運行的許多應用程序中都沒有任何問題。 它們是時鍾應用程序,因此需要不斷運行並忽略iPhone的閑置計時器設置。
但是,嘗試使用運行OS 3.0的新應用程序(並且需要在3.0下部署,因為它使用一些3.0 API)時,我發現空閑的Timer要么被忽略要么不一致。
我的應用程序播放iPod庫中的音樂,當音樂播放時,無論上述設置如何,它都會自動鎖定。 但是一旦你解鎖它,它就不會再次自動鎖定,除非你再次播放音樂,在這種情況下它會在iPhone自動鎖定時間設置后再次鎖定。
我很驚訝沒有其他人遇到這個,因為我想它會影響大量的應用程序。
只是為了澄清:
1.上面的代碼在ApplicationDidFinishLaunching中
2.我知道無論設置如何,從xCode測試時手機都不會自動鎖定
如果有人有任何想法,我會非常感激......
我們的應用程序使用MPMediaPLayer
。 我們在ApplicationFinishedLaunching
也有idleTimerDisabled=YES
代碼,如果不受限制,它的工作時間為EXCEPT,並且已經存在當前正在播放的nowPlayingItem
(如果在應用啟動時暫停,則取消暫停)。 顯然,只需將Settings -> General -> Autolock
設置為某個定時值即可。
通過添加idleTimerDisabled=NO
,在其他一些代碼之后立即跟隨idleTimerDisabled=YES
我們已經知道我們將要播放的音樂似乎可以解決問題。 只是將其設置為YES
是不夠的..后續查詢總是指示正確的值( YES
)..所以看起來Apple代碼忽略值的設置如果有當前的音樂片段並且您的音樂沒有改變代碼..但確實注意到價值的變化。
這一切都在iOS 3.0下 。
即使在2015年,使用iOS 8.2,這個bug仍然存在並且仍然存在。
這是我的解決方案,使用XCode 6.2。
iPhone - 即使idleTimerDisabled為YES,手機也會進入睡眠狀態
基本上,即使是現在,在2015年,安全地確保設備不進入睡眠狀態的唯一方法是重復調用一段代碼以使設備保持喚醒狀態。
-(void)callEveryTwentySeconds
{
// DON'T let the device go to sleep during our sync
[[UIApplication sharedApplication] setIdleTimerDisabled:NO];
[[UIApplication sharedApplication] setIdleTimerDisabled:YES];
}
聽起來像一個bug,Radar文件 - 我並不感到驚訝,因為可能沒有很多應用試圖鎖定屏幕並播放音樂。
有同樣的問題。 插入設備時它確實有效。您可以按頂部的鎖定按鈕,我的NSTimer稍后會觸發並導致振動。 但是,如果沒有插入設備,按下鎖定按鈕會使設備進入睡眠狀態。 任何解決方案將不勝感激。
我為iPhone和iPod touch開發了Seconds - Interval Timer ,我已經沒有遇到麻煩了。 我的應用程序的想法是人們根據許多間隔創建計時器,每個間隔可以擁有自己的播放列表或播放的曲目。
在iOS3中我遇到的問題是我無法通過設置idleTimerDisabled = YES來禁用空閑計時器。 最后我想出了與Neil相同的解決方案,我會定期將其設置為NO,然后立即再次設置為YES。 這似乎有效。
我現在正在將應用程序更新到iOS4(我知道,iOS5即將到來......)現在我遇到了相反的問題。 如果MPMediaPlayer在空閑計時器達到其限制之前更改了軌道,則它將被重置。 我剛剛在我的應用程序中創建了一個55秒的間隔,我的自動鎖定設置為一分鍾。 在50秒時,屏幕在准備鎖定時變暗,但在音樂改變的55秒時,它恢復到全亮度,然后沒有按原樣鎖定。
總的來說,這一點的實施充其量只是好事。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.