首页 > 解决方案 > iOS 上的应用能否在 BLE 的设备信息服务中实现固件版本字符串特性

问题描述

我想在 iOS 上创建一个 BLE 外围设备作为应用程序,并在设备信息服务中实现固件版本字符串特征。

当我做:

deviceInformationService = CBMutableService(type: CBUUID(string: "0x180A"), primary: false)
deviceInformationService.characteristics = [
    manufacturerNameString,
    modelNumberString,
    firmwareRevisionString
]
peripheral.add(deviceInformationService)

调用回调时出现func peripheralManager(_ peripheral: CBPeripheralManager, didAdd service: CBService, error: Error?)错误:

Error Domain=CBErrorDomain Code=8 "The specified UUID is not allowed for this operation." UserInfo={NSLocalizedDescription=The specified UUID is not allowed for this operation.}

当我使用蓝牙资源管理器从 Mac 连接到 iPhone 并读取设备信息时,它显示

Manufacturer Name String = Apple Inc.
Model Number String = iPhone10,3

这不是我在 CBMutableCharacteristic 中设置的。而且固件版本字符串也不存在。

有没有办法实现固件修订字符串?

标签: iosbluetooth-lowenergycore-bluetooth

解决方案


设备信息服务属于设备,而不是您的应用。您的应用与所有其他应用和操作系统共享 BLE 堆栈,因此您不能像这样覆盖系统范围的特征。


推荐阅读