iOS / Beacons - 如何在打开蓝牙时触发 didEnterRegion?

iOS / Beacons - How to fire didEnterRegion when turning on Bluetooth?

我已经使用 ibeacons 设置了一个应用程序,我注意到当我在该区域内打开蓝牙时,didEnterRegion 从未被触发。然而,当我在打开蓝牙的情况下实际进入该区域时,它工作正常。

在前台时,我通过在 didStartMonitoringForRegion 中调用 [self.locationManager requestStateForRegion:self.beaconRegion] 并检查我在里面来欺骗这种行为。

但是,我不知道在后台做什么。我知道唯一可以触发的方法是 didEnterRegion,这意味着我无法在区域内仅打开蓝牙时发送通知。

有人成功做到了吗?

谢谢

您可以通过在您的区域初始化中指定 notifyEntryStateOnDisplay 来强制获取有关启用 BLE 的 didEnterRegion 通知:

_myBeaconRegion.notifyEntryStateOnDisplay=YES;

想到一个想法:将 bluetooth-central 后台模式添加到您的应用程序,并实施 CBCentralManagerCBCentralManagerDelegatecentralManagerDidUpdateState。这应该会在蓝牙启用或禁用时唤醒您的应用程序,您可以利用这段时间 requestStateForRegion.