苹果手机(ios系统)蓝牙BLE的一些特点

摘自<BluetoothDesignGuidelines.pdf>文档

 

1. pairing:

苹果手机无法主动发起SMP配对流程,可通过以下两种方式发起配对流程:

(1)从端主动发起配对流程;

(2)从端在收到主端ATT指令后,返回SMP FAIL(错误码看SIG规范)给苹果手机,则苹果会重新发起配对流程。

 

2. Connection Parameters:

苹果的连接间隔默认为30ms,如果要更新,需要满足如下要求,且最小可以申请到20ms,如果蓝牙服务带HID服务,则可以申请的最小连接间隔为11.25ms,另外,苹果从来不会读取设备端偏爱的连接间隔的character值。

● Interval Max * (Slave Latency + 1) ≤ 2 seconds
● Interval Min ≥ 20 ms
● Interval Min + 20 ms ≤ Interval Max Slave Latency ≤ 4
● connSupervisionTimeout ≤ 6 seconds
● Interval Max * (Slave Latency + 1) * 3 < connSupervisionTimeout

 

3. services

GAP服务必须包含Device Name characteristic,并且是可写的;

当从端有能力改变自身服务时, GATT服务必须包含Service Changed characteristic,因为苹果可能会根据该特征值判断原来读取的从端设备的service list等信息是否还可以继续使用。

举例说明:假如从端的GATT没有Service Changed characteristic,且从端已经与一部苹果连接过,当从端的service list变化之后,再次与该苹果连接时,那么苹果默认认为从端没有能力改变自身的service等信息,那么苹果就会继续使用之前的信息,最终导致service list错乱。

 

4. 广播类型:

苹果手机不支持定向广播。

5. 广播数据:

广播数据必须包含:Flags、TX Power Level、Local Name、Services(广播primary services,第二服务不要广播);

 

待更新… …

苹果手机(ios系统)蓝牙BLE的一些特点

上一篇:关于java中ReentrantLock类的源码分析以及总结与例子


下一篇:关于ios下字体描边的一个细节