iBeacon是如何唤醒我们的应用程序的?多长时间?以及如何延长时间?

Ale*_* Su 7 core-bluetooth ios7 ibeacon

经过对iBeacon的一些研究后,我提出了以下问题,我找不到扩展帮助:

  1. iBeacon是如何唤醒我们的应用程序的?如果应用程序被暂停,它是否会将我们的应用程序置于后台模式以唤醒我们的应用程序

  2. iBeacon将我们的应用程序置于什么背景模式?我们在这种背景模式下可以做些什么?

  3. 这个后台模式可以在它再次暂停之​​前持续多久?当它即将被暂停时,调用了什么函数?

  4. 如果需要,我们如何延长这个背景时间?

  5. 众所周知,iBeacon只会在区域更改(进入/退出)时唤醒我们的应用程序,但如果用户仍在同一区域,我们如何重新启动用户的应用程序?

先感谢您.

dav*_*ung 16

一些答案:

  1. iBeacon可以使用监控API将您的应用程序唤醒到后台.它可以做到这一点,即使您的应用程序自设备重启后尚未启动,或者即使应用程序已从任务切换器中被杀死(虽然后者需要iOS 7.1+)这可以通过您的应用程序调用该startRangingBeaconsInRegion:方法CLLocationManager,并实现的CLLocationManagerDelegate协议的locationManager:didDetermineState:forRegion:, locationManager:didEnterRegion:和/或locationManager:didExitRegion:方法.

  2. 即使您的应用未运行,您的应用也会启动到后台,并在检测到与传递的区域定义匹配的信标时调用上述方法.您可以在此时执行任何不需要用户界面的代码.通常,这包括更新应用程序状态,调用Web服务或发送本地通知以鼓励用户将应用程序带到前台.(不,你不能以编程方式将你的应用程序带到前台.)

  3. 应用程序只能在后台运行大约五到十秒,然后再次暂停.(如果你的应用程序已经在前台,那么它将无限期地继续运行.)如果在这短暂的时间之后它被暂停,那么实现UIApplicationDelegate协议applicationWillResignActive:方法的类就会被调用.

  4. 您可以通过调用类的beginBackgroundTaskWithExpirationHandler:方法来请求额外的后台时间UIApplication.但是不能保证这个额外的时间,你不能无限期地继续这样做.

  5. 一旦您的应用进入某个区域并收到后台通知,您就无法获得第二个通知,即在退出该应用之前唤醒该应用.您可以通过定义多个区域并拥有可能触发更多条目和退出的多个信标来进行游戏.但这些都是变通方法.通常,如果没有其他进入/退出事件,则无法使用此技术重新启动应用程序.

  • 我的理解是,它仅限于前台的应用程序,是的。您可以在 Android 设备的后台通过蓝牙连接执行更多操作。Apple 对 v 后台活动设置了严格限制,以节省电池寿命。这对于保持手机充电很有好处,但会对应用程序功能产生不幸的后果。 (2认同)
  • 对于那些委托方法,您必须调用 startMonitoringBeaconsInRegion: 而不是 startRangingBeaconsInRegion: (2认同)