2015-02-17 64 views
2

我正在更新一個應用程序,該應用程序使用CLLocationManager監視用戶位置的重大更改。我允許用戶打開或關閉此選項,適當地設置startMonitoringSignificantLocationChanges和stopMonitoringSignificantLocationChanges。如何判斷CLLocationManager是否正在監視重大位置更改

問題是當用戶重新打開應用程序時,我需要知道該應用程序當前是否正在監視重要位置,以便相應地設置此切換的當前狀態。

有什麼我可以檢查CLLocationManager或其他地方,告訴我,如果目前的監測是打開或關閉。

回答

0

在iOS 8中,您可以檢查您從用戶那裏獲得的當前權限。如果用戶授予您Always權限,則表示它們允許重大的位置更改。如果他們只允許WhenInUse,他們不允許重大的位置更改。請參閱this post瞭解有關兩種位置權限的詳細信息。

在iOS 8之前,我不認爲有辦法說明這一點。用戶可以允許您使用他們的位置或不。因此,您需要自行跟蹤位置管理器的當前狀態(即當您呼叫startMonitoringSignificantLocationChanges時,NSUserDefaults中的BOOL更改爲YES,並且當您撥打stopMonitoringSignificantLocationChanges時將其設置爲NO)。

1

因此,部分原因是由於CLLocationManager的這個令人討厭的限制,我最終放棄了使用重要位置更改來支持監視區域。這樣做的好處在於,在電池塔變化時隨機獲取位置而不會耗盡電池的實際位置,但更重要的是,您可以向位置管理員詢問當前正在監視的區域,從而確定它是否打開或關閉。

您可以以與重要位置更改幾乎相同的方式使用它,因爲您可以將區域設置爲當前位置周圍的半徑,然後在didExitRegion回調中獲取正確的GPS信號並使用該位置。

相關問題