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
后台模式添加到您的应用程序,并实施 CBCentralManager
和 CBCentralManagerDelegate
的 centralManagerDidUpdateState
。这应该会在蓝牙启用或禁用时唤醒您的应用程序,您可以利用这段时间 requestStateForRegion
.
我已经使用 ibeacons 设置了一个应用程序,我注意到当我在该区域内打开蓝牙时,didEnterRegion
从未被触发。然而,当我在打开蓝牙的情况下实际进入该区域时,它工作正常。
在前台时,我通过在 didStartMonitoringForRegion
中调用 [self.locationManager requestStateForRegion:self.beaconRegion]
并检查我在里面来欺骗这种行为。
但是,我不知道在后台做什么。我知道唯一可以触发的方法是 didEnterRegion
,这意味着我无法在区域内仅打开蓝牙时发送通知。
有人成功做到了吗?
谢谢
您可以通过在您的区域初始化中指定 notifyEntryStateOnDisplay 来强制获取有关启用 BLE 的 didEnterRegion 通知:
_myBeaconRegion.notifyEntryStateOnDisplay=YES;
想到一个想法:将 bluetooth-central
后台模式添加到您的应用程序,并实施 CBCentralManager
和 CBCentralManagerDelegate
的 centralManagerDidUpdateState
。这应该会在蓝牙启用或禁用时唤醒您的应用程序,您可以利用这段时间 requestStateForRegion
.