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