我有一個應用程序,使用startMonitoringForRegion:
和startMonitoringSignificantLocationChanges
的組合來了解應用程序在後臺時用戶的位置。這是否意味着我需要在Info.plist
中包含UIBackgroundModes
密鑰的location
值?UIBackgroundModes位置和重要的位置更改與區域監測
這是從文檔報價:
的顯著變化位置服務,強烈建議那些不需要高精度的位置數據的應用程序。有了這項服務,只有當用戶的位置發生重大變化時纔會生成位置更新;因此,它非常適合向用戶提供非關鍵的位置相關信息的社交應用或應用。如果應用程序在發生更新時暫停,系統會在後臺將其喚醒以處理更新。如果應用程序啓動此服務,然後終止,系統會在新位置可用時自動重新啓動應用程序。此服務在iOS 4及更高版本中可用,並且僅在包含蜂窩無線電的設備上可用。
...
,提供連續的位置更新給用戶(甚至在後臺運行),可以通過在其Info.plist文件中UIBackgroundModes鍵(與位置值)啓用後臺位置服務的應用程序。將此值包含在UIBackgroundModes鍵中並不妨礙系統暫停應用程序,但它確實告訴系統應在每當有新的位置數據要傳遞時喚醒應用程序。因此,該密鑰有效地讓應用程序在後臺運行,以在發生位置更新時處理它。
我對此的解釋是,如果應用程序需要不斷位置更新,就像衛星導航應用爲UIBackgroundModes
鍵location
值時,才需要。
我也嘗試在設備上運行該應用程序而沒有UIBackgroundModes
鍵的location
值,它會繼續報告重要的位置更改以及何時輸入了退出的區域。
另外,在CLLocationManager Class Reference中提到的UIBackgroundModes
的唯一位置在startUpdatingLocation
討論中,我沒有使用它。
我的意思是我沒有使用'startUpdatingLocation'。非常感謝你的回答! –
啊,我明白了,對不起。 –
@AdamSwinden我在我的應用程序和位置更新的背景模式中使用區域監視,所以如果我必須使用後臺模式,我需要告訴reviewcenter。 –