2014-03-06 92 views
0

我知道我問的問題之前已經被問過了,但我找不到完整的答案。當手機進入睡眠狀態時,將UILocalNotification的NSTimer用於定時器應用程序?

我的問題是這樣的:我想創建一個小的定時器應用程序,從20分鐘(用戶首選項)倒數到0,用戶可以看到剩餘多少時間。當定時器用完時,它應該播放三次聲音文件。 我已經創建了一個應用程序,通過使用NSTimer來做到這一點。唯一的問題是,幾分鐘後,iPhone進入睡眠模式,應用程序停止。當我叫醒電話時,倒計時在電話進入睡眠狀態時停止。

我知道這個問題存在一些解決方案。

  1. 因爲如果應用程序需要一個背景音頻資源(與應用程序拒絕蘋果的風險)用無聲的音頻文件和欺詐行爲
  2. 使用UILocalNotification這應該能夠在後臺運行。但據我所知,這種方法只能播放一次聲音文件,所以這樣做不夠。

但除此之外,我應該:

  1. 使用UILocalNotification而不是NSTimer在我的應用程序(所以退出NSTimer完全)?
  2. 從手機進入睡眠模式開始使用UILocalNotification(並且在用戶喚醒手機的情況下切換回NSTimer)?

回答

3

轉到第二個選項。應用程序打開時使用NSTimer。當應用程序將變爲後臺時,使任何計時器無效並在適當的啓動日期安裝UILocalNotification的實例。

當應用程序返回時,請閱讀待處理的本地通知,啓動相關啓動日期的計時器並取消本地通知。

創建一個聲音文件,其中包含正在播放3次的'單個聲音'。

p.s. UILocalNotification不會在後臺運行。本地通知作爲事件在iOS中註冊,並且當火災日期到來時iOS會執行相關操作。

+1

這是正確的答案。需要注意的一點是用戶可以禁用通知的明顯情況,但不太明顯的是,如果用戶在本地通知由於觸發而關閉設備或重新啓動設備時,則不會觸發「回顧」。這可能對您不重要,只是通知您。 – Gruntcakes

+0

好的,謝謝你的答案,將嘗試它並讓你知道結果 – DrMudd

相關問題