2016-10-04 55 views
0

locationManager.startUpdatingLocation()開啓您的位置更新並locationManager.stopUpdatingLocation()關閉您的更新。Swift 2.3:有沒有辦法找出位置服務,位置更新的狀態?

但我想知道是否有辦法獲得當前狀態。
我試過respondsToSelector但這不是很對,可能顯然總是返回true

我試圖做一個開關,讓用戶打開和關閉位置更新。
獲取交換機的默認值是我的問題。

更新爲了清楚起見:我試圖查看位置更新的狀態而不是服務的狀態。

+0

它在文檔 - CLLocationManagerDelegate – brandonscript

+0

的文檔處理肯定的委託,但是這需要我創造我自己的布爾檢查當前狀態......這可能是最終的解決方案。我覺得奇怪的是,沒有簡單的方法來檢查位置更新是否發生,或者沒有使用委託進行手動檢查。 –

回答

0

您可以撥打locationServicesEnabled(),它會返回bool值並進行切換。

對不起,我誤解你的問題,你可以檢查authorizationStatus()這是

  • ,如果它是.Restricted.Denied那麼你沒有permisssion使用

  • .AuthorizedAlways.AuthorizedWhenInUse枚舉用於重大和前景位置變化。

+0

感謝您的回覆。這不符合我的使用情況的原因是它檢查設備上是否啓用了定位服務。所以當用戶說是允許應用程序使用位置服務時,該函數將始終返回true。 –

+0

是不是你想要的,如果它返回YES,只需調用'stopUpdatingLocation()' – Misha

+0

這是一個開關,應該包含你是否正在更新位置。因此,你已經'stopUpdatingLocation()',所以它返回false。所以開關的默認值是關閉的。我想更好的方法是,我正在尋找位置更新的狀態,而不是服務本身的狀態。 –