Core Bluetooth Mock 库旨在模拟 Core Bluetooth 对象,提供了一种简便的方法来测试启用蓝牙的应用程序。由于原生 Bluetooth API 在模拟器上不受支持,因此使用此库,您可以运行、测试此类应用程序并进行截图,而无需物理手机或平板电脑。您还可以在外围设备仍在开发中时开始开发 iOS 应用程序。
Core Bluetooth 框架提供了您的应用程序与配备低功耗 (LE) 无线技术的 Bluetooth 设备通信所需的类。它需要 iPhone 或 iPad 才能工作,这使得启用蓝牙的应用程序难以测试。正如文档所述:
不要对 Core Bluetooth 框架的任何类进行子类化。不支持重写这些类,并且会导致未定义的行为。
Core Bluetooth Mock 库定义了许多 CBM... 类和常量,它们包装或模仿来自 Core Bluetooth 框架的相应 CB... 对应项。例如,CBMCentralManager
具有与 CBCentralManager
相同的 API 和行为,等等。在物理 iDevice 上,对 CBMCentralManager
和 CBMPeripheral
的所有调用都将转发到其原生等效项,但在模拟器上,将使用用户定义的模拟实现。
Core Bluetooth Mock 库仅在 Swift 中可用,并且与以下平台兼容:
(某些功能仅在新平台上可用)。
注意
对于运行 Objective-C 的项目,我们推荐 https://github.com/Rightpoint/RZBluetooth 库。
该库支持 CocoaPods、Carthage 和 Swift Package Manager。
创建/更新您的 Podfile,包含以下内容:
target 'YourAppTargetName' do
pod 'CoreBluetoothMock'
end
安装依赖项
pod install
打开新创建的 .xcworkspace
在您项目的根目录下创建一个新的 Cartfile,包含以下内容:
github "https://github.com/NordicSemiconductor/IOS-CoreBluetooth-Mock" ~> x.y // Replace x.y with your required version
使用 carthage 构建
carthage update --platform iOS // also supported are tvOS, watchOS and macOS
将 CoreBluetoothMock.framework 从 Carthage/Build 复制到您的项目,并按照 Carthage 的说明操作。
在 Xcode 中:File -> Swift Packages -> Add package dependency,输入 https://github.com/NordicSemiconductor/IOS-CoreBluetooth-Mock.git 并设置所需的版本、分支或提交。
如果您有 Swift.package 文件,请包含以下依赖项:
dependencies: [
// [...]
.package(name: "CoreBluetoothMock",
url: "https://github.com/NordicSemiconductor/IOS-CoreBluetooth-Mock.git",
.upToNextMajor(from: "x.y")) // Replace x.y with your required version
]
并将其添加到您的目标中:
targets: [
// [...]
.target(
name: "<Your target name>",
dependencies: ["CoreBluetoothMock"]),
]
该库的文档可在此处获得:here。
迁移示例可在此处获得:here。有关分步指南,请参阅 Pull Request #1。
注意
迁移示例应用程序当前不在测试中使用模拟。为此,请查看此存储库中的 Example 文件夹,其中包含 nRF Blinky 应用程序,该应用程序在单元测试和 UI 测试中使用模拟外围设备。 参见下文。
nRF Blinky 是一款面向新手的 BLE 开发者,并且还演示了 Core Bluetooth Mock 库的使用。此应用程序控制 nRF5DK 上的 LED,并在每次按下和释放工具包上的按钮时接收通知。
模拟实现在单元测试和 UI 测试中使用。 请参阅 AppDelegate.swift,其中设置了模拟环境,以及 UITests.swift 和 UITests.swift 类。
模拟外围设备在 MockPeripherals.swift 中定义。
Nordic Semiconductor 提供的一项简化的专有服务,包含两个特征,一个用于控制 LED3,一个用于控制 Button1。
服务 UUID:00001523-1212-EFDE-1523-785FEABCD123
00001525-1212-EFDE-1523-785FEABCD123
1
=> LED 亮0
=> LED 灭00001524-1212-EFDE-1523-785FEABCD123
1
=> 按钮按下0
=> 按钮释放有关完整规范,请查看 文档。
/examples/ble_peripheral/ble_app_blinky/
中找到 blinky 演示的源代码和十六进制文件。准备您的开发套件。
启动 Xcode 并针对您的目标 iOS 设备构建项目(注意:BLE 在 iOS 模拟器中不可用,因此需要 iOS 设备才能使用真实硬件进行测试)。