我必须遵循以下场景:我的应用从 BLE 外设(血糖仪(请求和接收数据。用户可能安装了另一个应用程序(来自其他开发人员(,该应用程序也与外围设备通信。我注意到我的应用会收到由其他应用发起的请求的特征通知。这会导致我的应用接收一些数据两次。
有没有办法区分对我的请求的响应和其他应用程序引起的响应?或者我该如何处理它?
虽然堆栈显然知道某个(读、写(响应属于哪个应用程序(因为可能只有一个待处理的请求,并且它知道谁发送了请求(,但没有合乎逻辑或合理的理由为什么它应该将通知调度到单个应用程序(在启用了通知的应用程序中(。
请注意,GATT 规范没有定义"每个链接多个 gatt 客户端",只有一个客户端,因此外围设备甚至不知道可能有两个应用程序与之通信。因此,当它发送通知时,它不包含"目标应用程序"字段。
将多个应用程序多路复用到同一GATT连接的功能是iOS和Android团队等想出的。