菜鸟教程小白 发表于 2022-12-13 14:28:33

ios - 如何检查是否通过 iOS 外部附件框架启用了蓝牙?


                                            <p><p>我正在编写一个基于 iOS 的程序,该程序通过外部附件框架与蓝牙设备进行交互。我想在尝试连接之前提前确定是否启用了蓝牙。不幸的是,我在 <a href="https://developer.apple.com/library/prerelease/ios/documentation/ExternalAccessory/Reference/ExternalAccessoryFrameworkReference/index.html" rel="noreferrer noopener nofollow">External Accessory Framework</a> 中没有看到任何内容允许我这样做的文档。</p>

<p>在检查 <code></code> 的文档后,我能找到的最接近的方法是检查 <code></code> 列表以查看是否有设备当前已连接。但是,这并不直接表明蓝牙适配器的状态。</p>

<p>有很多关于核心蓝牙和蓝牙 LE 的示例。我正在专门寻找与外部附件框架相关的解决方案。</p></p>
                                    <br><hr><h1><strong>Best Answer-推荐答案</ strong></h1><br>
                                            <p><p>ExternalAccessory 框架无法做到这一点。您应该使用 CoreBluetooth,它可以为您提供在具有 BLE 硬件的设备上所需的信息,即 2011 年之后发布的所有内容。您使用 ExternalAccessory 与您的设备进行通信这一事实并不能阻止您也出于此目的而使用 CoreBluetooth知道蓝牙是否打开。</p>

<p>对于较旧的设备,无法通过公共(public) API 获取此信息,但如果您不打算在 App Store 上发布您的应用,则可以使用私有(private) BluetoothManager 框架。</p>

<p>要使用 CoreBluetooth 获取信息,您需要实例化一个 <code>CBCentralManager</code> 实例,例如:</p>

<pre><code>centralManager = [ initWithDelegate:self queue:nil options:nil];
</code></pre>

<p>然后实现以下委托(delegate)方法来获取相关信息:</p>

<pre><code>- (void)centralManagerDidUpdateState:(CBCentralManager *)central {
    BOOL bleAvailable = central.state != CBCentralManagerStateUnsupported;
    if (bleAvailable) {
      BOOL bluetoothTurnedOn = central.state != CBCentralManagerStatePoweredOff;
      // Do something with the info
    }
    else {
      // Out of luck... We won&#39;t be able to determine whether BT is on or off
    }
}
</code></pre></p>
                                   
                                                <p style="font-size: 20px;">关于ios - 如何检查是否通过 iOS 外部附件框架启用了蓝牙?,我们在Stack Overflow上找到一个类似的问题:
                                                        <a href="https://stackoverflow.com/questions/35437135/" rel="noreferrer noopener nofollow" style="color: red;">
                                                                https://stackoverflow.com/questions/35437135/
                                                        </a>
                                                </p>
                                       
页: [1]
查看完整版本: ios - 如何检查是否通过 iOS 外部附件框架启用了蓝牙?