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