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

时间:2015-06-04 09:37:00

标签: ios objective-c bluetooth core-location ibeacon

我正在使用IBeacon构建一个简单的ios应用,我正在监控某个地区,但我在进入和退出事件方面存在一些问题。

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

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

由于

1 个答案:

答案 0 :(得分:4)

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

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

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