Objective c iBeacon监测结果不可靠(迪登特地区和迪登特地区)
我目前正在开发一个iOS应用程序,它可以对iBeacon进行范围和监控,以便能够执行一些操作和接收通知。 测距工作完美无瑕,但我在信标监控和通知方面遇到了麻烦。我已经对这个主题做了很多研究,我知道CoreLocation框架通常会遇到这样的问题,但我想知道其他开发人员是如何解决这个问题的 基本上,我在启动didEnterRegion和didExitRegion方法时显示本地通知。不幸的是,这两种方法经常被触发(以一种不可靠的方式),即使iBeacon就在它旁边,尽管有时它工作得很完美,这使得它更烦人。 我尝试过降低iBeacon的广告时间间隔,虽然它有帮助,但并没有完全解决这个问题。现在,我尝试使用一个逻辑过滤器,如果进入或退出事件发生在最后X分钟,我将忽略触发通知(我想到的是一个介于5到15之间的“神奇”数字) 有人有同样的问题吗?在这种情况下添加第二个iBeacon会有帮助吗?(可能监控这两个事件,并根据这两个输入逻辑过滤退出和进入事件?)。 我还考虑添加另一层数据来显示通知,可能是基于GPS或Wifi信息。有人试过这个吗 还有别的想法吗?我愿意接受任何推荐 以防万一,我使用的是Estimote iBeacons和iOS9(Objective-c)Objective c iBeacon监测结果不可靠(迪登特地区和迪登特地区),objective-c,ios9,core-location,ibeacon,estimote,Objective C,Ios9,Core Location,Ibeacon,Estimote,我目前正在开发一个iOS应用程序,它可以对iBeacon进行范围和监控,以便能够执行一些操作和接收通知。 测距工作完美无瑕,但我在信标监控和通知方面遇到了麻烦。我已经对这个主题做了很多研究,我知道CoreLocation框架通常会遇到这样的问题,但我想知道其他开发人员是如何解决这个问题的 基本上,我在启动didEnterRegion和didExitRegion方法时显示本地通知。不幸的是,这两种方法经常被触发(以一种不可靠的方式),即使iBeacon就在它旁边,尽管有时它工作得很完美,这使得它更
谢谢你的时间 信标发出脉冲信号。测距还执行间歇扫描(大约每100毫秒一次)。这意味着您的设备可能会连续几秒钟丢失信标,这可能会导致您遇到的结果。您可以使用以下方法记录信标RSSI值:
- (void)locationManager:(CLLocationManager *)manager didRangeBeacons:(NSArray *)iBeacons inRegion:(CLBeaconRegion *)region
我相信在看到didExitRegion被调用之前,您会看到很多零值。这不是代码中的错误,也不是信标的错误。这只是因为无论是发射的信号还是检测都不是恒定的。它们在跳动。这些问题可能发生在信标与您的设备位于同一张桌子上时,并且在现实世界中,当信号被物理对象和人阻挡时,这些问题可能会被夸大
我会使用测距来更准确地确定你的信标是否在附近。请注意,测距,特别是在后台测距,可能会消耗大量电池。间歇性区域退出/进入事件是一个常见问题,通常按照您的建议,使用带有计时器的软件过滤器来解决。如何设置过滤器的细节(在处理退出逻辑之前,退出后等待重新进入的最短时间)因每个用例而异,因此最好将其置于您的控制之下 请理解,区域退出是由于iOS在
CLBeaconRegion
中的信标30秒内未检测到任何蓝牙广告造成的。如果两个检测到的数据包相隔31秒,您将在1秒后获得区域退出和区域进入
这种情况通常发生在信号电平较低的情况下。如果iOS设备位于信标传输范围的外边缘,则只会接收一小部分数据包。当信标以1Hz的频率传输时,如果连续丢失30个数据包,iOS设备将收到退出事件
在需要可靠覆盖的特定区域,您可以采取以下几项措施来减少此问题: