2012-09-28 97 views
1

我想在我的應用程序的後臺運行一個進程,獲取用戶當前的緯度/經度(間隔5分鐘),並通過Web服務調用將其報告回我們的服務器。當我添加所需的背景模式,以我的info.plist我有以下選擇:iOS背景限制是否允許http?

-App plays audio

-App registers for location updates

-App provides Voice over IP services

現在在我的情況下,我顯然需要在列表上的第二選擇,但一旦我有了位置,我可以用它做什麼?我可以在後臺打網絡服務嗎?還有什麼其他限制?

非常感謝!

回答

6

當您的應用程序處於後臺模式時,您無法以通常的方式建立HTTP連接。您必須設置後臺任務,將位置更新發送到您的服務器。

我發現了一個短小的tutorial,它涵蓋了你正在尋找的東西(我沒有測試過這個代碼)。

這是它是如何工作
當你的應用程序在後臺運行和發生的位置變化的總結,iOS的喚醒您的應用程序並調用您的CLLocationManager的委託方法locationManager:(CLLocationManager *)manager didUpdateToLocation:(CLLocation *)newLocation fromLocation:(CLLocation *)oldLocation。發生這種情況時,請檢查您的應用程序是否在後臺運行,如果是,則設置後臺任務。後臺任務應該將數據發送到您的服務器。

限制

  • documentation尚不清楚多少時間在這樣的背景任務可能需要完成,但我稍微記得是什麼周圍最多10分鐘。

  • 據我所知,而你的應用程序在 後臺運行

+0

謝謝你不能更新UI! GPS必須無限期地工作嗎?如果是這樣,多少電池會吃掉? – PaulG

+0

你可以選擇只監視重要的位置變化(通常在用戶從一個單元塔切換到另一個單元時發生),這對電池壽命更好,或者你可以使用標準的位置服務,它將保持GPS開啓,會消耗更多的電池。你應該選擇什麼完全取決於你製作的應用類型。如果您構建導航應用程序,則需要儘可能提供最準確的準確度,如果您正在構建「附近的興趣點」,則重大的位置更改應該沒問題。 –