协议支持经典蓝牙和4.0 BLE 蓝牙,目前支持 ios 和 andriod 两个系统,后续会扩展到其他系统。
PS:在 IOS 上比较稳定,在 Andriod 尚不稳定,因为 Andriod 手机的蓝牙芯片都不同,所以有些手机的蓝牙在执行某个命令的时候耗时太久,所以就连接不上,不稳定。而
IOS 手机使用的都是同一款蓝牙芯片,所以很稳定。
一、 整体架构
厂商服务器和外设,由厂商开发完成。微信会提供服务器的接口以对接厂商的服务器,会提供手机的接口(如本文规定的蓝牙协议)以对接厂商的外设。
二、 主要功能
1. 该协议打通了设备和厂商服务器之间的数据链路,也就是支持将设备上的数据发送到厂商的服务器上,也支持将厂商的数据发送到设备。
2. 厂商的数据对于微信来说,是黑盒,微信不对设备数据做分析。
3. 该协议也打通了设备和微信服务器之间的数据链路。
4. 设备和微信服务器之间的数据格式由微信规定,例如登录,新消息通知等。
三、 蓝牙BLE 模拟成流
微信规定了蓝牙BLE 设备需要先模拟成流(即stream,输入输出流)。经典蓝牙的RFCOMM,就是一个流。流具有的特性有:
a. 可以传输无限长度的数据
b. 双工,读写可以并发,互不干扰。
显然,蓝牙BLE 无法传输无限长度的数据,为了实现这个目的,需要定义一个规范 ----- 那就是“帧”
以上内容都属于烂大街的东西了,没有什么有用的具体的东西,只是对微信蓝牙外设做个大致的介绍,我从去年听到这个东西,知道今年 7 月份才开始正式接触,刚开始很难上手,代码也比较复杂,学起来比较困难。但是总的来说这就是一个 BLE 设备和手机 APK 之间的连接和数据交换,跟我以前做的 BLE 设备与京东 APK 对接本质是一样的。但是还有不一样的地方,那就是微信要用到的 MAC 和 MD5,微信毕竟和其他简单的 APK 有区别,有加密数据和不加密数据,现在大多都在用不加密模式,微信只是做一个接口,把数据从 BLE 设备最终传到厂商服务器,如果使用加密模式的话,微信会对数据有个处理的过程,有些厂商是不同意的。
版权声明:本文为博主原创文章,未经博主允许不得转载。