Ble服务端传输消息有两个常用手段,notification和indication。那么这两者之间有什么区别呢?
Notification 不需要应答,所以服务端发送的消息,它自己并不知道消息是否发送成功。
Indication 需要客户端应答,每次服务端发送完数据都需要客户端发送应答消息。其中有一点很重要,如果你发送的
indication客户端没有应答,你是不能再次发送indication的
需要注意的是,服务端一开始是无法直接发送Indication和Notification。首先必须是客户端通过往服务端的CCCD特征(clinet characteristic configuration descriptor)
写入值来使能服务端的这两个功能Notification/Indication,这样服务端才能发送。这也是为什么我们在看服务端的profile时候是有cccd特征的原因。
总结一下,Notification是一种不可靠传输,indication则是可靠传输。但是可靠传输意味着传输数据的速率降低,开发ble程序如果对数据可靠性要求不是很高的情况下就使用Notification吧。
参考信息:
1 https://www.nxpic.org.cn/module/forum/thread-622329-1-1.html