• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

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

[复制链接]
菜鸟教程小白 发表于 2022-12-13 14:28:33 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

我正在编写一个基于 iOS 的程序,该程序通过外部附件框架与蓝牙设备进行交互。我想在尝试连接之前提前确定是否启用了蓝牙。不幸的是,我在 External Accessory Framework 中没有看到任何内容允许我这样做的文档。

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

有很多关于核心蓝牙和蓝牙 LE 的示例。我正在专门寻找与外部附件框架相关的解决方案。



Best Answer-推荐答案


ExternalAccessory 框架无法做到这一点。您应该使用 CoreBluetooth,它可以为您提供在具有 BLE 硬件的设备上所需的信息,即 2011 年之后发布的所有内容。您使用 ExternalAccessory 与您的设备进行通信这一事实并不能阻止您也出于此目的而使用 CoreBluetooth知道蓝牙是否打开。

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

要使用 CoreBluetooth 获取信息,您需要实例化一个 CBCentralManager 实例,例如:

centralManager = [[CBCentralManager alloc] initWithDelegate:self queue:nil options:nil];

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

- (void)centralManagerDidUpdateStateCBCentralManager *)central {
    BOOL bleAvailable = central.state != CBCentralManagerStateUnsupported;
    if (bleAvailable) {
        BOOL bluetoothTurnedOn = central.state != CBCentralManagerStatePoweredOff;
        // Do something with the info
    }
    else {
        // Out of luck... We won't be able to determine whether BT is on or off
    }
}

关于ios - 如何检查是否通过 iOS 外部附件框架启用了蓝牙?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35437135/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap