1

这个问题已经在 2013 年的 Stack Overflow 上提出过,但需要更新。自 macOS 10.13 起,针对 macOS 的 Core Bluetooth 功能进行了更改,使其更符合 iOS。

该问题的答案是

CoreBluetooth 是一个用于蓝牙 LE 通信的 iOS 框架。IOBluetooth 是一个 OS X 框架

这不再是真的了,Core Bluetooth 并不是一个 iOS 框架,虽然 IOBluetoothmacOS独有的

CoreBluetooth 用于访问低功耗蓝牙 API。IOBluetooth 用于蓝牙经典接口

这也是不正确的,因为核心蓝牙并非专门用于 BLE。

CoreBluetooth 文档指出:

与蓝牙低功耗和 BR/EDR(“经典”)设备通信。

这似乎是直截了当的;Core Bluetooth 用于蓝牙通信,包括 BLE 和 Classic。

IOBluetooth 文档指出:

获得对蓝牙设备的用户空间访问权限。

但这并不是特别有启发性。

在 macOS 10.13+ 上的 CoreBluetooth 时代,IOBluetooth 与 macOS 上的 CoreBluetooth 的主要现代用例是什么?

4

1 回答 1

5

CoreBluetooth 支持 BLE、GATT over BR/EDR 和 L2CAP。尽管它是摘要,但它不支持大多数经典配置文件。特别是,它支持GATT over BR/EDR。它不支持其他协议。(在我的经验中,GATT over BR/EDR 非常少见。我从未遇到过真正支持它的设备。)它不支持 SDP,也不能用于发现大多数经典设备。

IOBluetooth 支持各种经典协议,包括 SDP、RFCOMM 和 L2CAP。它支持音频和 HCI 设备之类的东西。据我所知,它并不直接支持 BLE;它为此嵌入了CoreBluetooth。(我相信它可以对 BLE 进行一些非常低级的发现,但这不是您想要使用的。)

我不相信这在 10.13 中发生了根本性的变化。最大的变化(我认为主要是为了支持 Catalyst)是核心蓝牙在平台之间变得更加统一。我不认为这从根本上改变了框架的用途。

于 2021-08-15T17:58:40.930 回答