2013-05-07 88 views
11

的情况如下IOS启用CoreBluetooth被动检查。我有一个已经部署的应用程序正在被人们使用。我考虑实施一些实验蓝牙低功耗的特点,但我做之前,我要进行谁已经开启蓝牙功能的用户数量的“野生”的调查在所有的时间/离开蓝牙。所以,我只想在后台检查这一点,并将已经使用蓝牙的用户数量统计回服务器,而不用实际使用蓝牙通信。如果蓝牙不提示用户打开蓝牙

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

所以,有没有办法来检查蓝牙状态,而不提示,如果你不使用蓝牙连接打算的用户?

回答

10

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

我很乐意为早期的iOS解决方案。

+1

很好找。你是指'CBCentralManagerOptionShowPowerAlertKey'?如果你决定扩大你的答案,以指定这是传递给/进一步信息的链接,我会标记这个接受的答案。否则,当我有机会再次详细查看时,我会对此答案进行编辑。 – 2013-10-15 03:15:25

+2

是的,使用CBCentralManagerOptionShowPowerAlertKey,试试myCentralManager = [[CBCentralManager alloc] initWithDelegate:self queue:nil options:@ {CBCentralManagerOptionShowPowerAlertKey:[NSNumber numberWithBool:NO]}]; – 2013-10-17 16:27:27

8

当你初始化CBCentralManager您可以使用以下。

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

我可能没有正确解释它,如果有任何问题请直接发表评论。

+0

这不适用于iOS 8.0及以上版本 – maxisme 2015-10-19 20:56:06

+0

@Maximilian你确定吗?它适用于我的iOS 8.4.1 iPad Mini 2. – 2016-01-21 15:23:39

+0

它应该如何快速完成? – po5i 2016-08-23 20:26:55