我面临的情况是,我们希望根据用户是否启用了位置服务来启动特定流程。这部分是微不足道的。但是,如果用户关闭或打开位置服务,我们希望通过更改我们的流程来扩展此功能。当用户关闭位置服务时,我们目前能够监控,更改或处理。我的问题是,当用户重新启用位置服务时,如何通知我们的应用程序?
以下是我们目前正在使用的内容
以下是我们尝试的内容
提前谢谢!
答案 0 :(得分:1)
经过数小时的研究和实施尝试解决方案,我们发现从iOS 8开始这是不可能的。以下是我们发现的参考:
我们的解决方案:
4和5的组合是我们拯救的恩典。我们遇到了一个边缘情况,用户可能有资格获得位置事件触发器但以前拒绝使用位置服务,然后在符合条件后,用户授予我们使用位置服务的权限。在进行一些重构后,我们移动了我们的位置管理器,以便我们注册位置事件更新,特别是地理围栏,即使我们没有权限。经过测试,我们发现在边缘案例事件中,我们开始接收位置更新,甚至无需重新初始化位置管理器。对于任何感兴趣的人来说,这同样适用于信标区域监控。
答案 1 :(得分:1)
只需在应用进入前台后检查您的位置服务。
NotificationCenter.default.addObserver(self, selector: #selector(applicationDidEnterForeground), name: UIApplication.didEnterForegroundNotification, object: nil)
func applicationDidEnterForeground() {
print("Location services enabled? \(CLLocationManager.locationServicesEnabled())")
}