Swift 降低区域的阈值

Swift 降低区域的阈值,swift,bluetooth-lowenergy,cllocationmanager,ibeacon,clregion,Swift,Bluetooth Lowenergy,Cllocationmanager,Ibeacon,Clregion,我目前正在开发一个应用程序,我想让我的应用程序在背景模式下检测到一个信标,当它接近它时(立即)。根据我读过的文章,didEnterRegion无法完成此操作,我应该在后台模式下运行时使用测距(位置更新)。是否有任何解决方案可以直接降低didEnterRegion阈值?或者我应该使用另一种方法?如果是这样的话,它是否像didEnterRegion一样工作,但RSSI的范围有限?当我的手机进入该地区并且被锁定且屏幕关闭时,它是否工作?监控API无法控制收到检测回调的距离。当信标第一次进入无线电范围(

我目前正在开发一个应用程序,我想让我的应用程序在背景模式下检测到一个信标,当它接近它时(立即)。根据我读过的文章,didEnterRegion无法完成此操作,我应该在后台模式下运行时使用测距(位置更新)。是否有任何解决方案可以直接降低didEnterRegion阈值?或者我应该使用另一种方法?如果是这样的话,它是否像didEnterRegion一样工作,但RSSI的范围有限?当我的手机进入该地区并且被锁定且屏幕关闭时,它是否工作?

监控API无法控制收到检测回调的距离。当信标第一次进入无线电范围(通常在40米左右)时,您总是会收到回叫

有两种方法仅在近距离触发信标:

  • 如果制造商支持,请在信标上配置较低的无线电传输功率

  • 将测距API与监控相结合,并在后台尽可能长的测距(在没有特殊后台权限的iOS上,最大180秒),然后在测距回调显示CLBeacon精度字段立即时触发逻辑

  • 选项1比较简单,但不太可靠,因为它通常会在比您希望的更远的距离触发,有时甚至在非常近的距离触发也有困难


    只要背景测距时间没有用完,选项2就更可靠。如果手机的无线电在40米处触发开始测距,如果用户需要180秒以上的时间才能到达最近的距离,则测距时间将用完,您无法获得触发,直到信标消失并重新出现以重置允许的测距时间。

    感谢您的澄清,所以,据我所知,没有任何方法可以在不关机的情况下进行长期测距?即使触发如下行的位置更新:self.locationManager.allowsBackgroundLocationUpdates=true;按下肩膀按钮或主页按钮打开手机屏幕是否会被视为iOS再次开始测距的触发因素?或者当手机超出范围后可以重新启动然后进入?是的,可以。CLBeaconRegion上有一个名为NotifyEntryStateondDisplay的设置,它将导致一个额外的回调,该回调将在测距时重置时钟。allowsBackgroundLocationUpdates设置对信标测距没有影响,但您可以将位置背景模式添加到plist以获得无限制的背景测距。感谢问题是,你需要说服苹果公司,你正在向用户提供一项引人注目的与位置相关的好处,以获得AppStore的批准。非常感谢David,我不确定我是否正确,如果我错了,请纠正我,正如你所说,我们可以只为我们的CLBeaconRegion设置NotifyEntryStateoDisplay,而不将应用程序设置为在后台扫描整个时间的方式(AllowsBackgroundLocationUpdate),这会导致应用程序被Apple阻止。因此,如果用户选择打开屏幕,则会启用范围,并且符合苹果的政策,对吗?正确。当屏幕点亮时,将在允许的时间内启用测距