关闭蓝牙时没有触发 didExitRegion

didExitRegion not fired when turn off bluetooth

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

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

这是一个问题,因为我必须能够检测到用户何时离开该区域。有什么想法吗?

谢谢

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

一旦 CoreLocation 确定它在 CLBeaconRegion 内,它只会在有机会进行蓝牙扫描 3 秒后将状态更改为处于区域外,在此期间没有信标匹配 CLBeaconRegion 被检测到。如果蓝牙未打开,则无法通过扫描来确定。

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

注销它们