我正在使用Adafruit Feather BLE模块进行修补。
随之而来的是AT命令集,我用它来创建一个自定义服务和一个特征。我用它作为通知选项。iOS端代码显示Characteristic没有通知。我在谷歌上搜索了一下,有些人说需要一个描述符才能通知特征。所以我加了一个,但仍然没有成功。
这是代码的Adafruit部分——
AT+GATTADDSERVICE=UUID128= 3d-e8-3e-34-dc-98-43-d0-87-de-3d-97-73-8b-ba-b6
AT+GATTADDCHAR=UUID=0xABCD, PROPERTIES=0x10, MIN_LEN=2, VALUE='01', DATATYPE=1, DESCRIPTION=TEST, PRESENTATION=17-00-AC-27-01-00-00
我在串行监视器中看到它是成功的。在这之后,我每隔几毫秒就会向BLE模块写入一次。
在iOS方面,这是我得到的日志——
Characteristics: [<CBCharacteristic: 0x2817a4180, UUID = ABCD, properties = 0x10, value = (null), notifying = NO>]
我使用的是示例附带的标准代码。我使用的属性值是否不正确?Adafruit文件中说0x10是为了让它发出通知。
notification=no表示您尚未为此特性启用通知(即其isNotifying
属性为false
(。这并不意味着该特性不支持通知。
您需要调用setNotifyValue(true, for: characteristic)
才能启用通知。
然后,您将收到一个对didUpdateNotificationState
委托回调的调用,告诉您通知是否已成功启用。