2011-03-29 194 views
0

我正在開發聚合飼料的應用程序。這些供稿在服務器上(並通過網站更新)。我的應用程序必須經常請求此服務器,以收集新的更新。 對服務器的每個請求都包含用戶想要的提要列表。此外,即使應用程序處於非活動狀態(背景模式),也必須執行這些更新。保持循環HTTP請求異步

在跳入代碼之前,我想知道哪個架構最好。

我計劃有下列之一:

  1. 的NSTimer中的appDelegate didFinishLaunching
  2. 的NSTimer多次觸發它採用ASIHTTPRequest請求服務器
  3. 如果一個新的請求被觸發的情況下而前一個沒有完成,前一個被取消

我有這方面的一些問題:

  • 根據你,這是一個合適的架構?
  • 應用程序在後臺後,難以繼續循環嗎? (我不是很熟悉怎麼做 - 但我正在閱讀IPhone mutlitasking /線程指南)
  • 我應該爲所有目的創建一個專用線程嗎?爲什麼?

卡里姆

回答

0

如果應用程序是背景,則用戶無法使用您的供稿。期。

但是,您可以使用推送通知來推送(相當頻繁且不顯眼的,如果您喜歡的話)重要更改。您可以顯示徽章,通知等。

如果您的用戶再次打開該應用程序,則只需獲取該提要即可。如果您的Feed速度很快(而且應該是),那麼用戶很難注意到。

我沒有看到這裏需要進行持續背景輪詢。一切都可以通過一點點開始輕鬆解決;-)

更新:回答你的問題;您的方法最多隻能運行10分鐘(您可以向系統詢問一些背景時間)。在那10分鐘後,你必須有一個計劃B(在我看來,這應該是你的計劃A)。

+1

好吧!我不知道多餘的時間限制在10分鐘以內。我想我可以在第一個10分鐘之後多加10分鐘,並且一次又一次... 我會挖掘推送方式......聽起來更復雜(代碼說)實現,但更強大。 – iwalktheline 2011-03-29 15:06:00

0

Backgrounding iOS中是非常有限的。您可以在後臺播放音樂,獲取最新的位置信息,並接聽voip電話。你也可以設置本地通知,這樣如果你正在創建一個鬧鐘應用程序,那麼它可以是後臺。

但我不認爲你能夠觸發http請求來不斷更新你的應用使用的數據。不斷更新通過http也可能不明智,因爲它會降低電池電量。

+0

好的,感謝您的電池提示......使用**推送通知**肯定會更好。我會挖掘它 – iwalktheline 2011-03-29 15:09:09