当关闭蓝牙时,didExitRegion没有被解雇
我正在使用IBeacon
构建一个简单的ios应用程序,我正在监视一个区域,但我对进入和退出事件有一些问题。
如果我进入一个区域,回调didEnterRegion
被触发,但是在该区域内,关闭蓝牙不会触发didExitRegion
回调。 这是预期的行为吗?
这是一个问题,因为我必须能够检测用户何时退出该区域。 任何想法?
谢谢
出于测试目的,您必须关闭信标或移出范围才能获得didExitRegion
事件。
一旦CoreLocation
确定它位于CLBeaconRegion
内部,它将仅在有机会进行3秒蓝牙扫描之后将状态更改为在该区域之外,在此期间不会检测到与CLBeaconRegion
匹配的信标。 如果蓝牙未打开,则无法进行扫描以进行此确定。
如果您想在此情况下强制退出应用,请考虑侦听CoreBluetooth
生命周期事件。 关闭电源时,您可以取消注册每个CLBeaconRegion
,手动触发didExitRegion
逻辑,然后使用CoreLocation
注销它们。