0

我目前正在研究一个应用程序,我希望我的应用程序能够在后台模式下检测到信标时(即时)。根据我读过的文章,不能用didEnterRegion完成,我应该在后台模式下运行时使用范围(位置更新)。有什么解决方案可以直接减少didEnterRegion阈值吗?或者我应该使用其他方法吗?如果是这种情况,它是否像didEnterRegion一样工作,但RSSI范围有限?当我的手机进入该区域并锁定并且屏幕关闭时,它是否工作?降低didEnterRegion的门槛

回答

2

监控API无法控制检测回调的距离。第一次在无线电广播范围内,通常在40米左右的时间里,你总会得到一个回叫。

有两种方式只能在近距离上的信标来触发:

  1. 配置您的信标低无线电发射功率,如果制造商支持它。

  2. 将Ranging API与监控结合起来,并且尽可能在后台运行(在没有特殊后台许可的情况下,iOS上的最大时间为180秒),然后在测距回调表示CLBeacon准确性字段为即时时触发您的逻辑。

选项1比较简单,但不太可靠,因为它往往会触发更远的距离,而且有时甚至在非常接近的范围内都会触发。

只要背景测距时间没有用完,选项2更可靠。如果手机的收音机在40米处触发以开始测距,如果用户超过180秒直接接近,则测距时间用完,并且在信标消失并且重新出现以重置允许的测距时间之前,您无法触发触发器。

+0

感谢您的澄清,所以据我所知,没有任何方法可以长时间进行测量而不会关闭?即使通过触发位置更新,例如以下行: self.locationManager.allowsBackgroundLocationUpdates = true; – fafa92

+0

可以通过按下肩膀按钮或主页按钮打开手机屏幕作为iOS触发器再次开始测距?或者当手机超出范围然后进入时它可以重新启动? – fafa92

+1

是的,它可以。 CLBeaconRegion上的一个名为notifyEntryStateOnDisplay的设置会导致额外的回调,它会重置测距时钟。 allowedBackgroundLocationUpdates设置对信标测距没有影响,但您可以将位置背景模式添加到您的plist以获得无限的背景测距。感谢有问题,你需要说服苹果,你提供了一个引人注目的位置相关的好处,用户获得批准的应用程序商店。 – davidgyoung