我正在向用户显示当他们进入信标区域时以及退出信标区域时的本地通知。出口是最重要的,因为我告诉用户他们在该位置居住了多长时间。我正在使用区域监视,因为它使我即使在应用程序处于后台或挂起状态时也可以跟踪信标。我在监视3个信标时遇到一个错误(这种情况发生在2和1上,但发生频率较低)。我的手机将进入睡眠状态,并且我将继续监视信标。然后,即使所有3个信标都面朝上坐在我的手机的同一张桌子上,我的应用仍会由于didBeitRegion而唤醒。每次它都是一个不同的信标,所以我决定了信号强度。然后,一旦应用程序苏醒,它将重新找到信标并立即重新进入(因为它从未将信号放在第一位)。我同时使用Android设备检测到信号,并且信标一直在广播,因此iPhone不应丢失这些信号,尤其是在没有足够长的时间考虑到它退出的情况下。
我试图通过使用补救
[self.locationManager requestStateForRegion:region];
但是,在这些情况下,这将返回状态2,即CLRegionStateOutside。
我应该如何解决?有没有人有过类似的经历。我应该能够在信标区域中停留1分钟或1个小时,并且只有在30秒钟内未检测到信标时才退出。
最佳答案
要检查的几件事:
另一种可能性是,在您附近的蓝牙频率范围内,周期性地有异常数量的无线电噪声。这不太可能,但是我以前见过。我住在一条配备强大天线的美国海军陆战队的马路对面,在家里,我得到的分组CRC错误率通常比办公室要高得多。
关于ios - didDetermineStateForRegion和didExitRegion返回错误的响应,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35902382/