我正在使用IBeacon构建一个简单的ios应用,正在监视一个区域,但是输入和退出事件存在一些问题。

如果我进入某个区域,则会触发回调didEnterRegion,但在该区域内,关闭蓝牙不会触发didExitRegion回调。这是预期的行为吗?

这是一个问题,因为我必须能够检测到用户何时退出该区域。任何想法?

谢谢

最佳答案

为了进行测试,您必须关闭信标或移出范围才能获得didExitRegion事件。

一旦CoreLocation确定它在CLBeaconRegion内,它只有在有机会进行蓝牙扫描3秒钟之后才将状态更改为该区域之外,在此期间未检测到与CLBeaconRegion匹配的信标。如果蓝牙未打开,则无法扫描以进行此确定。

如果要在这种情况下强制退出应用程序,请考虑监听CoreBluetooth生命周期事件。断电时,您可以注销每个CLBeaconRegion,手动触发didExitRegion逻辑,然后使用CoreLocation注销它们。

10-04 12:22
查看更多