这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 企业专区 » 机智云Gizwits » 机智云微信硬件接入指南

共1条 1/1 1 跳转至

机智云微信硬件接入指南

高工
2015-12-24 21:53:23     打赏

文章标题:《基于Wi-Fi的物联网硬件微信接入指南》 文档更新:2015-02-08 文档下载: 下载


1、前言 1.1 版权说明

本文档由机智云编辑整理,部分资料引用自微信硬件平台/微信公众平台等官方网站。任何企业或个人进行转载必须获得机智云的同意,否则由此引起的法律纠纷与机智云无关。由于技术更新频繁,请及时关注机智云文档中心对此文档的更新,机智云不对此另行通知。

1.2 目标读者

本文档适合所有希望了解机智云智能硬件接入微信的实现方法及流程的开发者以及爱好者。

2、微信硬件简介 2.1 简介

微信硬件,官方名称为“微信服务号设备功能”,是微信为服务号提供的物联网解决方案,设备功能建立在微信硬件平台之上。允许硬件设备厂商通过微信服务号,将用户与其拥有的智能设备相连。

2.2 为什么要接入微信
  1. 微信拥有完善的ID体系。开通设备功能即意味着设备能够使用微信的ID体系。

  2. 微信为第三方提供了轻应用的开发方案,结合标准微信JSAPI和微信硬件平台特有的API,硬件厂商可以快速构建自己的轻应用。

  3. 微信拥有庞大的活跃用户,用户每天打开微信客户端的频率较高。有利于硬件设备口碑传播的同时,App推广的成本也将大幅降低。

  4. 设备功能可以简化第三方的接入云。微信的服务器分布范围广,即使第三方服务器资源分布范围有限,整体架构依然能够为用户提供较好的体验。

  5. 设备功能为第三方提供了O2O的可能。设备厂商可以在公众号上建立微信小店,根据设备运行情况,定期提供配件和耗材的购买服务。为用户提供更好的服务体验。

3、微信硬件整体框架 3.1 框架示意图

3.2 各部分功能 3.2.1 设备

设备由厂商研发设计,提供设备基础能力。增加通信模块(Wi-Fi/GPRS)后,设备能力将通过通信模块与云端连接,实现远程监控与控制。

3.2.2 机智云

机智云提供一整套的物联网硬件开发工具,通过机智云后台(site.gizwits.com)的图形化界面定义设备功能,机智云自动生成设备MCU到通信模块之间的串口通信协议。开发者根据文档指示即可实现设备的联网能力。(如图①部分)

设备接入机智云后,机智云提供了与此设备相关的一系列接口,通过接口的授权调用实现设备的远程监控与控制。(如图②部分)

3.2.3 厂商服务器

厂商服务由厂商(开发者)自行架设、配置,主要提供两方面功能:

首先,开发者可以为设备设计个性化的HTML页面,HTML页面运行在厂商服务器上,用户点击微信公众号上的菜单后个性化的HTML页面经过微信服务器显示到用户界面。(如图③④部分)

其次,通过厂商服务器调用机智云提供的设备接口,可以实现设备本身业务逻辑的算法。例如,一个智能灯泡接入机智云之后,机智云提供了这个灯泡开启/关闭的接口,而开发者可以通过厂商云根据每一个用户习惯定义灯泡开启/关闭的条件以实现灯泡真正的智能化。

3.2.4 微信服务器

微信服务器主要为设备与厂商服务器之间的通信提供了一系列的接口,主要包括微信用户账号与设备的绑定/解绑定、接受/发送设备消息等,具体接口及使用方法可查看微信官方文档:

3.2.5 微信客户端

微信客户端提供了最终与用户交互的操作界面,开发者可通过服务器的配置自定义微信服务号的菜单以及显示个性化的HTML页面。

4、微信硬件用户使用场景 4.1 扫描设备二维码 4.2 配置设备连接网络 4.3 设备连接并开始使用 5、微信硬件接入完整开发流程 5.1 设备开发 5.1.1 通过机智云后台定义设备功能 5.1.2 下载串口协议文档进行MCU开发 5.1.3 设备上线并通过IOE Demo进行调试 5.2 申请微信公众账号并开通设备功能 5.2.1 微信公众账号介绍

微信推出的微信公众平台,根据功能的不同分为“订阅号”、“服务号”与“企业号”。微信硬件(设备功能)以“服务号”为基础进行开发,由于目前“服务号”只面向企业开通和认证,个人开发无法使用。但个人开发者在产品研发的阶段可通过微信公众测试号进行微信硬件开发。

了解微信公众平台:

5.2.2 使用微信公众测试号

微信公众测试号与正式的微信服务好有相同的接口与权限,但账号有效期只有1年,用户列表上限为100个,并且无法自定义账号名称。可作为开发阶段的调试工具使用,

微信公众测试号使用地址:

http://mp.weixin.qq.com/debug/cgi-bin/sandbox?t=sandbox/login
5.2.3 申请微信公众服务号

申请入口:

https://mp.weixin.qq.com/cgi-bin/readtemplate?t=register/step1_tmpl&lang=zh_CN
  1. 申请时需提供以下资料以及文件: 企业营业执照、运营授权书(需盖公章)、运营负责人手持身份证照片
  2. 服务号认证: 认证费用¥300(一次性认证服务费)
  3. 名称认证: 以企业名称认证可以企业名称简称作为前缀,后面自定义。
  4. 申请所需时间: 服务号注册到审核通过一般10个工作日以内,服务号认证一般15个工作日以内。
5.2.4 开通设备功能

开通服务号后,可在以公众平台管理界面添加新的功能插件。找到设备功能插件,选择申请或开启。如图:

  1. 提交接入设备基本资料
  2. 下载承诺函加盖公章邮寄到微信公司
  3. 申请服务号切换并获得100个测试设备号
  4. 商业化前进行技术认证及微信体验认证
5.3 微信公众平台开发服务器配置 5.3.1 概述

接入微信公众平台开发,开发者需要按照如下步骤完成:

  1. 填写服务器配置
  2. 验证服务器地址的有效性
  3. 依据接口文档实现业务逻辑

下面详细介绍这3个步骤。

5.3.2 第一步:填写服务器配置

登录微信公众平台官网后,在公众平台后台管理页面 - 开发者中心页,点击“修改配置”按钮,填写服务器地址(URL)、Token和EncodingAESKey,其中URL是开发者用来接收微信消息和事件的接口URL。Token可由开发者可以任意填写,用作生成签名(该Token会和接口URL中包含的Token进行比对,从而验证安全性)。EncodingAESKey由开发者手动填写或随机生成,将用作消息体加解密密钥。 同时,开发者可选择消息加解密方式:明文模式、兼容模式和安全模式。模式的选择与服务器配置在提交后都会立即生效,请开发者谨慎填写及选择。加解密方式的默认状态为明文模式,选择兼容模式和安全模式需要提前配置好相关加解密代码,详情请参考消息体签名及加解密部分的文档。

5.3.3 第二步:验证服务器地址的有效性

开发者提交信息后,微信服务器将发送GET请求到填写的服务器地址URL上,GET请求携带四个参数:

参数           描述
signature 微信加密签名,signature结合了开发者填写的token参数和请求中的timestamp参数、nonce参数。
timestamp 时间戳
nonce 随机数
echostr 随机字符串

开发者通过检验signature对请求进行校验(下面有校验方式)。若确认此次GET请求来自微信服务器,请原样返回echostr参数内容,则接入生效,成为开发者成功,否则接入失败。 加密/校验流程如下:

  1. 将token、timestamp、nonce三个参数进行字典序排序
  2. 将三个参数字符串拼接成一个字符串进行sha1加密
  3. 开发者获得加密后的字符串可与signature对比,标识该请求来源于微信 检验signature的PHP示例代码:
private function checkSignature()
{
        $signature = $_GET["signature"];
        $timestamp = $_GET["timestamp"];
        $nonce = $_GET["nonce"];

     $token = TOKEN;
     $tmpArr = array($token, $timestamp, $nonce);
     sort($tmpArr, SORT_STRING);
     $tmpStr = implode( $tmpArr );
     $tmpStr = sha1( $tmpStr );

     if( $tmpStr == $signature ){
          return true;
     }else{
          return false;
     }
}
5.3.4 依据接口文档实现业务逻辑

验证URL有效性成功后即接入生效,成为开发者。如果公众号类型为服务号(订阅号只能使用普通消息接口),可以在公众平台网站中申请认证,认证成功的服务号将获得众多接口权限,以满足开发者需求。

此后用户每次向公众号发送消息、或者产生自定义菜单点击事件时,开发者填写的服务器配置URL将得到微信服务器推送过来的消息和事件,然后开发者可以依据自身业务逻辑进行响应,例如回复消息等。

公众号调用各接口时,一般会获得正确的结果,具体结果可见对应接口的说明。返回错误时,可根据返回码来查询错误原因。

用户向公众号发送消息时,公众号方收到的消息发送者是一个OpenID,是使用用户微信号加密后的结果,每个用户对每个公众号有一个唯一的OpenID。

此外,由于开发者经常有需在多个平台(移动应用、网站、公众帐号)之间共通用户帐号,统一帐号体系的需求,微信开放平台(open.weixin.qq.com)提供了UnionID机制。开发者可通过OpenID来获取用户基本信息,而如果开发者拥有多个应用(移动应用、网站应用和公众帐号,公众帐号只有在被绑定到微信开放平台帐号下后,才会获取UnionID),可通过获取用户基本信息中的UnionID来区分用户的唯一性,因为只要是同一个微信开放平台帐号下的移动应用、网站应用和公众帐号,用户的UnionID是唯一的。换句话说,同一用户,对同一个微信开放平台帐号下的不同应用,UnionID是相同的。详情请在微信开放平台的资源中心-移动应用开发-微信登录-授权关系接口调用指引-获取用户个人信息(UnionID机制)中查看。

另请注意,微信公众号接口只支持80接口。

5.4 使用微信公众平台接口与服务器通信

微信公众平台开发者文档中,涉及到了基础接口、接受消息接口、发送消息接口、用户管理接口等,开发者可根据自身的业务逻辑需要调用相应的接口进行开发; 以获取公众号用户列表为例,简单描述使用微信公众平台接口与服务器通信的过程;

5.4.1 第一步:获取AccessToken;

access_token是公众号的全局唯一票据,公众号调用各接口时都需使用access_token。开发者需要进行妥善保存。access_token的存储至少要保留512个字符空间。access_token的有效期目前为2个小时,需定时刷新,重复获取将导致上次获取的access_token失效。 公众平台的API调用所需的access_token的使用及生成方式说明:

1、为了保密appsecrect,第三方需要一个access_token获取和刷新的中控服务器。而其他业务逻辑服务器所使用的access_token均来自于该中控服务器,不应该各自去刷新,否则会造成access_token覆盖而影响业务;

2、目前access_token的有效期通过返回的expire_in来传达,目前是7200秒之内的值。中控服务器需要根据这个有效时间提前去刷新新access_token。在刷新过程中,中控服务器对外输出的依然是老access_token,此时公众平台后台会保证在刷新短时间内,新老access_token都可用,这保证了第三方业务的平滑过渡;

3、access_token的有效时间可能会在未来有调整,所以中控服务器不仅需要内部定时主动刷新,还需要提供被动刷新access_token的接口,这样便于业务服务器在API调用获知access_token已超时的情况下,可以触发access_token的刷新流程。如果第三方不使用中控服务器,而是选择各个业务逻辑点各自去刷新access_token,那么就可能会产生冲突,导致服务不稳定。

公众号可以使用AppID和AppSecret调用本接口来获取access_token。AppID和AppSecret可在微信公众平台官网-开发者中心页中获得(需要已经成为开发者,且帐号没有异常状态)。注意调用所有微信接口时均需使用https协议。 接口调用请求说明 http请求方式: GET

https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET

参数说明

参数         是否必须              说明
grant_type 获取access_token填写client_credential
appid 第三方用户唯一凭证
secret 第三方用户唯一凭证密钥,即appsecret

返回说明 正常情况下,微信会返回下述JSON数据包给公众号:

{"access_token":"ACCESS_TOKEN","expires_in":7200}
参数              说明
access_token 获取到的凭证
expires_in 凭证有效时间,单位:秒

错误时微信会返回错误码等信息,JSON数据包示例如下(该示例为AppID无效错误):

{"errcode":40013,"errmsg":"invalid appid"}
5.4.2 第二步:根据获取到的AccessToken请求用户列表

公众号可通过本接口来获取帐号的关注者列表,关注者列表由一串OpenID(加密后的微信号,每个用户对每个公众号的OpenID是唯一的)组成。一次拉取调用最多拉取10000个关注者的OpenID,可以通过多次拉取的方式来满足需求。

接口调用请求说明 http请求方式: GET(请使用https协议)

https://api.weixin.qq.com/cgi-bin/user/get?access_token=ACCESS_TOKEN&next_openid=NEXT_OPENID
参数          是否必须
access_token
next_openid

返回说明 正确时返回JSON数据包:

{"total":2,"count":2,"data":{"openid":["","OPENID1","OPENID2"]},"next_openid":"NEXT_OPENID"}
参数                                                                  说明
total 关注该公众账号的总用户数
count 拉取的OPENID个数,最大值为10000
data 列表数据,OPENID的列表
next_openid 拉取列表的后一个用户的OPENID
错误时返回JSON数据包(示例为无效AppID错误):
{"errcode":40013,"errmsg":"invalid appid"}

附:关注者数量超过10000时 当公众号关注者数量超过10000时,可通过填写next_openid的值,从而多次拉取列表的方式来满足需求。 具体而言,就是在调用接口时,将上一次调用得到的返回中的next_openid值,作为下一次调用中的next_openid值。 示例如下: 公众账号A拥有23000个关注的人,想通过拉取关注接口获取所有关注的人,那么分别请求url如下:

https://api.weixin.qq.com/cgi-bin/user/get?access_token=ACCESS_TOKEN

返回结果: { "total":23000, "count":10000, "data":{" openid":[ "OPENID1", "OPENID2", ..., "OPENID10000" ] }, "next_openid":"NEXT_OPENID1" }

https://api.weixin.qq.com/cgi-bin/user/get?access_token=ACCESS_TOKEN&next_openid=NEXT_OPENID1

返回结果: { "total":23000, "count":10000, "data":{ "openid":[ "OPENID10001", "OPENID10002", ..., "OPENID20000" ] }, "next_openid":"NEXT_OPENID2" }

https://api.weixin.qq.com/cgi-bin/user/get?access_token=ACCESS_TOKEN&next_openid=NEXT_OPENID2

返回结果(关注者列表已返回完时,返回next_openid为空): { "total":23000, "count":3000, "data":{" "openid":[ "OPENID20001", "OPENID20002", ..., "OPENID23000" ] }, "next_openid":" " }

5.5 使用机智云Open API与设备通信

请查阅完整Open API 文档:Open API

5.6 微信公众平台界面开发

微信公众平台界面开发属于前端页面开发范畴,开发者可根据需求自由定制,此处仅描述如何从微信公众号进入所需要展示的界面; 第一步:获取AccessToken并生成公众帐号自定义菜单 获取AccessToken步骤已在5.4 章节描述,此处不再赘述; 自定义菜单能够帮助公众号丰富界面,让用户更好更快地理解公众号的功能。开启自定义菜单后,公众号界面如图所示:

目前自定义菜单最多包括3个一级菜单,每个一级菜单最多包含5个二级菜单。一级菜单最多4个汉字,二级菜单最多7个汉字,多出来的部分将会以“...”代替。请注意,创建自定义菜单后,由于微信客户端缓存,需要24小时微信客户端才会展现出来。建议测试时可以尝试取消关注公众账号后再次关注,则可以看到创建后的效果。 自定义菜单接口可实现多种类型按钮,如下:

1. click:点击推事件

用户点击click类型按钮后,微信服务器会通过消息接口推送消息类型为event 的结构给开发者(参考消息接口指南),并且带上按钮中开发者填写的key值,开发者可以通过自定义的key值与用户进行交互;

2. view:跳转URL

用户点击view类型按钮后,微信客户端将会打开开发者在按钮中填写的网页URL,可与网页授权获取用户基本信息接口结合,获得用户基本信息。

3. scancode_push:扫码推事件

用户点击按钮后,微信客户端将调起扫一扫工具,完成扫码操作后显示扫描结果(如果是URL,将进入URL),且会将扫码的结果传给开发者,开发者可以下发消息。

4. scancode_waitmsg:扫码推事件且弹出“消息接收中”提示框

用户点击按钮后,微信客户端将调起扫一扫工具,完成扫码操作后,将扫码的结果传给开发者,同时收起扫一扫工具,然后弹出“消息接收中”提示框,随后可能会收到开发者下发的消息。

5. pic_sysphoto:弹出系统拍照发图

用户点击按钮后,微信客户端将调起系统相机,完成拍照操作后,会将拍摄的相片发送给开发者,并推送事件给开发者,同时收起系统相机,随后可能会收到开发者下发的消息。

6. pic_photo_or_album:弹出拍照或者相册发图

用户点击按钮后,微信客户端将弹出选择器供用户选择“拍照”或者“从手机相册选择”。用户选择后即走其他两种流程。

7. pic_weixin:弹出微信相册发图器

用户点击按钮后,微信客户端将调起微信相册,完成选择操作后,将选择的相片发送给开发者的服务器,并推送事件给开发者,同时收起相册,随后可能会收到开发者下发的消息。

8. location_select:弹出地理位置选择器

用户点击按钮后,微信客户端将调起地理位置选择工具,完成选择操作后,将选择的地理位置发送给开发者的服务器,同时收起位置选择工具,随后可能会收到开发者下发的消息。

请注意,3到8的所有事件,仅支持微信iPhone5.4.1以上版本,和Android5.4以上版本的微信用户,旧版本微信用户点击后将没有回应,开发者也不能正常接收到事件推送。

接口调用请求说明 http请求方式:POST(请使用https协议)

https://api.weixin.qq.com/cgi-bin/menu/create?access_token=ACCESS_TOKEN

click和view的请求示例

{
     "button":[
     { 

          "type":"click",
          "name":"今日歌曲",
          "key":"V1001_TODAY_MUSIC"
      },
      {
           "name":"菜单",
           "sub_button":[
           { 

               "type":"view",
               "name":"搜索",
               "url":"http://www.soso.com/"
            },
            {
               "type":"view",
               "name":"视频",
               "url":"http://v.qq.com/"
            },
            {
               "type":"click",
               "name":"赞一下我们",
               "key":"V1001_GOOD"
            }]
       }]
 }其他新增按钮类型的请求示例

{ "button": [ { "name": "扫码", "sub_button": [ { "type": "scancode_waitmsg", "name": "扫码带提示", "key": "rselfmenu_0_0", "sub_button": [ ] }, { "type": "scancode_push", "name": "扫码推事件", "key": "rselfmenu_0_1", "sub_button": [ ] } ] }, { "name": "发图", "sub_button": [ { "type": "pic_sysphoto", "name": "系统拍照发图", "key": "rselfmenu_1_0", "sub_button": [ ] }, { "type": "pic_photo_or_album", "name": "拍照或者相册发图", "key": "rselfmenu_1_1", "sub_button": [ ] }, { "type": "pic_weixin", "name": "微信相册发图", "key": "rselfmenu_1_2", "sub_button": [ ] } ] }, { "name": "发送位置", "type": "location_select", "key": "rselfmenu_2_0" } ] }

  • 参数说明
参数            是否必须                说明
button 一级菜单数组,个数应为1~3个
sub_button 二级菜单数组,个数应为1~5个
type 菜单的响应动作类
name 菜单标题,不超过16个字节,子菜单不超过40个字节
key click等点击类型必须 菜单KEY值,用于消息接口推送,不超过128字节
url view类型必须 网页链接,用户点击菜单可打开链接,不超过256字节

返回结果 正确时的返回JSON数据包如下:

{"errcode":0,"errmsg":"ok"}

错误时的返回JSON数据包如下(示例为无效菜单名长度):

{"errcode":40018,"errmsg":"invalid button name size"}
5.7 注册设备与生成二维码

设备要接入微信公众平台,首先需要调用接口获取设备的二维码(一个二维码对应一个设备,扫描二维码即可绑定响应设备),然后进行设备授权;

5.7.1 获取设备二维码

接口调用请求说明 http请求方式: POST

https://api.weixin.qq.com/device/create_qrcode?access_token=ACCESS_TOKEN

POST数据说明

POST数据示例如下:

{
    "device_num":"2",
    "device_id_list":["01234","56789"]
}

返回结果

//成功:json方式返回二维码的生成ticket

{
    "errcode":0,
    "errmsg":"succ",
    "device_num":1,
    "code_list":[{"device_id":"id1","ticket":"t1"}]
}

//错误的Json返回示例:

{"errcode":-1,"errmsg":""}

  1. 第三方调用该服务,需要获得设备功能权限。
  2. 建议deviceid为英文字母、下划线、数字三类字符的串或者组合,不带其他标点符号,以免json串解析失败
  3. 二维码的生成有可能失败,因此请求的devcie num和响应的devcie num不一定相等;如果不相等,第三方需要核对下请求中哪些device id没有生成成功
  4. 响应中的ticket为二维码的生成串,第三方需要用这些串来生成二维码(点阵图),为了提高二维码的扫码成功率,我们建议第三方:使用qrencode库,QR码版本5,纠错等级为Q级,容错率不低于20%
  5. 返回的ticket字符串,会带有json的敏感字符,因此,公众平台对于敏感字符做了转义(如:/字符会被转义成\/),第三方需要将这些敏感字符转义回来
  6. 设备二维码ticket生成需要耗费系统资源,因此,建议公众号开发者一次操作不超过5个

【第三方厂商在二维码中追加自定数据】 公众平台返回的二维码生成串形式如:

http://we.qq.com/d/QRCODE_TICKET(其中QRCODE_TICKET是微信生产的二维码ticket)

第三方可以自行选择是否在公众平台返回的二维码的基础之上追加自定义的数据,是否追加自定义数据是可选的,由第三方自行决定。 追加自定义数据的方法:在公众平台的二维码后追加#3RD_DEFINE_DATA(其中,#作为分隔符,3RD_DEFINE_DATA是第三方自定义数据),追加后的二维码形式如:

http://we.qq.com/d/QRCODE_TICKET#3RD_DEFINE_DATA

在用户扫描绑定设备的时候,公众平台会把二维码中的3RD_DEFINE_DATA使用base64编码,放到bind消息中,推送给第三方(详情参考1.2章节 消息接口:“绑定/解绑”设备)。

字段                                                   字段的值
微信返回的设备二维码 http://we.qq.com/d/QRCODE_TICKET
第三方自定义数据 3RD_DEFINE_DATA
追加自定义数据后的二维码 http://we.qq.com/d/QRCODE_TICKET#3RD_DEFINE_DATA
扫描绑定时bind消息推送给第三方的数据 Base64编码后的3RD_DEFINE_DATA
5.7.2 设备授权

接口调用请求说明 http请求方式: POST

https://api.weixin.qq.com/device/authorize_device?access_token=ACCESS_TOKEN

POST数据说明 POST数据示例如下:

{
    "device_num":"2",
    "device_list":[
        {
            "id":"dev1",
            "mac":"123456789ABC",
            "connect_protocol":"1|2",
            "auth_key":"",
            "close_strategy":"1",
            "conn_strategy":"1",
            "crypt_method":"0",
            "auth_ver":"1",
            "manu_mac_pos":"-1",
            "ser_mac_pos":"-2"
        }
    ],
    "op_type":"0"
}
 

返回结果 成功:json方式返回授权成功的设备

{"resp":[
    {
         "base_info":
         {
            "device_type":"your_devcie_type",
            "device_id":"id"
         },
         "errcode":0,
         "errmsg":"ok"
     }
]}

错误的Json返回示例:

{"errcode":42001,"errmsg":""}
 
resp 设备id授权的response(json数组形式)
base_info 设备基本信息(包括device typ和device id,目前device type为用户的原始id)
errcode 错误码,0表示设置成功,非0表示失败
errmsg 错误信息(同errcode对应)

1、第三方调用该服务,需要拥有设备功能权限

2、建议id字段为英文字母、下划线、数字三类字符的串或者组合,不带其他标点符号,以免json串解析失败

3、connec_protocol为设备连接的协议类型,目前有四种连接方式(见字段说明),可以支持四种连接方式的任意组合,并且可以设置客户端优先选择的连接方式,客户端会优先选择该连接方式进行连接,若制定的优先协议无法连接成功,客户端回尝试指定的其他协议方式连接;其他类型可以后续再添加,请第三方同学确保值有效

4、conn_strategy连接策略,按位进行定义取值(第2bit不能置位;所有bit均不置位也不支持,即取值为 0),譬如手环类产品,可能需要及时同步数据,可以填5,表示在公众号对话页面,不停的尝试连接设备(取值1),并且处于非公众号页面时,微信有机会去连接设备,保证数据能及时同步(取值4)

5、crypt_method目前支持取值为0和1,对于计算能力弱的设备可以设置为0(不进行加密处理,此时auth_ver也需要为0),目前的加密方法只支持AES

6、auth_ver目前只支持取值为0或1,不同的取值会影响“设备---微信---后台”的auth过程的数据包的格式,具体的取值请参看“客户端蓝牙外设协议”,并且,如果不需要加密,则crypt_method和auth_ver都需要为0,

7、对于ios蓝牙2.0和4.0设备,微信客户端做了连接建立的弹框优化操作:对于ios蓝牙4.0协议,广播包必须带上mac地址,即:manu_mac_pos必须设置(且为-1,非ios蓝牙4.0设备才可以设置为-2);对于ios蓝牙2.0协议,iap的accessory Info的serial number可以不带mac地址,ser_mac_pos设置为-2,也可以在尾部带上mac地址,设置有效(-1),对于除以上两种协议以外的其他协议,该两个值的设置均无效,可以设置为0

8、op_type为请求操作类型,字段缺省值为0,即:设备授权,字段取值为1,则将请求中的设备属性更新已有的设备属性(若设备不存在,则更新失败)

9、授权接口的处理逻辑比较复杂,因此,约束公众号分开发者:一次批量授权的device id不能超过5个

5.8 设备生产



关键词: 机智云     微信    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]