所以我有1个管理员和1个外围设备。
在外围设备端,我发送了一个具有CBCharacteristicProperties.notifyEncryptionRequired
和CBCharacteristicProperties.indicateEncryptionRequired
属性的特征,
与此行:
char = CBMutableCharacteristic(type: charId, properties: CBCharacteristicProperties(rawValue: 0b1100000000), value: nil, permissions: [CBAttributePermissions.readEncryptionRequired, CBAttributePermissions.writeEncryptionRequired])
但是当我在中央阅读时,它只会给我
0b0000110000
这将转换为notify
和indicate
属性。
为什么没有给我0b1100000000?有什么我想念的吗?
我要尝试的是检查我搜索的值是否已加密而不配对。
当我尝试读取一个值时,如果它是加密的,则需要配对。将会出现配对对话框。因为出现了配对对话框,所以我知道它已加密。我想知道特征是否已加密而没有看到对话。
答案 0 :(得分:0)
我可以告诉你,我曾经在nRF connect中看到服务记录,它直接向我表明服务已加密。但是我不知道他们是怎么做到的。它背后的堆栈是Linux上的BlueZ。我认为可能将其标记在服务记录中。
此外,我可以告诉您大多数设备都不这样做。我正在耳机CSR控制器上实施固件。它上面的堆栈不提供执行此操作的API。由于我拥有固件和受我控制的应用程序,因此我可以告诉你:使用此芯片,无法知道特征是否已加密。
令人遗憾的是,这种芯片广泛传播。