我们有一个项目正在使用 CoreLocation 区域来监控 iBeacon 区域在应用程序后台进入/退出。CLBeaconRegion (CLRegion)、CLBeacon 等。CLLocationManager 在进入 CLBeacon (iBeacon) 区域时返回回调。它是一个轻量级的封装在下面的 bluetoothManager 周围。
// various CLLocation delegate callback examples
- (void) locationManager:(CLLocationManager *)manager didRangeBeacons:(NSArray *)beacons inRegion:(CLBeaconRegion *)region;
- (void) locationManager:(CLLocationManager *)manager didDetermineState:(CLRegionState)state forRegion:(CLRegion *)region;
我们遇到的问题是,当用户没有打开蓝牙时,Iphone 会定期发出系统级警告“打开蓝牙以允许“APP_NAME”连接其他配件”。这种情况经常发生,今天早上我已经得到了 4 次,因为应用程序在后台运行。CLLocationManager 可能正在尝试监视那些 CLBeaconRegion,但蓝牙已关闭,因此无法执行此操作。
另一篇文章提到 CBCentralManager 有一个属性 CBCentralManagerOptionShowPowerAlertKey,它允许禁用此警告。
iOS CoreBluetooth 被动检查蓝牙是否启用而不提示用户打开蓝牙
不幸的是,我发现无法访问底层蓝牙或任何 CBCentralManager 引用来使用它。
有什么方法可以禁用此警告以进行 CLBeaconRegion 监控?