iBeacon entry.exit回调当应用程序被刷掉iOS强制杀死

时间:2016-10-20 08:33:03

标签: background location ibeacon

我在很多地方都读过,如果用户刷了一个应用程序,该应用程序将无法接收位置更新。当我的应用程序没有被杀死并且处于后台时,我收到了didEnterRegion和didExitRegion回调。但是,如果我刷杀死应用程序,应用程序不会得到那些回调。我的问题是,

  1. 应用程序是否会停止回调?即使应用程序再次启动并且在后台它没有得到回调
  2. 我一起使用时读到了关于startMonitoringSignificantLocationChanges和后台应用程序刷新的内容,即使应用程序被刷卡杀死,我也可以获得回调。我试过这个并且无法让它运转起来。这是预期的行为吗?
  3. 使用时startMonitoringSignificantLocationChanges和后台应用程序会一起刷新,重新启动设备后会进入区域进入/退出回调吗?

1 个答案:

答案 0 :(得分:0)

这不是预期的行为。即使在任务切换器中杀死了某个应用,您也应该获得didEnterRegiondidExitRegion个回调。如果您没有看到这个,那么您的应用或测试方法可能会出现问题。发布代码可能会有所帮助。

一些警告和提示:

  • 确保您的应用已获得locationManager.requestAlwaysAuthorization()的后台权限。没有它,它根本无法在后台检测到。

  • 处于被杀死状态的检测在iOS 7.0.x上无效。从7.1 +开始工作。

  • 确保等待足够长时间以获取检测结果。在某些应用状态中,最多可能需要15分钟。

  • 在测试中终止您的应用之前,请检查日志确保您知道CoreLocation认为您当前的区域状态。如果您关闭灯塔然后杀死您的应用程序,CoreLocation可能没有时间意识到灯塔消失,认为它仍然在该区域内。如果你打开灯塔,就不会有新的入场事件,因为它认为你已经在里面了。