的文档CBMutableDescriptor:initWithType:value:
表示为类型参数传递“标识特征的 128 位 UUID”。然后它继续说你应该只使用其中之一CBUUIDCharacteristicUserDescriptionString
or CBUUIDCharacteristicFormatString
对于类型参数。最后,没有方法将描述符添加到可变特征。
看来该参数正在做两件互斥的事情。一方面,它用于告诉操作系统描述符适用于哪个特征,另一方面,它用于设置描述符的类型。第二个更有意义,但是如何将描述符添加到特征中呢?
无论您传递特征的 UUID 还是CBUUIDCharacteristicUserDescriptionString
, iOS 崩溃
Assertion failure in -[CBMutableDescriptor initWithType:value:], /SourceCache/CoreBluetooth_Sim/CoreBluetooth-59.3/CBDescriptor.m:25
创建 CBMutableDescriptor 并将其添加到 CBMutableCharacteristic 的正确方法是什么?
您对文档的看法是正确的。但为了让大家清楚,以下是 CBDescriptor.h 中的引用:
...只有特征用户描述和特征
当前支持表示格式描述符。这
特征扩展属性和客户端特征
配置描述符将自动创建
父服务的发布,取决于父服务的属性
本身的特点。
换句话说,除非您设置这些描述符,否则系统将阻止您(这就是您断言失败的原因)。
假设您想使用特征用户描述描述符,您可以这样做:
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];
如果您有任何疑问,请告诉我。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)