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

Kep*_*tos 5 bluetooth objective-c core-location ios ibeacon

我正在构建一个简单的ios应用程序IBeacon,我正在监视一个区域,但我对进入和退出事件有一些问题.

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

这是一个问题,因为我必须能够检测用户何时退出该区域.任何的想法?

谢谢

dav*_*ung 4

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

一旦CoreLocation确定其位于区域内,CLBeaconRegion只有在有机会进行蓝牙扫描 3 秒(在此期间未检测到与区域匹配的信标)后,它才会将状态更改为区域外CLBeaconRegion。如果蓝牙未打开,则无法进行扫描以做出此确定。

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