Core Bluetooth Mock 库旨在模拟 Core Bluetooth 对象,从而提供一种简单的方式来测试启用蓝牙的应用。由于原生 Bluetooth API 在模拟器上不受支持,因此使用此库,您无需物理手机或平板电脑即可运行、测试此类应用并截取屏幕截图。 您也可以在外围设备仍在开发中时开始开发 iOS 应用。
Core Bluetooth 框架提供了应用与配备蓝牙低功耗 (LE) 无线技术的设备通信所需的类。 它需要 iPhone 或 iPad 才能工作,这使得蓝牙应用的测试变得困难。 正如文档所述:
请勿对 Core Bluetooth 框架中的任何类进行子类化。 不支持重写这些类,并且会导致未定义的行为。
Core Bluetooth Mock 库定义了许多 CBM... 类和常量,它们封装或模仿了 Core Bluetooth 框架中相应的 CB... 对象。 例如,CBMCentralManager
具有与 CBCentralManager
相同的 API 和行为,等等。 在物理 iDevices 上,对 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"]),
]
该库的文档可在此处获得:此处。
迁移示例可在此处获得:此处。 有关分步指南,请参阅 Pull Request #1。
注意
迁移示例应用程序当前未在测试中使用 mock。 为此,请查看此存储库中带有 nRF Blinky 应用的 Example 文件夹,该应用在单元测试和 UI 测试中使用模拟外围设备。 请参见下文。
nRF Blinky 是一个面向新手的 BLE 开发人员的示例应用程序,并且还演示了 Core Bluetooth Mock 库的使用。 该应用程序控制 nRF5DK 上的 LED,并在每次按下和释放套件上的按钮时接收通知。
mock 实现用于单元测试和 UI 测试中。 请参阅 AppDelegate.swift(在其中设置 mock 环境)和 UITests.swift 和 UITests.swift 类。
mock 外围设备在 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 设备是使用真实硬件进行测试的先决条件)。