didDetermineStateForRegion和didExitRegion返回错误响应

时间:2016-03-09 20:54:33

标签: ios core-location ibeacon

当用户进入信标区域时,以及当他们退出信标区域时,我向用户显示本地通知。退出是最重要的,因为我告诉用户他们在该位置停留了多长时间。我正在使用区域监控,因为它允许我跟踪信标,即使应用程序处于后台或暂停时也是如此。我遇到了一个错误,我正在监视3个信标(这种情况发生在2和1,但不常见)。我的手机会睡觉,我会继续监视信标。然后,我的应用程序将因为其中一个信标的didExitRegion而唤醒,即使所有3个信标正面朝上与我的手机在同一个桌面上。每次都是不同的灯塔,所以我已经统治了我们的信号强度。然后,一旦应用程序醒来,它会重新发现信标并立即重新进入(因为它从未在第一时间离开信号)。我正在同时使用Android设备检测信号,并且信标正在整个时间广播,因此iPhone不应该丢失这些信号,特别是不能在足够长的时间内将其视为退出。

我尝试使用

来解决这个问题
[self.locationManager requestStateForRegion:region];

但是,在这些情况下,这将返回状态2,即CLRegionStateOutside。

我该如何解决这个问题?有没有人有类似的经历。我应该能够在灯塔区域停留1分钟或1小时,只有在信标未被检测到30秒时才能退出。

1 个答案:

答案 0 :(得分:1)

要检查的一些事项:

  • 验证多个iOS设备会发生这种情况。 iOS设备可能存在硬件问题,使其蓝牙LE接收较弱,或者拾取更多无线电噪音。我自己从来没有见过这个,但我听过有人坚持说他们在某些iOS设备上看过它的报道。

  • 使用定位iOSAndroid等应用对信标进行测距,检查iOS设备和Android设备收到的信号电平。两个设备上的信号电平应该相似。强信号的RSSI约为-60或更低。弱信号的RSSI约为-100或更高。如果信号较弱,可能会导致间歇性检测丢失,因为无线电噪声有时会阻止数据包被正确接收。如果您可以配置信标以提高其发射机功率水平,请执行此操作。

  • 在前景中使用定位应用程序,对信标进行范围检查以检查信号电平并以不同角度旋转它。一些信标的天线图案在一侧非常弱。您可能会发现方向信号弱得多,而且信号微弱也会导致信号丢失。

  • 检查信标的规格或配置设置,以查看信标传输的频率。配置为很少传输以节省电池的信标(例如每5秒一次)更有可能导致这种情况,因为它只连续丢失6个数据包(很少但可能)导致区域退出。

    < / LI>

另一种可能性是,在蓝牙频率范围内,您附近会定期发生异常的无线电噪音。这不太可能,但我以前见过它。我住在街对面的美国海军陆战队装置配有强大的天线,在家里我经常得到比我在办公室里更高的数据包CRC错误率。

相关问题