ios - CoreBluetooth - 具有有意义的 UUID 的 CBMutableCharacteristic 或 CBMutableService

标签 ios objective-c bluetooth-lowenergy core-bluetooth

我正在为 Core Bluetooth 开发基于 block 的开源包装器。

目前我正在开发外设管理器部分。

我让它广播,我可以看到服务和它的特性。在查看其他服务时,我可以看到它们被赋予了有意义的名称,例如 Battery 和 Current time。

当我尝试为我创建的任何服务或特征提供一个有意义的名称时,它会返回错误 String Characteristic name does not represent a valid UUID

到目前为止我的代码是

   [_peripheralManager startAdvertising:@{CBAdvertisementDataLocalNameKey : @"Peripheral name",
                                       CBAdvertisementDataServiceUUIDsKey : [CBUUID UUIDWithNSUUID:[NSUUID UUID]]}];

CBMutableCharacteristic *transferCharacteristic = [[CBMutableCharacteristic alloc] initWithType:[CBUUID UUIDWithString:@"Characteristic name"]
                                                                                     properties:CBCharacteristicPropertyRead
                                                                                          value:[@"Test value" dataUsingEncoding:NSUTF8StringEncoding]
                                                                                    permissions:CBAttributePermissionsReadable];

CBMutableService *transferService = [[CBMutableService alloc] initWithType:[CBUUID UUIDWithString:@"Service name"]
                                                                   primary:YES];

[transferService setCharacteristics:@[transferCharacteristic]];

[_peripheralManager addService:transferService];

如果我用 [CBUUID UUIDWithNSUUID:[NSUUID UUID]] 替换任何 initWithType 参数,它可以工作,但不能很好地显示给用户。

有没有办法将 CBServiceCBCharacteristic 的 UUID 设置为有意义的字符串?

还值得注意的是,在查看时该特征的值为空,了解这是为什么会加分。

谢谢

最佳答案

蓝牙组织已经接受了一些services and their characteristics作为标准。使用 Core Bluetooth 库时,可以通过分配给它们的 4 位十六进制数字来引用它们 - 请参阅 CBUUID documentation

用户定义的 UUID 无法被 Core Bluetooth 库识别,因为它们没有分配编号,因此您只能使用完整的 UUID 显示它们。

如果您尚未发出读取或收到通知,则该特征的值将为空。

关于ios - CoreBluetooth - 具有有意义的 UUID 的 CBMutableCharacteristic 或 CBMutableService,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23489071/

相关文章:

ios - 如何淡出 iOS 12 上的 titleView 标签

objective-c - 当使用 NSOperation 在 iOS 7 中使用 Background Fetch 调用 completionHandler

objective-c - 子类 UITableViewController,我在 UIViewController 中的哪里设置它?

android - 蓝牙 GATT onConnectionState Change 不适用于 Lollipop

ios - 如何截断 UITextView 内容以适应缩小的尺寸?

ios - 如何从另一个类调用变量

android - 蓝牙脉搏血氧仪

Android:将蓝牙经典扫描与低功耗扫描分开,或区分经典设备与低功耗设备

c++ - 我的 iOS Metal 计算内核是否存在编译器错误,或者我遗漏了什么?

objective-c - 删除/插入 View 后 NSResponder 链被破坏