如何定期获取CoreLocation的didDetermineState触发

时间:2019-10-16 14:12:59

标签: ios core-location

我正在尝试确定用户是否在iOS上的iBeacon附近。为此,我正在使用CoreLocation。

当用户进入该区域时,将触发didEnterRegion,随后触发didDetermineState。当用户离开区域时,didExitRegion被触发(可能会有一些延迟),随后didDetermineState被触发。我什至在CLBeaconRegion中找到了一个标志,该标志在显示器打开时会触发didDetermineState

到目前为止,一切正常。但是,我想偶尔可靠地接到一个didDetermineState的电话。不需要经常这样做,每隔一两个小时就可以了,我不介意间隔不是完全相同,只要保证在几个小时后就能触发。

我知道我可以通过调用didDetermineState来请求requestStateForRegion的调用,但是要做到这一点,应用程序必须正在运行。

我要区分的情况是:

  1. 用户进入该区域并在打开手机的情况下在该区域停留了几个小时/天/周/月/年/年/数十年
  2. 用户进入了该区域,没电了(或禁用了蓝牙),有时可能已经离开或没有离开

如果保证每隔一两个小时进行一次更新,那么在此之后如果没有触发任何更新,我可以肯定2.。

到目前为止,我想到的解决方案是:

  • 每小时发送一次(静默)推送到设备并安装应用 在后台调用requestStateForRegion。但这似乎不是 确保获得背景时间。此外,它的缺点是设备需要有效的Internet连接。
  • 向设备发送(非静音)推送,因为它会打开显示屏并触发更新。但是,始终获得可见的推送很烦人,而且又需要互联网连接。

是否还有其他方法可以不时触发背景/暂停应用的requestStateForRegion

0 个答案:

没有答案