iOS CBCentralManager"打开蓝牙"提示和CBCentralManagerOptionShowPowerAlertKey默认值

时间:2015-04-16 09:35:49

标签: ios cocoa bluetooth

iOS documentation表示CBCentralManagerOptionShowPowerAlertKey默认值为NO

我在实例化CBCentralManager

时没有指定任何选项
[[CBCentralManager alloc] initWithDelegate:self queue:dispatch_get_main_queue()];

但它仍然显示"打开蓝牙以允许......"提示。

这是文档中的错误,还是我做错了什么?

修改:

我发现了这个:

http://chris.cm/determine-whether-bluetooth-is-enabled-on-ios-passively/

而且:

iOS CoreBluetooth passively check if Bluetooth is enabled without prompting user to turn Bluetooth on

似乎暗示您必须明确将CBCentralManagerOptionShowPowerAlertKey设置为NO,这表明文档中存在错误? 我只是想找人确认。

编辑2:

CBCentralManagerOptionShowPowerAlertKey设置为0后,问题似乎已得到解决。 但我仍在寻找一些解释,因为文档说一件事并编程另一件事似乎非常不合逻辑。

2 个答案:

答案 0 :(得分:0)

同样查看文档,在Programming Guide中创建一个经理,有以下段落:

  

创建中央管理员时,中央管理员会调用   centralManagerDidUpdateState:其委托对象的方法。你必须   实现此委托方法以确保蓝牙低能耗   支持并可在中央设备上使用。更多   有关如何实现此委托方法的信息,请参阅   CBCentralManagerDelegate协议参考。

我想知道如果状态是" PoweredOff"

,提示是否是该委托电话的一部分

从逻辑上讲,这是有道理的,如果您正在启动并尝试通过蓝牙进行通信,这是用户期望的。他们可能没有蓝牙,这可以覆盖该用例,而不会强迫用户转到设置应用程序,然后才能使用您的应用程序。

答案 1 :(得分:0)

是的,你是对的,我现在在代码中有这种特殊的不一致。

文档说不应该是默认值,但不是这种情况,你必须强制它,默认行为是。