你如何创build一个可变特征的描述符?
CBMutableDescriptor:initWithType:value:
的文档CBMutableDescriptor:initWithType:value:
表示为typesparameter passing一个“标识特性的128位UUID”。 然后继续说你应该只使用CBUUIDCharacteristicUserDescriptionString
或CBUUIDCharacteristicFormatString
中的一个作为types参数。 最后,没有办法给描述符添加一个可变的特性。
看来参数是做两个互斥的东西。 一方面,它被用来告诉O / S描述符适用于哪个特性,另一方面是用来设置描述符的types。 第二个更有意义,但是如何将描述符添加到特征?
无论您是传递特征的UUID还是CBUUIDCharacteristicUserDescriptionString
,iOS都会崩溃
Assertion failure in -[CBMutableDescriptor initWithType:value:], /SourceCache/CoreBluetooth_Sim/CoreBluetooth-59.3/CBDescriptor.m:25
什么是创buildCBMutableDescriptor并将其添加到CBMutableCharacteristic的正确方法?
你对文档是正确的。 但是为了让大家都清楚,这里是CBDescriptor.h中的一个引用:
…目前仅支持特性用户描述和特性显示格式描述符。 特性扩展属性和客户端特性configuration描述符将在发布父服务时自动创build,具体取决于特性本身的属性。
换句话说,除非你设置了这些描述符,否则系统会阻止你(因此你断言失败的原因)。
所以说你想要使用特征用户描述符,你可以这样做:
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];
如果您有任何问题,请告诉我。