2009-06-29 71 views
14

我用:idleTimerDisabled不工作,因爲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無論測試的設置

時不自動鎖定。如果任何人有任何想法我'd非常感謝...

+0

您在播放音樂時是否正在使用音頻會話?我在想,不知何故,當你開始播放音樂時,idleTimerDisabled屬性可能會以某種方式重置......也許你的解決方法就像在開始音樂播放之後在你的代碼中放置另一個idleTimerDisabled = YES一樣簡單。 – 2009-06-29 18:58:10

+0

謝謝..是的 - 我嘗試過,沿着同樣的思路思考。沒有區別。 乾杯。 – Craig 2009-06-29 20:31:13

+0

「我知道,無論設置如何,xCode測試時手機都不會自動鎖定」 - 謝謝!我沒有意識到這一點,我無法弄清楚爲什麼我的應用程序不允許手機自動鎖定。 – filipe 2011-05-03 00:03:26

回答

16

我們的應用程序使用MPMediaPLayer。我們在ApplicationFinishedLaunching中也有idleTimerDisabled=YES代碼,如果不受限制,它的工作方式是EXCEPT,並且已經有一個當前正在播放的nowPlayingItem(或者在應用程序啓動時暫停)。很明顯,這是所有與Settings -> General -> Autolock設置爲一些定時價值。

通過添加idleTimerDisabled=NO,緊接着idleTimerDisabled=YES在代碼的其他位之後,我們已經計算出我們可以播放什麼音樂似乎可以解決問題。只是將它設置爲YES是不夠的..隨後的查詢總是指出正確的值(YES)..所以它看起來蘋果代碼忽略值的設置如果有一個當前的音樂片段,並且不會被您的代碼..但確實注意到價值的變化。

這是全部根據iOS 3.0

0

聽起來像一個錯誤,文件與雷達 - 我不太感到驚訝,這並沒有被看到太多,因爲可能沒有很多的應用程序試圖鎖定屏幕打開播放音樂。

+0

是的 - 我認爲這可能是一個錯誤 - 我會把它歸檔..謝謝。 – Craig 2009-06-30 12:23:11

0

具有相同的問題。它可以在設備插入時工作。您可以按下頂部的鎖定按鈕,然後我的NSTimer隨後觸發並導致振動。但是,如果在按下鎖定按鈕時沒有插入設備,設備將進入睡眠狀態。任何解決方案將不勝感激。

  • iCodeblog發佈關於idletimer的信息,我說它沒有工作,並且開發'cute clock'的人很好地回覆。你必須做一次黑客,用NSTimer每10秒鐘播放1秒或更長時間的無聲音。即使用戶點擊鎖定按鈕,設備也會保持喚醒狀態。
0

我開發Seconds - Interval Timer for iPhone and iPod touch,我已經無法解決這個問題。我的應用程序的想法是,人們根據多個時間間隔創建計時器,每個時間間隔可以有自己的播放列表或音軌播放。

在iOS3中,我遇到了無法通過設置idleTimerDisabled = YES禁用空閒計時器的問題。最後,我想出了與Neil相同的解決方案,我會週期性地將它設置爲NO,然後立即再次設置爲YES。這似乎工作。

我現在正在更新應用程序到iOS4(我知道,iOS5就在附近......),現在我有相反的問題。如果MPMediaPlayer在空閒計時器到達之前更改軌道,則它會被重置。我剛剛在我的應用程序中創建了一個55秒的時間間隔,我的自動鎖定設置爲一分鐘。在50秒鐘,屏幕變暗,準備鎖定,但在55秒鐘音樂改變後,它恢復到完全亮度,然後沒有鎖定,因爲它應該。

總的來說,這個實現看起來好像是flakey。

3

即使在2015年,使用iOS 8.2,這個錯誤仍然存​​在並且踢腿。

這是我的解決方案,使用XCode 6.2。

iPhone - phone goes to sleep even if idleTimerDisabled is YES

基本上,即使是現在,在2015年,只有這樣,才能安全地確保該設備不會進入睡眠是重複調用的代碼,以保持設備清醒。

-(void)callEveryTwentySeconds 
{ 
    // DON'T let the device go to sleep during our sync 
    [[UIApplication sharedApplication] setIdleTimerDisabled:NO]; 
    [[UIApplication sharedApplication] setIdleTimerDisabled:YES]; 
}