Skip to content

Commit

Permalink
增加接收数据可通知方式与指示器方式的区别讲解
Browse files Browse the repository at this point in the history
  • Loading branch information
xiaoyaoyou1212 authored Dec 20, 2017
1 parent 32d99c8 commit 128038d
Showing 1 changed file with 6 additions and 1 deletion.
7 changes: 6 additions & 1 deletion FAQ.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,11 @@
### 连接成功后接收不到设备发送过来的数据?
确保你选择的服务和特征值是支持通知的,还有需要确定该UUID是可通知方式还是指示器方式,这两种方式是有区别的,指示器方式底层封装了应答机制,比可通知方式更可靠,在使用框架时确保传入的那个 isIndication 是否是对的。测试时可以先用群里提供的 demo APK 先验证是否可以收到设备的数据。

### 接收数据的可通知方式与指示器方式有什么区别,该怎么选择?
可通知方式:设备将要发送的数据直接发送,不管接收方有没有收到;
指示器方式:设备每发送一次数据都会等待接收方的应答,如果没有应答会重复发送,如果有应答才会进行下一次数据的发送。
这两种方式App端只需要根据需求选择就行,不需要关系是否需要应答,这个应答机制协议层已经做了封装。至于什么时候选择什么方式,一般情况是:如果是需要保证数据到达的准确性那么就选择指示器方式,而如果是只需要保证数据快速发送不太关心数据是否准确到达那么就选择可通知方式。

### 收发数据超过 20 字节怎么处理?

如果收发数据超过 20 字节,在发送时需要进行分包处理,接收时则需要进行组包处理。由于该库是基础的通信库,与数据处理等不进行挂钩,而组包一般与协议相关,故没有在该库中进行处理,而需要上层在调用数据发送和接收数据时统一进行处理。由于最近有人在使用库时问到分包的问题,故在此统一进行说明下,使用时可参考如下方式进行分包组包处理。
Expand Down Expand Up @@ -129,4 +134,4 @@ public void parse(byte[] bytes) {
private void receiveData(byte[] data) {
//处理组包后的数据
}
```
```

0 comments on commit 128038d

Please sign in to comment.