后台 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 检测时间(家庭自动化用例)的主要内容,如果未能解决你的问题,请参考以下文章