iBeacon如何唤醒我们的应用?如果应用程序被暂停,我们会将应用程序置于后台模式,以唤醒我们的应用程序吗?
iBeacon将我们的应用程序置于什么背景模式?我们在这种背景模式下可以做些什么?
此背景模式在再次暂停之前可以持续多长时间?当它即将被暂停时,调用了什么函数?
如果需要,我们如何延长这个背景时间?
众所周知,iBeacon只会在区域更改(进入/退出)时唤醒我们的应用程序,但如果用户仍在同一区域,我们如何重新启动用户的应用程序?
< / LI> 醇>提前谢谢。
答案 0 :(得分:15)
一些答案:
iBeacon可以使用监控API将您的应用程序唤醒到后台。它可以做到这一点,即使您的应用程序自设备重启后尚未启动,或者即使应用程序已从任务切换器中被杀死(虽然后者需要iOS 7.1+)这可以通过您的应用程序调用{{1}}方法在startRangingBeaconsInRegion:
上,还实施了CLLocationManager
协议的CLLocationManagerDelegate
,locationManager:didDetermineState:forRegion:
和/或locationManager:didEnterRegion:
方法。
即使您的应用未运行,您的应用也会启动到后台,并在检测到与传递的区域定义匹配的信标时调用上述方法。您可以在此时执行任何不需要用户界面的代码。通常,这包括更新应用程序状态,调用Web服务或发送本地通知以鼓励用户将应用程序带到前台。 (不,你不能以编程方式将你的应用程序带到前台。)
应用程序只能在后台运行大约五到十秒,然后再次暂停。 (如果你的应用已经在前台,那么它将无限期地继续运行。)如果在这短暂的时间后它被暂停,那么实现locationManager:didExitRegion:
协议UIApplicationDelegate
方法的类就会被调用。
您可以通过调用applicationWillResignActive:
课程的beginBackgroundTaskWithExpirationHandler:
方法申请额外的课时。但是不能保证得到这个额外的时间,你不能无限期地继续这样做。
一旦您的应用进入某个区域并收到后台通知,您就无法获得第二个通知,即在退出该应用之前唤醒该应用。您可以通过定义多个区域并拥有可能触发更多条目和退出的多个信标来进行游戏。但这些都是变通方法。一般情况下,如果没有其他进入/退出事件,您无法使用此技术重新启动应用程序。