更改位置服务的通知?

dji*_*i33 6 iphone objective-c ios

我一直在尝试使用CLLocationManager来构建我正在构建的应用程序.我了解如何检查位置服务是否已启用以及用户是否允许我的应用使用其当前位置.

如果用户允许我的应用最初使用他们的位置,然后用户:

  1. 明确地关闭位置服务
  2. 将手机置于飞机模式
  3. 明确取消授权我的应用使用其位置

是否发布了任何通知,我可以订阅并在重新打开我的应用时自动回复?

如果没有,那么处理这种情况的最佳方法(我可以更新显示GPS坐标的视图)是否可以手动将此检查放入我的AppDelegate的applicationDidFinishLaunching和applicationWillEnterForeground方法中?

我认为应该去那里的原因是因为当您重新启动应用时,第一个视图不会触发viewWillAppear,如果该视图需要从显示GPS坐标变为友好消息,要求他们重新启用位置服务, AppDelegates是我能想到的最好的钩子.

谢谢!

小智 17

在iOS 4.2及更高版本中,您将获得一个委托调用

- (void)locationManager:(CLLocationManager *)manager didChangeAuthorizationStatus:(CLAuthorizationStatus)status;
Run Code Online (Sandbox Code Playgroud)


wuf*_*810 2

你的方法是正确的。如果您发现重新打开应用程序时核心位置不可用或网络访问已更改,您可以向那些需要相应更新的视图控制器发送通知。查看 NSNotificationCenter

即使您采用上述内容,我还是建议您每次在 viewDidAppear 中都进行这些检查,因为网络访问可能随时丢失。加上进行任何位置检查的在线测试。