2017-04-17 128 views
0

我有用Swift編寫的工作音樂應用程序。 我想整合一種睡眠模式,可以暫停10分鐘後播放的音樂。 我爲此任務使用perform(_ aSelector: Selector, with anArgument: Any?, afterDelay delay: TimeInterval),它工作正常。如何防止應用程序進入睡眠狀態,以便爲音樂集成睡眠模式

但是有一個問題。在10分鐘結束之前iPhone很可能會進入睡眠狀態,因此暫停功能不會被調用,並且音樂會繼續播放。

據我所知,還有其他方式可以在10分鐘後發送動作(NSTimer,使用GCD),但如果我明白,這些解決方案都不會阻止機器進入睡眠狀態,或者喚醒應用程序以執行任務。

也許我可以用background mode,但:

  1. 我的目標是不是真的在這種模式下是應該解決的問題。我不想有一些時間完成,我只是想在特定時間使用第二個處理器的1/10。
  2. 此選項不能保證在10分鐘內工作。

這是一種實現我所需要的方式嗎?

+1

您可以防止設備進入使用'UIApplication的睡覺。 shared.isIdleTimerDisabled = true',但是這可能會把嬰兒扔出洗澡水。 – Erik

回答

2

你可以這樣做:UIApplication.shared.isIdleTimerDisabled = true,因爲這是斯威夫特3的唯一途徑,你可以在Objective-C做UIApplication.sharedApplication().idleTimerDisabled = true斯威夫特2或[UIApplication sharedApplication].idleTimerDisabled = YES;

+1

這是工作,但我有兩個問題:首先這將保持顯示,並不是強制性的,我的目的。但更重要的是:蘋果是否會通過此設置驗證應用程序? (即使我在應用程序暫停聲音後立即將其禁用)其他方式意味着只有Apple允許特定類型的應用程序獲得相同類型的結果。 – FredericP

+0

如果那不是你需要的,那麼我很抱歉;否則我不知道。是的,蘋果會允許它:我已經看過大量的應用程序與此功能 - 對不起,我真的沒有那麼有用。 – 2017-04-19 16:43:54

相關問題