1 / 26
文档名称:

{网络营销}微信蓝牙外设协议.pdf

格式:pdf   大小:519KB   页数:26页
下载后只包含 1 个 PDF 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

{网络营销}微信蓝牙外设协议.pdf

上传人:流金岁月 2022/2/12 文件大小:519 KB

下载得到文件列表

{网络营销}微信蓝牙外设协议.pdf

文档介绍

文档介绍:: .
{}网络营销微信蓝牙外设
28
8Md5DeviceTypeAndDeviceId 的例子 29
9CBC 例子 30
10CRC32 例子 31
11 微信蓝牙外设 proto 文件 31
12 微信公众平台 proto 文件 35
13JsApi 例子 37
概要
该文档规范了蓝牙设备和手机上的微信的通信协议
协议支持经典蓝牙和 蓝牙,目前支持 ios 和 andriod 两个系统,后续会扩展到其他
系统。
整体架构
厂商服务器和外设,由厂商开发完成。
微信会提供服务器的接口以对接厂商的服务器,会提供手机的接口(如本文规定的蓝牙协议)
以对接厂商的外设。
主要功能
该协议打通了设备和厂商服务器之间的数据链路,也就是支持将设备上的数据发送到厂商的
服务器上,也支持将厂商的数据发送到设备。
厂商的数据对于微信来说,是黑盒,微信不对设备数据做分析。
该协议也打通了设备和微信服务器之间的数据链路。
设备和微信服务器之间的数据格式由微信规定,例如登录,新消息通知等。
蓝牙 BLE 模拟成流
微信支持蓝牙 BLE。
微信规定了蓝牙 BLE 设备需要先模拟成流(即 stream,输入输出流)。经典蓝牙的 RFCOMM,就是一个流。流具有的特性有:
a. 可以传输无限长度的数据
b. 双工,读写可以并发,互不干扰。
显然,蓝牙 BLE 无法传输无限长度的数据,为了实现这个目的,需要定义一个规范。
蓝牙设备需暴露两个特征值(Characteristics):Write 特征值,Indication 特征值。蓝
牙设备从 Write 特征值接受数据,从 Indication 特征值发送数据。
Indication 特征值类型是 bytes。
这里我们约定,把一个特征值一次传输的数据,称为一帧(不同类型的特征值一次传输的数
据长度是不一样的)。
注意:应用层上的数据包(例如 1k 大小),会分散成许多帧来传输。
蓝牙设备写过程:
1. 分帧:假设蓝牙手环上有 1k 数据,要发给手机微信。由于一个特征值长度有限(如 20
个字节),显然需要分多次才能传输完成。1k 数据,要分成 1024 字节/20 字节=51 个帧。剩
下的 4 个字节,不足一帧(20 个字节),需补齐为一帧并对剩下的 16 个字节赋 0。总共是 52
帧。
2. 发送第一个帧:把第一个帧的内容放入特征值里面。然后通知手机读取数据,通知有两
种方式,Indication 和 notify,这里使用 Indication 方式,即带响应的通知。当通知完成
的时候,可以认为手机已经读完数据。这就完成了发送第一个帧。
3. 按照 2 的步骤,依次发送剩下的帧。
蓝牙设备读过程:
当蓝牙设备发现读特征值收到数据的时候,就接收数据,并追加到设备的 buf 里。
注意:蓝牙设备必须等微信 app 订阅了 Characteristics 之后,才能 indicate 数据,否者
会造成设备发送数据丢失的问题。
协议
1 绑定
用户绑定设备有两种方式:扫码和蓝牙扫描。
这两种方式都需要先向微信公众平台注册授权设备(具体 api 参见公众平台文档)。
扫码绑定
用户通过扫描设备二维码绑定设备(获取二维码的方法见公众平台文档)。
用户场景:用户打开扫一扫界面,扫码设备二维码,出现公众号页面。用户点击关注,
进行绑定设备。
扫码绑定并不需要设备在身边。蓝牙扫描绑定
用户通过扫描周边的蓝牙设备进行绑定。
用户场景(可确认设备):用户先关注公众号,点击绑定设备,进入绑定说明页。同时,
微信开始扫描设备。用户操作设备确认(如点击设备上的按钮,或者双击设备),设备
广播特殊的包(称为确认包),微信监听到包之后,开始关注并绑定。
蓝牙扫描绑定需要设备在身边。
蓝牙扫描绑定的设备分为两种:
可确认(如有按钮,或者可以双击)的设备。大部分设备属于可确认设备。
无法确认的设备(无法确认的设备,出于安全性的考虑,可用扫码绑定)
可确认的设备,当用户进行设备确认时(如双击手环,或者按按钮),需要广播特殊的
包(称为确认包,具体格式见附录)。
2 扫描和连接
进入特定