gpt4 book ai didi

ios - 如何为可变特征创建描述符?

转载 作者:可可西里 更新时间:2023-11-01 04:39:32 25 4
gpt4 key购买 nike

CBMutableDescriptor:initWithType:value: 的文档说要为类型参数传递一个“标识特征的 128 位 UUID”。然后它继续说您应该只使用 CBUUIDCharacteristicUserDescriptionStringCBUUIDCharacteristicFormatString 之一作为类型参数。最后,没有向可变特征添加描述符的方法。

看起来参数在做两件互斥的事情。一方面,它用于告诉 O/S 描述符适用于哪个特性,另一方面,它用于设置描述符的类型。第二个更有意义,但是如何将描述符添加到特征中呢?

无论您是传递特征的 UUID 还是 CBUUIDCharacteristicUserDescriptionString,iOS 都会崩溃

Assertion failure in -[CBMutableDescriptor initWithType:value:], /SourceCache/CoreBluetooth_Sim/CoreBluetooth-59.3/CBDescriptor.m:25

创建 CBMutableDescriptor 并将其添加到 CBMutableCharacteristic 的正确方法是什么?

最佳答案

您对文档的看法是正确的。但为了让大家清楚,这是在 CBDescriptor.h 中找到的引文:

...Only the Characteristic User Description and Characteristic Presentation Format descriptors are currently supported. The Characteristic Extended Properties and Client Characteristic Configuration descriptors will be created automatically upon publication of the parent service, depending on the properties of the characteristic itself.

换句话说,除非您设置这些描述符,否则系统会阻止您(这就是您断言失败的原因)。

假设你想使用特征用户描述描述符,你会这样做:

CBUUID *yourCharUUID = [CBUUID UUIDWithString:@"c07c5050-15a0-11e3-8ffd-0800200c9a66"];//whatever UUID your using

CBMutableCharacteristic *yourCharacteristic = [[CBMutableCharacteristic alloc]initWithType:yourCharUUID properties:CBCharacteristicPropertyWriteWithoutResponse value:nil permissions:perms];

CBUUID *userDescriptionUUID = [CBUUID UUIDWithString:CBUUIDCharacteristicUserDescriptionString];//or set it to the actual UUID->2901

CBMutableDescriptor *yourDescriptor = [[CBMutableDescriptor alloc]initWithType:userDescriptionUUID value:@"myDescriptorValue"];

yourCharacteristic.descriptors = @[yourDescriptor];

如果您有任何问题,请告诉我。

关于ios - 如何为可变特征创建描述符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18622608/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com