假設這是可能的,我希望我的iOS應用程序在後臺輪詢時輪詢服務器(即基本上每30分鐘檢索一次URL的內容並通知用戶它是否包含某些內容「有趣」),基本上與內置郵件客戶端假設您不使用推送通知的方式類似。現在在後臺輪詢服務器的正確方法
,從我讀書至今(我是一個有經驗的程序員,但新到iOS),我認爲有可能是做這兩種可能的途徑:
- 方法1:在applicationDidEnterBackground :,開始執行定期輪詢的後臺任務;方法2:向用戶發送一個UILocalNotification(沒有可見文本)給你自己的應用程序,但它只是在X分鐘時間內喚醒你的應用程序來進行輪詢(然後爲下一個tim等發送另一個通知)。
我在蘋果的文檔Scheduling, Registering, and Handling Notifications看到,他們實際上似乎有一個示例usign方法1(他們的「聊天」示例,清單2-2)。但是這種方法令人驚訝的是,它似乎只是坐在輪詢的連續循環中,沒有中間的睡眠;在我更熟悉的平臺上,這將是不明智的,並會燒燬CPU。
所以我的問題的子部分主要有: - 是方法2可能(或必須一個UILocalNotification總是引起視覺警報給用戶,這不是我想要的),如果是是它的推薦方式做這個? - 如果要做到這一點的方法是方法1,蘋果公司的「聊天」的例子是坐在一個連續的循環中,實際上可以(例如,iOS是否配給CPU,這不是問題),如果不是這樣的話在iOS中告訴後臺進程「睡眠X秒/分鐘」?如果蘋果的連續循環無論出於何種原因都可以,那麼輪詢之間的時間間隔是什麼時候呢?
N.B.我明白,能夠在所有背景下運行本質上都是iOS 4的特性。我不介意我的應用程序是否只能在iOS 4中運行。
謝謝 - 這符合我讀過的內容(不幸)。我想知道爲什麼蘋果在這種情況下展示了一個在後臺輪詢聊天服務器的例子。推送通知的主要問題是我想保留客戶端的客戶機密登錄信息,但聽起來像這是不可能的。有趣的是,iPhone的內置郵件客戶端允許違反這條規則,那麼呢? – 2010-10-27 13:43:37
使用不同的認證/授權機制。像OAuth或什麼的東西。其次,我不確定您指的是哪個示例,但它可能會顯示的主要內容是後臺中的基於位置的服務以及「聊天」客戶端。我不知道。 – jer 2010-10-27 14:24:54