2012-05-21 103 views

回答

2

是的,它可以。當您的應用暫停時,您有兩種處理位置服務事件的選項,可以從文章Getting the User’s Current Location中閱讀。 如前所述:

有,你可以用它來獲取用戶當前位置的兩種不同的服務:

  • 的標準位置服務是一個可配置的,通用的解決方案,在所有版本的支持iOS版。
  • 重大變化的位置服務爲具有蜂窩無線電的設備提供低功率定位服務。此服務僅在iOS 4.0及更高版本中可用,並且還可以喚醒已暫停或未運行的應用程序。

而且,在本文中的部分「獲得的背景位置活動」底部指出:

  • 如果應用程序需要提供的應用程序是否在位置更新前景或背景,這樣做有多種選擇。首選方法是使用重要位置更改服務在適當時間喚醒您的應用程序以處理新事件。但是,如果您的應用程序需要使用標準位置服務,則可以將您的應用程序聲明爲需要後臺位置服務。
  • 只有當缺少這些服務會損害其運營能力時,應用程序纔會請求後臺定位服務。此外,任何請求後臺定位服務的應用程序都應該使用這些服務爲用戶提供切實的好處。例如,由轉向導航應用程序可能成爲後臺定位服務的候選對象,因爲它需要跟蹤用戶的位置並在下一次輪換時報告。
9

是的,如果CLLocationManager是第一個叫startUpdatingLocation方法,並在AppName-Info.plist文件添加Required Background Modes -> App registers for location updates

+0

默認情況下CLLocationManager不運行,而應用程序是無效的?這是真的嗎? – Bojan

+1

沒有,應用程序應註冊爲背景模式,位置更新,該CLLocationManager應開始無論是位置更新或顯著位置更新,當你在後臺輸入CLLocationManager繼續更新位置... – graver

+1

那麼如何desable CLLocationManager而該應用程序處於後臺模式? – Bojan

1

要禁用CLLocationManager而應用程序是在底色模式,你根本不能添加 「應用寄存器對於位置更新「 在 」所需的背景模式「 info.plist文件的關鍵字。

我建議儘可能使用顯著改變的位置服務,而不是標準定位服務,以保持設備的電池。

2

沒有與此有些微妙重要(如iOS版7.1):如果你只是尋找顯著變化和區域進入/退出事件

  • 位置更新後臺模式不應該被使用。即使未設置背景標誌,您仍將收到這些事件,並且您將同時節省大量電池。
  • 如果你這樣做,你需要注意有限的背景時間。如果你不小心收拾網絡請求等。在允許的時間內,您將網絡交易失敗。
  • ,如果你需要使用詳細的位置跟蹤(例如-startUpdatingLocation),在這種情況下,這樣的背景模式將讓您的應用程序清醒時,才應使用位置背景模式。
  • 使用時沒有得到具體位置會惹惱你的用戶,並在審查過程中可能會拒絕你的應用程序(取決於你如何在你的應用程序中使用的位置)位置的背景模式。
  • 如果您沒有設置後臺位置模式,您的應用可能隨時被操作系統殺死,因此您需要確保在applicationDidFinishLaunching或applicationWillFinishLaunching中正確重新初始化您的CLLocationManager實例,以便獲取後續updateLocation或didEnter/ExitRegion委託調用。只是因爲位置喚醒你的應用程序與位置更新,它不會奇蹟般地沒有你編程它重新創建CLLocationManager!

希望有幫助!

+0

#5是非常重要的 - 給系統的方式來重新創建任何對象實現了'CLLocationManagerDelegate'否則你不會得到回調,即使在系統重新啓動應用程序 – bcattle

相關問題