2015-10-12 58 views
2

我目前使用CLLocationManager來始終跟蹤地理圍欄,即使應用程序在後臺也是如此。當位置服務啓用/禁用時,我似乎無法找到一種方法來偵聽。iOS位置服務應用程序關閉時啓用/禁用事件

是否有可能偵聽位置服務啓用/禁用事件,或者當應用程序關閉時針對特定應用程序啓用/禁用位置?

請注意我正在使用Xamarin,但Objective-C代碼很好。

public class LocationManager 
{ 
    protected CLLocationManager locationManager; 

    public LocationManger() 
    { 
     this.locationManager = new CLLocationManger(); 

     if (UIDevice.CurrentDevice.CheckSystemVersion(8, 0)) 
     { 
      locationManager.RequestAlwaysAuthorization(); 
     } 


     // ... get array of CLCircularRegion and start listening to each 

     // locationManager events... 
     locationManager.RegionEntered += (sender, e) => { /*stuff*/ }; 
     locationManager.RegionLeft += (sender, e) => { /*stuff*/ }; 
     locationManager.DidDetermineState += (sender, e) => { /*stuff*/ }; 
     //locationaManager.SomeSortOfLocationServiceEnableDisableEvent += (sender, e) => { /*stuff*/ }; 
    } 
} 

回答

4

調用的類方法[CLLocationManager locationServicesEnabled]返回一個BOOL指示位置服務是否啓用。

如果用戶禁用位置服務,locationManager:didChangeAuthorizationStatus:將在CLLocationManagerDelegate上調用。

因此,如果您有一個類符合CLLocationManagerDelegate並執行locationManager:didChangeAuthorizationStatus:,您應該能夠處理用戶的禁用事件。

+0

是的,但沒有告訴我何時位置服務發生變化。 –

+0

我用處理授權狀態更改的委託方法更新了我的答案。這有幫助嗎? – Daniel

+0

這似乎並不完美,但看起來它是iOS所能提供的最佳選擇。謝謝丹尼爾。傑瑞德,沒問題, –

相關問題