应用程序关闭时的 iOS 定位服务启用/禁用事件

Posted

技术标签:

【中文标题】应用程序关闭时的 iOS 定位服务启用/禁用事件【英文标题】:iOS Location Services Enabled/Disabled event when application closed 【发布时间】:2016-01-10 11:25:21 【问题描述】:

我目前使用CLLocationManager 来始终跟踪地理围栏,即使应用程序处于后台也是如此。我似乎找不到监听位置服务何时启用/禁用的方法。

是否可以在应用程序关闭时侦听位置服务启用/禁用事件或何时为您的特定应用程序启用/禁用位置?

请注意,我使用的是 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*/ ;
    

【问题讨论】:

【参考方案1】:

对类方法[CLLocationManager locationServicesEnabled] 的调用会返回一个BOOL,指示是否启用了定位服务。

如果用户禁用定位服务,locationManager:didChangeAuthorizationStatus: 将在 CLLocationManagerDelegate 上调用。

因此,如果您有一个符合CLLocationManagerDelegate 的类并实现locationManager:didChangeAuthorizationStatus:,您应该能够处理用户的禁用事件。

【讨论】:

是的,但这并不能告诉我位置服务何时更改。 我已经用处理授权状态变化的委托方法更新了我的答案。这有帮助吗? 这似乎并不完美,但它看起来是 ios 所能提供的最好的。谢谢丹尼尔。 没问题,杰瑞德。我很高兴你至少可以从 iOS 中获得一些东西来满足你的需要。

以上是关于应用程序关闭时的 iOS 定位服务启用/禁用事件的主要内容,如果未能解决你的问题,请参考以下文章

iOS - 根据切换值启用/禁用一组通知

iOS:如果之前启用,则禁用远程通知

在启用通话状态栏的情况下打开应用程序时的 iOS 标签栏问题

是否可以在 iOS 应用中启用或禁用 VoiceOver?

在 iOS 设置中更改通知时,Amazon SNS 如何禁用/重新启用设备?

在 iOS 6 中启用自动布局,在 < iOS6 中禁用自动布局