• 微信蓝牙外设协议 1


    协议支持经典蓝牙和4.0 BLE 蓝牙,眼下支持 ios 和 andriod 两个系统,兴许会扩展到其它系统。

    PS:在 IOS 上比較稳定。在 Andriod 尚不稳定。由于 Andriod 手机的蓝牙芯片都不同。所以有些手机的蓝牙在运行某个命令的时候耗时太久。所以就连接不上。不稳定。

    IOS 手机使用的都是同一款蓝牙芯片,所以非常稳定。


    一、 总体架构

                                                                 

    厂商server和外设,由厂商开发完毕。

    微信会提供server的接口以对接厂商的server。会提供手机的接口(如本文规定的蓝牙协议)以对接厂商的外设。


    二、 主要功能

    1. 该协议打通了设备和厂商server之间的数据链路。也就是支持将设备上的数据发送到厂商的server上。也支持将厂商的数据发送到设备。

    2. 厂商的数据对于微信来说,是黑盒,微信不正确设备数据做分析。

    3. 该协议也打通了设备和微信server之间的数据链路。

    4. 设备和微信server之间的数据格式由微信规定,比如登录。新消息通知等。


    三、 蓝牙BLE 模拟成流

    微信规定了蓝牙BLE 设备须要先模拟成流(即stream,输入输出流)。经典蓝牙的RFCOMM,就是一个流。流具有的特性有:

    a. 能够传输无限长度的数据

    b. 双工。读写能够并发,互不干扰。


    显然,蓝牙BLE 无法传输无限长度的数据。为了实现这个目的。须要定义一个规范 ----- 那就是“帧”


        以上内容都属于烂大街的东西了,没有什么实用的详细的东西,仅仅是对微信蓝牙外设做个大致的介绍。我从去年听到这个东西,知道今年 7 月份才開始正式接触,刚開始非常难上手。代码也比較复杂,学起来比較困难。

    可是总的来说这就是一个 BLE 设备和手机 APK 之间的连接和数据交换,跟我曾经做的 BLE 设备与京东 APK 对接本质是一样的。可是还有不一样的地方,那就是微信要用到的 MAC 和 MD5。微信毕竟和其它简单的 APK 有差别。有加密数据和不加密数据,如今大多都在用不加密模式,微信仅仅是做一个接口,把数据从 BLE 设备终于传到厂商server,假设使用加密模式的话,微信会对数据有个处理的过程。有些厂商是不允许的。



  • 相关阅读:
    解决MAMP启动mysql服务 但是Navicat连接不上
    iOS 更改状态栏颜色和隐藏状态栏
    Xcode 常用代码段
    iOS开发小技巧
    怎么让self.view的Y从navigationBar下面开始计算
    iOS强制横屏或强制竖屏
    判断当前viewcontroller是push还是present的方式显示的
    Git命令速查表
    全栈程序员的新玩具Rust(一) IDE环境
    火狐的野望
  • 原文地址:https://www.cnblogs.com/liguangsunls/p/7372973.html
Copyright © 2020-2023  润新知