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

问题描述 投票:7回答:1

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

  1. iBeacon是如何唤醒我们的应用程序的?如果应用程序被暂停,它是否会将我们的应用程序置于后台模式以唤醒我们的应用程序
  2. iBeacon将我们的应用程序置于什么背景模式?我们在这种背景模式下可以做些什么?
  3. 这个后台模式可以在它再次暂停之​​前持续多久?当它即将被暂停时,调用了什么函数?
  4. 如果需要,我们如何延长这个背景时间?
  5. 众所周知,iBeacon只会在区域更改(进入/退出)时唤醒我们的应用程序,但如果用户仍在同一区域,我们如何重新启动用户的应用程序?

先感谢您。

ios7 core-bluetooth ibeacon
1个回答
15
投票

一些答案:

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