我正在使用IBeacon
构建一个简单的ios应用,我正在监控某个地区,但我在进入和退出事件方面存在一些问题。
如果我进入某个区域,则会触发回调didEnterRegion
,但是在该区域内,关闭蓝牙不会触发didExitRegion
回调。这是预期的行为吗?
这是一个问题,因为我必须能够检测用户何时退出该区域。有什么想法吗?
由于
答案 0 :(得分:4)
出于测试目的,您必须关闭信标或移出范围以获得didExitRegion
事件。
一旦CoreLocation
确定它在CLBeaconRegion
内,它只会在有机会进行蓝牙扫描3秒后才会将状态更改为在该区域之外,在此期间没有信标匹配检测到CLBeaconRegion
。如果蓝牙未开启,则无法进行扫描以进行此确定。
如果您想在此情况下强制退出应用,请考虑收听CoreBluetooth
生命周期事件。关闭电源时,您可以取消注册每个CLBeaconRegion
,手动触发didExitRegion
逻辑,然后使用CoreLocation
取消注册。