CoreBluetooth for Swift: 蓝牙低功耗完整指南
\n\n1. 什么是 CoreBluetooth 及其用途
\n\nCoreBluetooth 是 Apple 提供的一个框架,提供了与蓝牙低功耗(BLE,蓝牙 4.0 及以上版本)设备交互的 API。它是 iOS SDK 和 macOS SDK 的一部分,因此是 Apple 生态系统开发的本地工具。与经典蓝牙不同,BLE 专注于最低功耗,非常适合可穿戴设备、传感器、智能锁、健身追踪器和 IoT 设备。
\n\n为什么需要 CoreBluetooth?如果您正在开发一个 iPhone 应用程序,需要与心率监测器交换数据、控制智能灯泡或从气象站获取读数,那么您将需要这个框架。它处理所有底层工作:扫描空中信号、建立连接、发现服务和特征,以及读取/写入数据。CoreBluetooth 扮演两个角色:Central(搜索并连接的设备)和 Peripheral(广播自身并提供数据的设备)。在本文中,我们将重点介绍 Central 角色,因为它在应用程序中最常用。
\n\n重要的是要理解,CoreBluetooth 不是第三方库,而是一个系统框架。它不需要通过包管理器安装,在 Xcode 中“开箱即用”。但是,为了正常工作,您需要在 Info.plist 中添加蓝牙使用说明(对于 iOS 13+ 使用键 NSBluetoothAlwaysUsageDescription,对于更早版本使用 NSBluetoothPeripheralUsageDescription)。
2. 安装
\n\nCoreBluetooth 不需要通过 pip 或 CocoaPods 安装。它是 Apple 标准库的一部分。要将框架添加到项目中:
\n\n- \n
- 在 Xcode 中打开您的项目。 \n
- 选择您的应用程序 target。 \n
- 转到 "General" 选项卡 → "Frameworks, Libraries, and Embedded Content"。 \n
- 点击 "+" 并选择
CoreBluetooth.framework。 \n
或者,只需在代码中添加导入:
\n\nimport CoreBluetooth\n\n在 iOS 14+ 和 macOS 11+ 的模拟器上使用蓝牙也可以工作,但真实的 BLE 设备仅在物理设备上可用。在模拟器上,您只能测试扫描和连接逻辑,但不能测试数据传输。
\n\n3. 快速入门 — 最小工作示例
\n\n以下是最小代码,它初始化一个中央设备(Central Manager)并开始扫描所有可用的 BLE 设备。结果将输出到控制台。
\n\nimport UIKit\nimport CoreBluetooth\n\nclass ViewController: UIViewController, CBCentralManagerDelegate {\n\n var centralManager: CBCentralManager!\n\n override func viewDidLoad() {\n super.viewDidLoad()\n // 使用委托初始化 Central Manager\n centralManager = CBCentralManager(delegate: self, queue: nil)\n }\n\n // MARK: - CBCentralManagerDelegate\n\n func centralManagerDidUpdateState(_ central: CBCentralManager) {\n switch central.state {\n case .poweredOn:\n print("蓝牙已开启。开始扫描...")\n // 开始扫描所有设备\n centralManager.scanForPeripherals(withServices: nil, options: nil)\n case .poweredOff:\n print("蓝牙已关闭")\n case .unauthorized:\n print("应用程序未获得蓝牙授权")\n case .unknown:\n print("蓝牙状态未知")\n case .unsupported:\n print("设备不支持 BLE")\n case .resetting:\n print("蓝牙正在重置")\n @unknown default:\n print("未知状态")\n }\n }