在应用程序未运行时,iOS如何知道哪个位置管理器委托调用区域监控?

前端之家收集整理的这篇文章主要介绍了在应用程序未运行时,iOS如何知道哪个位置管理器委托调用区域监控?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我可能会混淆区域监控的工作原理,但这是我到目前为止所做的:

我正在通过我的位置管理器注册要监视的区域,该位置管理器是在单例类上实现的,此单例也被设置为位置管理器的委托,因此正在调用实现的方法.

- (void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region

这完全按预期工作,如果应用程序处于活动状态或暂停状态,则调用方法.它也很有意义,因为该类已经被加载,当该区域进入事件时,iOS会将此甚至发送到我的应用程序,该应用程序调用注册的位置管理器(可能有一个引用它),然后它调用任何委托也是沿着它注册(因为课程已准备好并加载).

问题是,应用程序被杀后会发生什么?它是第一次进入后台吗? iOS如何知道要调用的委托方法,以及它是否已经加载?

解决方法

当您的应用程序被杀死并开始进行位置更新时,目前还没有位置管理员委托,因此没有向该委托提供通知.系统无法知道哪些类应该用作位置管理器委托或如何实例化它.

相反,您的应用程序:didFinishLaunchingWithOptions:像往常一样被调用,但UIApplicationLaunchOptionsLocationKey在选项字典中设置.这告诉你的应用你需要实例化一个位置管理器并设置它的委托.只有在您执行此操作后,才会使用区域更新调用委托.

原文链接:/iOS/328661.html

猜你在找的iOS相关文章