我正在开发蓝牙低功耗(BLE)项目,该项目需要iPhone作为外围设备 . 我正在使用BLEManager处理与CoreBluetooth相关的工作,其中包括中央和外设模式的良好实现 .

Question

我对外围设备架构的设计模式和最佳实践一无所知 . 服务和特征的定义没有模式 . 我似乎可以选择以下模式之一:

  • 定义多个服务,具有一个读/写/通知特性

  • 定义一个服务,具有一些读/写/通知特性

  • 定义一个服务,一个用于读/写/通知的特性,并从特征更新值中提取命令

我应该选择哪一个?

Implementation

以下是使用BLEManager的外设实现的一些部分:

let peripheralServiceUUID = CBUUID(string: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx")
let nameCharacteristicUUID = CBUUID(string: "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx")

var CharactersticArray = [MyCharacterstic]()

characteristic.uuid = nameCharacteristicUUID
characteristic.value = nil
characteristic.permission = [.writeable, .readEncryptionRequired]
characteristic.property = [.write, .read, .notify]
CharactersticArray.append(characteristic)

Peripheral.instance().service_UUID = peripheralServiceUUID
Peripheral.instance().service_characteristics = CharactersticArray
Peripheral.instance().localName = "iPhone"
Peripheral.instance().startAdvertising()