当关闭蓝牙时,didExitRegion没有被解雇

我正在使用IBeacon构建一个简单的ios应用程序,我正在监视一个区域,但我对进入和退出事件有一些问题。

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

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

谢谢

出于测试目的,您必须关闭信标或移出范围才能获得didExitRegion事件。

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

如果您想在此情况下强制退出应用,请考虑侦听CoreBluetooth生命周期事件。 关闭电源时,您可以取消注册每个CLBeaconRegion ,手动触发didExitRegion逻辑,然后使用CoreLocation注销它们。