我可能会混淆区域监控的工作原理,但这是我到目前为止所做的:
我正在通过我的位置管理器注册要监视的区域,该位置管理器是在单例类上实现的,此单例也被设置为位置管理器的委托,因此正在调用实现的方法.
- (void)locationManager:(CLLocationManager *)manager didEnterRegion:(CLRegion *)region
这完全按预期工作,如果应用程序处于活动状态或暂停状态,则调用该方法.它也很有意义,因为该类已经被加载,当该区域进入事件时,iOS会将此甚至发送到我的应用程序,该应用程序调用已注册的位置管理器(可能有一个引用它),然后它调用任何委托也是沿着它注册(因为课程已准备好并加载).
问题是,应用程序被杀后会发生什么?它是第一次进入后台吗? iOS如何知道要调用的委托方法,以及它是否已经加载?
解决方法
当您的应用程序被杀死并开始进行位置更新时,目前还没有位置管理员委托,因此没有向该委托提供通知.系统无法知道哪些类应该用作位置管理器委托或如何实例化它.
相反,您的应用程序:didFinishLaunchingWithOptions:像往常一样被调用,但UIApplicationLaunchOptionsLocationKey在选项字典中设置.这告诉你的应用你需要实例化一个位置管理器并设置它的委托.只有在您执行此操作后,才会使用区域更新调用委托.
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。