iOS CoreBluetooth被动检查蓝牙是否启用,而不提示用户打开蓝牙

Bry*_*mas 12 ios core-bluetooth bluetooth-lowenergy

方案如下.我有一个已经部署的应用程序被人们使用.我正在考虑实施一些实验性的蓝牙低功耗功能,但在此之前,我想对已经有蓝牙开启/离开蓝牙的用户数进行"野外"调查.因此,我只想在后台检查这一点,然后将服务器的数据发送回服务器上已有蓝牙的用户数量,而无需实际使用蓝牙通信.

我已经CBCentralManager在我的应用程序中成功实例化了一个,并且可以在实例化后立即检索蓝牙状态,并通过蓝牙状态更新centralManagerDidUpdateState:.这一切都很好.我遇到的问题是,如果状态是CBCentralManagerStatePoweredOff,则设备会弹出警告提示用户"打开蓝牙以允许[应用程序名称]连接到附件".这是我试图避免的提示.在这个阶段,我只想调查离开蓝牙的用户数量 - 我不想使用蓝牙连接.

那么,如果您不打算使用蓝牙连接,有没有办法检查蓝牙状态而不提示用户?

Pat*_*Fog 11

iOS 7 options在创建中有一个新参数CBCentralManager可以关闭它.

我喜欢早期iOS的解决方案.

  • 是,使用CBCentralManagerOptionShowPowerAlertKey,尝试myCentralManager = [[CBCentralManager的alloc] initWithDelegate:自队列:无选择:@ {CBCentralManagerOptionShowPowerAlertKey:[NSNumber的numberWithBool:NO]}]; (3认同)
  • 很好找.你指的是`CBCentralManagerOptionShowPowerAlertKey`?如果您决定扩展您的答案以指定传递给哪个电话/链接到更多信息,我会将此标记为已接受的答案.否则,当我有机会再次详细查看它时,我会对此答案进行编辑. (2认同)

Ana*_*eem 10

初始化时可以使用以下命令CBCentralManager.

NSDictionary *options = @{CBCentralManagerOptionShowPowerAlertKey: @NO};
self.manager = [[CBCentralManager alloc] initWithDelegate:self queue:nil options:options];
Run Code Online (Sandbox Code Playgroud)

我可能没有正确解释,如果有任何疑虑,请直接进入评论.

  • 在 iOS13 中,现在会提示用户访问蓝牙的权限。 (2认同)