CoreBluetoothMock 0.18.0

CoreBluetoothMock 0.18.0

Aleksander NowakowskiNick_Kibysh 维护。



Core Bluetooth Mock

Version number Platform Carthage compatible

《Core Bluetooth Mock》库旨在模拟 Core Bluetooth 对象,为测试蓝牙应用程序提供简便的方式。由于在模拟器上不支持原生蓝牙 API,使用此库您可以在不使用实体手机或平板电脑的情况下运行、测试和截取这样的应用程序的屏幕截图。您还可以在外围设备仍在开发中的时候开始编写 iOS 应用程序。

Core Bluetooth?

Core Bluetooth 框架提供了应用程序与支持低能耗 (LE) 无线技术的蓝牙设备通信所需的所有类。它需要 iPhone 或 iPad 来工作,这使得蓝牙应用程序的测试变得困难。正如文档中所说

不要子类化 Core Bluetooth 框架中的任何类。重写这些类是不受支持的,并可能导致未定义的行为。

Core Bluetooth Mock!

《Core Bluetooth Mock》库定义了多个CBM...类和常量,用于封装或模仿来自Core Bluetooth框架的相应CB...对等类。例如,CBMCentralManager具有与CBCentralManager相同的API和行为等。在物理i设备上,对CBMCentralManagerCBMPeripheral的所有调用都转发到它们的本地等效项,但在模拟器上使用用户定义的模拟实现。

如何开始

《Core Bluetooth Mock》库仅提供Swift版本,兼容iOS 11.0及以上,macOS 10.13及以上,tvOS 11.0及以上,watchOS 4.0及以上,一些特定功能仅在较新的平台上可用。对于使用Objective-C的项目,我们推荐使用https://github.com/Rightpoint/RZBluetooth库。

包括库

此库支持CocoaPodsCarthageSwift包管理器

CocoaPods

  • 使用以下内容创建/更新您的Podfile

    target 'YourAppTargetName' do
        pod 'CoreBluetoothMock'
    end
  • 安装依赖项

    pod install
  • 打开新创建的.xcworkspace

Carthage

  • 在项目的根目录下创建一个包含以下内容的新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.frameworkCarthage/Build 拷贝到您的项目,并按照 Carthage 的说明 进行操作。

Swift Package Manager

该库也可以作为 SPM 包包含。只需在 Xcode 中:文件 -> Swift Packages -> 添加包依赖,输入 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"]),
]

文档

该库的文档可通过以下链接访问 此处

CoreBluetooth 迁移

迁移示例可通过以下链接访问 此处。有关分步指南,请参阅 Pull Request #1

注意

当前迁移示例应用在测试中不使用模拟。为此,请查看此存储库中的 Example 文件夹,其中包括 nRF Blinky 应用,该应用在单元测试和 UI 测试中使用模拟外围设备。以下为示例。

示例应用:nRF Blinky

nRF Blinky是一个面向BLE新手的示例应用,同时也展示了使用Core Bluetooth Mock库的方式。该应用控制nRF5DK上的LED,并在按下和释放套件上的按钮时接收通知。

模拟实现用于单元测试和UI测试。请参考AppDelegate.swift来设置模拟环境,以及UITests.swiftUITests.swift类。

模拟外设定义在MockPeripherals.swift

Nordic LED和按钮服务

Nordic半导体公司推出的简化专用服务,包含两个特性,一个用于控制LED3和按钮1。

  • 服务UUID:00001523-1212-EFDE-1523-785FEABCD123

    • 第一个特性控制LED状态(开启/关闭)。
      • UUID:00001525-1212-EFDE-1523-785FEABCD123
      • 值:1 => LED开启
      • 值:0 => LED关闭
    • 第二个特性在按键状态改变(按下/释放)时通知中心设备。
      • UUID:00001524-1212-EFDE-1523-785FEABCD123
      • 值:1 => 按键按下
      • 值:0 => 按键释放

    有关完整规范,请参阅文档

需求

  • 具有BLE功能的iOS设备或模拟器(以运行模拟)。
  • 开发套件(除非测试模拟)。
  • 在开发套件上烧写的Blinky示例固件。为了方便您使用,我们已在项目中的Firmwares目录下捆绑了两个固件。
  • 要获取最新固件和检查源代码,您可以直接访问我们的开发者网站,下载所需的SDK版本,然后在/examples/ble_peripheral/ble_app_blinky/目录中找到闪烁示例的源代码和HEX文件。
  • LBS(LED按钮服务)也支持在nRF Connect SDK中:请参阅此处.
  • 有关nRFBlinky示例固件的更多信息,请参阅文档.

安装和使用

  • 准备您的开发套件。

    • 通过USB将开发套件连接到您的计算机。
    • 开启开发套件电源。
    • 开发套件现在将显示为移动存储设备。
    • 将适当的HEX文件拖动(或复制粘贴)到该新设备上。
    • 开发套件的LED将闪烁,并断开并重新连接。
    • 开发套件现在已准备好并烧录了nRFBlinky示例固件。
  • 启动Xcode并在您的目标iOS设备上构建项目(注意: iOS模拟器中不可用BLE,因此需要iOS设备才能进行真实硬件测试)。

    • 在您的iOS设备上启动应用。
    • 应用将开始扫描附近的外围设备。
    • 选择屏幕上出现的外围设备(注意:如果外围设备未显示,请确保它已开启并功能正常)。
    • 您的iOS设备现在将连接到外围设备并在屏幕上显示状态。
    • 更改切换器值将打开或关闭LED 3。
    • 按下开发套件上的按钮1将在应用上显示按钮状态为按住。
    • 释放按钮1将在应用上显示状态为释放。

脚注

  1. Xcode 14已不支持iOS 9.0和tvOS 9.0模拟器。现在这两个平台的最低支持版本都是11.0。 2