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

时间:2013-05-07 06:48:47

标签: ios core-bluetooth bluetooth-lowenergy

方案如下。我有一个已经部署的应用程序被人们使用。我正在考虑实施一些实验性的蓝牙低功耗功能,但在此之前,我想对已经开启蓝牙/留蓝牙的用户数量进行“野外”调查时间。所以,我想在后台检查一下,然后发送回服务器的统计数据,显示蓝牙用户的数量,而不是实际使用蓝牙通信。

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

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

2 个答案:

答案 0 :(得分:10)

iOS 7在创建options时有一个新的CBCentralManager参数可以关闭此功能。

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

答案 1 :(得分:10)

初始化CBCentralManager时,您可以使用以下内容。

NSDictionary *options = @{CBCentralManagerOptionShowPowerAlertKey: @NO};
self.manager = [[CBCentralManager alloc] initWithDelegate:self queue:nil options:options];

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