后台 iBeacon 检测时间(家庭自动化用例)

Posted

技术标签:

【中文标题】后台 iBeacon 检测时间(家庭自动化用例)【英文标题】:iBeacon detection time in background (Home automation use case) 【发布时间】:2014-08-25 23:24:58 【问题描述】:

我知道这个问题已经被问过很多次了,但我还没有看到完整的答案。我只是得到了很多相互矛盾的信息。

我正在尝试将 iBeacon 用于家庭自动化用例。例如,如果我走进一个带有 iBeacon 的房间,我会打开那个房间的灯。正如你可以想象的那样,我需要这个非常迅速(在走进房间的几秒钟内)。当我将我的应用程序放在前台时,这很好用 - 进入和退出该区域的时间都是提示。但是,如果应用程序在后台,则更加不可靠。如果我调用 [self.locationManager startUpdatingLocation] 并且从不停止更新位置,则 iBeacon 检测的工作方式与应用程序处于前台时相同。但是,我认为这不是预期的用例,因为这可能会在一段时间后耗尽您的电池。我的问题是:

    在后台和前台监控 iBeacon(仅获取进入/退出回调)的预期时间是多少? 有没有一种方法可以让 iBeacons 在后台像前台一样快速工作,而无需调用 [self.locationManager startUpdatingLocation]?一旦位置箭头从活动位置监控变为带有地理围栏轮廓的箭头,我立即停止接收 iBeacon 通知。

【问题讨论】:

在处理信标时,您不必对 startUpdatingLocations 做任何事情。如果我是你,我会在信标本身上配置信标范围,以便区域的半径是房间的大小,当你监视信标区域时,你将在后台收到 didEnterRegion 回调,并且能够基本上立即触发你想要的。 这就是我所做的,但没有立即收到回调。据戴夫说,不幸的是,这可能是意料之中的。 我确信每个信标/设备都是不同的,但根据我的经验,它会在一两秒内发生。只需我的 2 美分,您的里程可能会有所不同。 有趣。你能发布一个代码示例吗? CLBeaconRegion *beaconRegion = [[CLBeaconRegion alloc] @"beacon's UUID" @"some identifier"]; [_locationManager startMonitoringForRegion:beaconRegion]; 【参考方案1】:

不幸的是,您不能指望 ios 后台的快速检测时间。时间取决于设备和设备状态,检测最多可能需要 15 分钟。在某些情况下,您可能会获得更快的检测,但您根本无法指望它。

见:

http://developer.radiusnetworks.com/2014/03/12/ios7-1-background-detection-times.html

还有:

http://developer.radiusnetworks.com/2013/11/13/ibeacon-monitoring-in-the-background-and-foreground.html

对不起,我知道这不是你想听到的答案。不幸的是,这个用例只能与 iOS 上的前台应用程序一起使用。

【讨论】:

我还没有做过这样的测试。如果您查看我上面回答中的第一个链接,GitHub 上有一个项目和说明,如果您想在 iOS8 上重现我的测试,您可以使用这些说明。如果您愿意,请发布您的结果!

以上是关于后台 iBeacon 检测时间(家庭自动化用例)的主要内容,如果未能解决你的问题,请参考以下文章

快速,在后台检测 ibeacons 并在范围内发送通知

后台特定 iBeacon 检测

iPhone 休眠时无法检测到 Beacon 设备。(进入后台)

检测到 iBeacon 时启动应用程序

iBeacons 在 iOS 中以后台模式扫描?

在 Android 8 之前的应用程序重新启动后,AltBeacon 未检测到 iBeacon