我的問題是:CLLocationManager是否繼續運行,而我的應用程序處於非活動狀態?當應用程序處於後臺狀態時,CLLocationManager
6
A
回答
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
1
要禁用CLLocationManager而應用程序是在底色模式,你根本不能添加 「應用寄存器對於位置更新「 在 」所需的背景模式「 info.plist文件的關鍵字。
我建議儘可能使用顯著改變的位置服務,而不是標準定位服務,以保持設備的電池。
2
沒有與此有些微妙重要(如iOS版7.1):如果你只是尋找顯著變化和區域進入/退出事件
- 位置更新後臺模式不應該被使用。即使未設置背景標誌,您仍將收到這些事件,並且您將同時節省大量電池。
- 如果你這樣做,你需要注意有限的背景時間。如果你不小心收拾網絡請求等。在允許的時間內,您將網絡交易失敗。
- ,如果你需要使用詳細的位置跟蹤(例如-startUpdatingLocation),在這種情況下,這樣的背景模式將讓您的應用程序清醒時,才應使用位置背景模式。
- 使用時沒有得到具體位置會惹惱你的用戶,並在審查過程中可能會拒絕你的應用程序(取決於你如何在你的應用程序中使用的位置)位置的背景模式。
- 如果您沒有設置後臺位置模式,您的應用可能隨時被操作系統殺死,因此您需要確保在applicationDidFinishLaunching或applicationWillFinishLaunching中正確重新初始化您的CLLocationManager實例,以便獲取後續updateLocation或didEnter/ExitRegion委託調用。只是因爲位置喚醒你的應用程序與位置更新,它不會奇蹟般地沒有你編程它重新創建CLLocationManager!
希望有幫助!
+0
#5是非常重要的 - 給系統的方式來重新創建任何對象實現了'CLLocationManagerDelegate'否則你不會得到回調,即使在系統重新啓動應用程序 – bcattle
相關問題
- 1. 當應用程序處於後臺狀態時,AVPlayer處理緩衝區
- 2. 當應用程序處於後臺狀態時獲取本地通知?
- 3. 當應用程序處於後臺狀態時,NSTimer,NSUrlConnection,NSThread行爲
- 4. 當應用程序處於後臺
- 5. 當應用程序處於後臺時處理本地通知
- 6. iOS - 在應用程序處於掛起狀態時運行後臺進程
- 7. Android:在應用程序處於後臺時更改狀態欄的顏色
- 8. CLLocation在應用程序處於後臺/掛起狀態時持續更新
- 9. 當應用程序未處於活動狀態時,FileSystemWatcher失敗
- 10. 當應用程序處於後臺時更改設備語言
- 11. 當應用程序處於後臺時收聽
- 12. 當應用程序處於後臺時活動不會啓動
- 13. 當應用程序處於後臺時進行排隊呼叫
- 14. 當應用程序處於後臺時終止所有活動
- 15. 解鎖後iPhone應用程序必須在後臺處於活動狀態
- 16. 如何在應用程序處於非活動狀態時在後臺啓動應用程序
- 17. CLLocationManager didDetermineState方法不在應用程序在後臺時調用
- 18. CLLocationManager有時停止更新,而應用程序在後臺
- 19. 當iOS應用程序進入後臺狀態時啓動線程
- 20. 在後臺運行應用程序還是處於活動狀態?
- 21. 當應用程序處於後臺狀態時,Google FCM getIntent不返回預期數據
- 22. 當應用程序處於後臺或關閉狀態時,無法將記錄插入SQLite數據庫中
- 23. 當android中的應用程序未處於活動狀態時運行後臺服務
- 24. 當應用程序在後臺或手機處於鎖定狀態時,iOS BLE外圍設備掃描
- 25. 當應用程序處於後臺狀態時,不會觸發燈塔代理方法
- 26. 當應用程序處於後臺或處於終止(被殺)狀態時,在iOS應用程序中執行任務
- 27. 當處理LocalNotification時,應用程序處於後臺或正在運行
- 28. 當應用程序在後臺時NSURLConnection
- 29. 當ASP.NET應用程序處於不活動狀態時,ASP.NET Worker進程死亡
- 30. GPS在應用程序進入後臺狀態時不停止
默認情況下CLLocationManager不運行,而應用程序是無效的?這是真的嗎? – Bojan
沒有,應用程序應註冊爲背景模式,位置更新,該CLLocationManager應開始無論是位置更新或顯著位置更新,當你在後臺輸入CLLocationManager繼續更新位置... – graver
那麼如何desable CLLocationManager而該應用程序處於後臺模式? – Bojan