2011-06-16 23 views
0

我想設置一個方法被調用的日期,即使我的應用程序在後臺運行。那可能嗎 ?(在後臺的應用程序)在某個日期激發一個動作

我試過NSTimer,我可以用它設定一個射擊NSDate。然而,如果應用程序不在前臺,這不起作用。

經過一番研究,我看到蘋果不允許NSTimers在後臺運行,所以我想我必須找到解決方法。我實際上並不希望我的方法被一次又一次地調用一段時間。我只想讓它在我選擇的日期被調用一次。 (有關信息,我想調用的方法不需要任何GUI(它只是啓動iPod))。

你知道有什麼辦法嗎? (如果需要,我可以在越獄iPhone上運行我的應用程序)。

回答

0

UILocalNotification是你的朋友!但它在iOS 4.0+中可用。

+0

嗯......謝謝,我之前看到過,但我認爲它只能顯示一條消息(以及其他一些東西,比如將徽章添加到應用的圖標),但我不明白它也能在我的應用程序中提供任何方法。儘管我會對'UILocalNotification'進行調查...... – Daladim 2011-06-16 20:10:08

+0

@Daladim,您是對的,您必須讓用戶從執行方法的通知中打開應用程序,但如果沒有用戶交互,則無法執行此操作。 (至少在非越獄設備上這是真的)。如果時間很短,大約10分鐘,我忘記了確切的限制,但如果不是一個小時,它肯定會少於一天,那麼您可以使用任務完成API。 – 2011-06-16 21:54:23

0

如果您的應用程序實際上是在後臺運行NSTimer應該可以正常工作。

如果您不需要應用商店的批准,只需聲明您正在做背景音頻(請參閱UIBackgroundModes)並播放無聲音頻文件以保持您的應用程序活着。

請注意,有些事情,比如調用OpenGL函數,會讓你立即在後臺死亡,但是,大多數API工作得很好。

+0

謝謝。我會嘗試一下,聽起來不錯。 (我實際上已經看到了解決方法,但是我認爲可能有一種更簡單的方法,因爲我不需要定時器定期開火,只需要一次就足夠了)但是它不會耗盡我的電池太多嗎?我想用我的應用程序作爲一種鬧鐘。它應該在夜晚背景中「睡眠」(或者在播放靜音時運行),直到它在早晨執行一種方法。 – Daladim 2011-06-17 11:55:36

相關問題