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

mic*_*rus 5 cocoa bluetooth ios

iOS 文档CBCentralManagerOptionShowPowerAlertKey默认值是NO.

实例化时我没有指定任何选项CBCentralManager

[[CBCentralManager alloc] initWithDelegate:self queue:dispatch_get_main_queue()];
Run Code Online (Sandbox Code Playgroud)

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

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

编辑:

我发现了这个:

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

和这个:

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

这似乎表明您必须显式设置CBCentralManagerOptionShowPowerAlertKeyto NO,这表明文档中存在错误?我只是想找人确认一下

编辑2:

CBCentralManagerOptionShowPowerAlertKey设置后0问题似乎解决了。但我仍在寻找一些解释,因为文档说的是一套,程序却是另一套,这似乎非常不合逻辑。

Nau*_*sel 0

查看文档,在编程指南中,创建一个管理器,有这样一段:

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

我想知道提示是否是该委托调用的一部分,状态是否为“PoweredOff”

从逻辑上讲,这是有道理的,如果您正在启动并尝试通过蓝牙进行通信,这是用户所期望的。他们可能没有打开蓝牙,这涵盖了该用例,而无需强制用户在使用您的应用程序之前转到设置应用程序。