应用程序关闭时的 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 标签栏问题