微信向硬件设备开放接收微信消息能力 2017-07-13 19:28
微信团队正式发布针对硬件设备的消息分享API,接入了该API的设备可以接收微信用户转发的部分微信消息。用户可以在聊天会话或朋友圈中长按音乐消息,微信位置分享,图片等格式的微信消息使用“打开”功能,将其转发给硬件设备进行处理。
目前已支持的消息格式有:图片,音乐,位置分享,文件,小视频和URL等。
在聊天会话中“打开”图片,修改设备昵称
 
在朋友圈中"打开"小视频或图片
凡支持处理音乐消息,微信位置分享,图片及文件等的设备,均可以通过以下流程接入该API: 1. 在已认证的服务号中开启“设备功能” 2. 添加新设备,并在“产品能力登记”中为产品申明所支持的消息接收能力,如“音乐消息”,“地理位置消息”等 3. 方案一,云端处理和分发,在"设备功能>设置"中配置额外的Call Back URL, 以接收和处理用户转发消息 4. 方案二,局域网通讯方式分发,在硬件设备固件中添加微信AirKiss 3.0 SDK, 以支持局域网发现和通讯 5. 用户使用微信“扫一扫”将设备添加到微信,即可在聊天会话中转发特定格式消息到硬件设备 注意:方案一,二可根据产品特性选择支持一种或两种均支持

微信团队 2016年8月

一、如何开通

"打开"分享功能的接入,需要实现设备在局域网内接收微信消息,或通过云端远程接收微信消息。

方案一

用户操作“打开”后,消息通过云端Call Back方式转发至开发者服务器,由开发者服务器按照目标设备ID进行消息分发和处理。

方案二

在设备固件中加入AirKiss3.0 SDK,实现局域网发现和通讯。Airkiss3.0 SDK需要根据设备的硬件平台来专门编译提供,目前采用线下邮件申请的方式。请填写申请表,并发送邮件至wxthings@foxmail.com,邮件标题请注明“微信Airkiss3.0 SDK申请”。 微信互联设备WIFI芯片/模组AirKiss静态库申请表

流程指引

1.申请认证公众号&开通设备功能

1.1公众号申请: https://mp.weixin.qq.com 1.2登录公众平台,点击左边功能栏的"添加功能插件",选择"设备功能"。
图1 设备功能插件
点击"开通",阅读并同意《微信公众平台微信互联设备功能服务协议》。
图2 开通设备功能
图3 《微信公众平台微信互联设备功能服务协议》

2.添加产品

进行产品开发前,第三方需要在"公众平台-设备功能"内添加接入的产品。一个公众号允许添加多种产品(比如可以添加N款音箱和N款车机),每种添加成功的产品都默认获得微信硬件平台分配的100个设备授权配额。 2.1进入"设备功能",点击"添加产品"
图4 添加产品
2.2产品基础资料登记,如产品名称、描述、品类以及设备配置说明等。
图5 基础资料登记
2.3数据通道选择
图6 数据通道选择
使用消息接收能力,请选择微信硬件云标准接入方案,选择对应的数据通道,其中:
  • 设备直连微信硬件云通道:设备使用微信硬件提供的SDK(SDK支持长按转发特性和直连微信硬件云,SDK调试部分在后面具体介绍),设备直接连接微信硬件云。
图7 设备直连微信硬件云通道
  • 厂商云连接微信硬件云通道: 设备使用微信硬件提供的SDK(SDK支持长按转发特性),设备直连的是设备厂商的云,而设备厂商云通过设备openAPI对接微信硬件云(openAPI后面具体介绍)。
图8 厂商云连接微信硬件云通道
2.4能力选项
图9 能力登记
必须勾选"产品基础能力"—"连接能力"中的相关能力;"消息接收能力"中设备支持的相关能力。
  • 基础能力类
  • 若支持通过微信给设备配置网络(即Airkiss),则勾选微信配网; 若支持扫描"型号码"近场发现设备,则勾选局域网发现; 若支持通过局域网发送微信消息至设备,则勾选近场通讯;
  • 微信消息类
  • 若支持长按转发微信内的音乐至设备,则勾选音乐消息; 若支持长按转发微信内的地理位置至设备,则勾选地理位置消息; 若支持长按转发微信内的文件(包括图片&文件)至设备,则勾选文件消息; 2.5获取产品编号以及型号二维码 每款添加的产品,微信硬件平台都会为其分配一个产品编号(productid)和型号二维码,可在产品详情页面查找。 其中productid用于设备授权(必须使用,文章后面具体介绍设备授权环节),而型号二维码用户配置设备连接网络以及近场扫描绑定(不一定需要使用,设备厂商也可以使用一机一码,文章后面介绍)。
图10 产品编号&型号二维码
扫描型号二维码,微信会跳转进入相应的配置说明页面,用户可选择配置产品连网或者搜索身边的产品。 型号二维码演示视频: http://v.qq.com/page/j/e/b/j0170txx5eb.html 型号二维码介绍

3.产品开发调试

3.1服务器配置 为了接收到微信侧转发给设备的消息(音乐、图片、地理位置、文件等),设备厂商需要在mp平台上配置接收微信消息的URL。若设备厂商需要支持云端转发的话,还会使用到微信硬件平台定义的设备端openAPI。配置启用后,微信转发的消息将会按照OpenAPI的接口定义以Json格式推送到开发者配置URL。
图11 应用端服务器配置
3.1.1登录公众平台,点击"设备功能",进入"设置"页面 3.1.2点击"修改配置"按钮,进入服务器配置填写页面。填写服务器地址(URL)、Token和EncodingAESKey。 其中URL是开发者用来接收微信互联设备消息和事件的接口URL。 Token可由开发者任意填写,用作生成签名(该Token会和接口URL中包含的Token进行对比,从而验证安全性)。 EncodingAESKey由开发者手动填写或随机生成,将用作消息体加解密密钥。 3.1.3选择消息加密方式:明文模式、兼容模式和安全模式。 (目前建议直接选择明文模式即可) 模式的选择与服务器配置在提交后会立即生效,请开发者谨慎填写及选择。加解密方式的默认状态为明文模式,选择兼容模式和安全模式需提前配置好相关加解密代码,详情请参考消息体签名及解密部分的文档。 3.2后台接口调试 3.2.1设备授权 调用 设备授权新接口,获取deviceid和二维码,然后利用获取到的deviceid更新设备属性(如mac地址,connect_protocol等)。 获取到的二维码即为一机一码,设备厂商利用二维码生成器把获取到的二维码串生成为二维码,用户扫描该二维码后,关注厂商公众号,即可绑定设备。 注意:
  • 设备授权时必须填上productid。
  • 利用deviceid更新设备属性时,ble_simple_protocol请勿填写,op_type填1。
3.2.2接收设备绑定/解绑事件 用户扫描一机一码,关注厂商公众号,即可绑定设备,此时厂商会接收到微信硬件平台推送的绑定事件。绑定关系即deviceid(设备id)与openid(用户id)的关系。若用户解绑设备,厂商会收到解绑事件。 具体接口为 接收设备绑定解绑事件 3.2.3其他API 微信消息长按转发特性并不依赖于后台接口其余的API,但厂商仍可调用,以下举例说明。 获取设备绑定openid: 通过device type和device id获取设备主人的openid。 通过openid获取用户绑定的deviceid WiFi设备连接状态实时查询 调用该接口可以在公众号顶部显示wifi设备的连接状态,若wifi设备已连网,则会显示"已连接",若未连网则会显示"未连接"。
若厂商不希望在公众号顶部显示该连接状态,可以在mp平台—设备功能—设置中关闭该状态显示。

4.openAPI调试(该API用于云端转发消息给设备)

微信硬件平台和设备云端URL消息交互,分成三种消息类型:
  • 微信硬件平台查询设备消息:当微信硬件平台侧需要查询设备信息的时候,微信硬件平台将会POST查询消息发送到设备云端URL上,设备云端收到请求后,立即返回成功收到请求。待设备云端异步查询成功后,将查询结果POST给微信硬件平台。
  • 微信硬件平台设置设备消息:当微信硬件平台侧需要设置设备信息的时候,微信硬件平台将会POST设置消息发送到设备云端URL上,接入者收到请求后,立即返回成功收到请求。待设备云端异步设置设备成功后,将设置结果POST给微信硬件平台。
  • 设备云端通知微信硬件平台消息:当设备状态有变化或者有消息需要通知微信硬件平台侧时候,设备云端POST消息给微信硬件平台。微信硬件平台立即返回成功收到请求。待微信硬件平台将消息处理成功后,将处理消息成功的行为POST给设备云端URL上。
  • 4.1设备查询(GET) 硬件云端以POST方式推送JSON格式的查询消息到设备厂商云端,设备厂商云端收到请求后先回复收到请求,当设备厂商查询好设备数据后,使用POST方式响应微信查询结果。 4.1.1查询请求(Request) 微信硬件云端向设备厂商发起POST查询请求,POST的JSON格式为:
{
    "device_id": "device_id",
    "device_type": "device_ type",
    "msg_id": 1234567890123456,
    "user": "user", // operator操作者唯一标识ID
    "msg_type": "get", //区分消息类型字段
    "services": { //内容为具体的能力项和能力属性
        "operation_status": {
            "status": 0
        },
        ...
    }
}
请设备厂商云端收到请求后应立即回包,否则微信硬件云端会重试上面的POST请求。 回包格式为:
{
    "error_code": 0,
    "error_msg": "ok"
}
接收方处理完业务后,异步返回查询结果,具体方法请见下节。
标签 类型 取值限制 含义
device_id string 设备DEVICE_ID或者子设备DEVICE_ID编码,唯一标识设备
device_type string 设备类型,目前为"公众账号原始ID"
msg_id int64 64位整型 消息序列号,用于异步通信,用于异步通信,由微信生成,接收方异步返回的时候带上
user string operator操作者唯一标识ID
msg_type string get 消息类型命令字,get代表设备查询消息
services string   能力项键集合(定义详见附录)
operation_status string   要求异步必须返回运行状态能力项服务
status int8   要求异步必须返回运行状态能力项属性
error_code int16   厂商是否成功接收,0代码成功(其它错误码见附录)
error_msg string   厂商返回成功接收的信息
表4 查询请求参数说明
4.1.2查询响应(Response) 设备厂商云端查询完设备后,将结果POST给微信云端URL,JSON格式:
{
    "asy_error_code": 0,
    "asy_error_msg": "ok",
    "device_id": "device_id",
    "device_type": "device_ type",
    "msg_id": 1234567890123456,
    "msg_type": "get",
    "services": {
        "operation_status": {
            "status": 0
        },
        ...
    }
}
微信硬件云端成功处理后将会回复:
{
    "error_code": 0,
    "error_msg": "ok"
}
stringstringint64string
字段 类型 取值范围 描述
asy_error_code int16   设备厂商异步查询结果,0代表厂商异步查询成功,其他错误请见附录
asy_error_msg string   设备厂商异步查询结果的,消息文本描述
device_id   和请求体里面device_id一致  
device_type   和请求体里面device_type一致  
msg_id   和请求体里面msg_id一致  
user   和请求体里面user一致  
msg_type string 和请求里面的msg_type一样,为get  
services string   能力项键集合(定义详见附录)
operation_status string   返回运行状态能力项服务
status int8   返回运行状态能力项属性
error_code int16   0代表微信平台成功接收厂商的异步设置(其他错误码见附录)
error_msg string   错误消息文本描述
表5 查询响应参数说明
4.1.3举例 微信硬件云端发起查询请求向硬件开发者云端查询设备数据:
{
    "device_id": "device_id",
    "device_type": "device_ type",
    "msg_id": 1234567890123456,
    "user": "user",
    "msg_type": "get",
    "services": {
        "operation_status": {
        "status": 0
    },
    "wxmsg_music": {
        "artist": "",
        "url": "",
        "data_url": "",
        "low_data_url": ""
    }
}
设备厂商云端收到请求后,应当立即返回:
{
    "error_code": 0,
    "error_msg": "ok"
}
设备厂商云端查询成功后,POST数据给微信硬件云端URL:
{
    "asy_error_code": 0,
    "asy_error_msg": "ok",
    "device_id": "device_id",
    "device_type": "device_ type",
    "msg_id": 1234567890123456,
    "msg_type": "get",
    "services": {
        "operation_status": {
            "status": 1
        },
        "wxmsg_music": {
            "artist": "artist",
            "url": "url",
            "data_url": "data_url",
            "low_data_url": "low_data_url"
        }
    }
}
微信硬件云端返回:
{
    "error_code": 0,
    "error_msg": "ok"
}
4.2设备控制 微信硬件云端服务器POST设置消息到设备厂商,设备厂商立即回复收到,当设备厂商云端设置成功后,发送响应消息通知微信硬件云端已经成功处理。 4.2.1设置请求(Request) 微信POST设置消息给硬件开发者云端URL,JSON格式:
{
    "device_id": "device_id",
    "device_type": "device_ type",
    "msg_id": 1234567890123456,
    "user": "user",
    "msg_type": "set",
    "services": {
       ...
    }
}
请设备厂商云端收到请求后应立即回包,否则微信硬件云端会重试上面的POST请求。 回包格式为:
{
    "error_code": 0,
    "error_msg": "ok"
}
接收方处理完业务后,异步返回设置结果,具体方法请见下节。
标签 类型 取值限制 含义
device_id string 设备DEVICE_ID或者子设备DEVICE_ID编码,唯一标识设备
msg_id int64 64位整型 消息序列号,用于异步通信,由微信生成,接收方异步返回的时候带上
device_type string 设备类型,目前为"公众账号原始ID"
user string operator操作者唯一标识ID
msg_type string set 消息类型命令字,set代表设备控制消息
services string   能力项键集合(定义详见附录)
error_code int16   厂商是否成功接收,0代码成功(其他错误码见附录)
error_msg string   厂商返回成功接收的信息
表6 设置请求参数说明
4.2.2设置响应(Response) 设备端查询完设备后,将结果POST给微信硬件云端URL, JSON格式:
{
    "asy_error_code": 0,
    "asy_error_msg": "ok",
    "device_id": "device_id",
    "device_type": "device_ type",
    "msg_id": 1234567890123456,
    "msg_type": "set",
    "services": {
        "operation_status": { //必须返回运行状态能力项服务
            "status": 1//必须返回运行状态能力项属性
         },
        ...
    }
}
微信硬件云端成功处理后将会回复:
{
    "error_code": 0,
    "error_msg": "ok"
}
标签 类型 取值限制 含义
asy_error_code int16   设备厂商异步设置结果,其他错误请见附录
asy_error_msg string   设备厂商异步查询结果的,消息文本描述
device_id string 和请求体里面device_id一致  
device_type string 和请求体里面device_type一致  
msg_id int64 和请求体里面msgi_id一致  
user string 和请求体里面user一致  
msg_type string 和请求里面的msg_type一样,为set  
services string   能力项键集合(定义详见附录)
operation_status string   必须返回运行状态能力项服务
status int8   必须返回运行状态能力项属性
error_code int16   0代表微信平台成功接收厂商的异步设置,(其他错误码见附录)
error_msg string   错误消息文本描述
表7 设置响应参数说明
4.2.3举例 例一, 微信硬件云端向设备厂商云端发送微信音乐消息:
{
    "device_id": "device_id",
    "device_type": "device_ type",
    "msg_id": 1234567890123456,
    "user": "user",
    "msg_type": "set",
    "services": {
        "wxmsg_music": {
            "artist": "artist",
            "url": "url",
            "data_url": "data_url",
            "low_data_url": "low_data_url"
        }
    }
}
设备厂商云端接收到请求后响应:
{
    "error_code": 0,
    "error_msg": "ok"
}
设备厂商云端处理成功后,POST数据给微信硬件云端URL:
{
    "asy_error_code": 0,
    "asy_error_msg": "ok",
    "device_id": "device_id",
    "device_type": "device_ type",
    "msg_id": 1234567890123456,
    "msg_type": "set",
    "services": {
        "operation_status": {//必须返回运行状态能力项服务
        "status": 1//必须返回运行状态能力项属性
    },
    "wxmsg_music": {
        "artist": "artist",
        "url": "url",
        "data_url": "data_url",
        "low_data_url": "low_data_url"
    }
}
微信硬件云端返回:
{
    "error_code": 0,
    "error_msg": "ok"
}
例二,微信硬件云端向设备厂商云端端发送地图消息:
{
    "device_id": "device_id",
    "device_type": "device_ type",
    "msg_id": 1234567890123456,
    "user": "user",
    "msg_type": "set",
    "services": {
        "wxmsg_poi": {
            "latitude": 1.20000004768,
            "longitude": 1.29999995232,
            "scale": 1.29999995232,
            "label": "lable"
         }
    }
}
设备厂商接收到请求后返回:
{
    "error_code": 0,
    "error_msg": "ok"
}
设备厂商设置成功后,POST数据给微信硬件云端:
{
    "asy_error_code": 0,
    "asy_error_msg": "ok",
    "device_id": "device_id",
    "device_type": "device_ type",
    "msg_id": 1234567890123456,
    "msg_type": "set",
    "services": {
        "operation_status": {//必须返回运行状态能力项服务
        "status": 1//必须返回运行状态能力项属性
    },
    "wxmsg_poi": {
        "latitude": 1.20000004768,
        "longitude": 1.29999995232,
        "scale": 1.29999995232,
        "label": "lable"
    }
}
微信硬件云端返回:
{
    "error_code": 0,
    "error_msg": "ok"
}
4.3状态变更通知(NOTIFY) 当设备有事件发生或者有消息,需要通知到微信硬件云端的时候,设备通过设备厂商云端发送消息到微信硬件云端。微信硬件云端立即回复成功收到消息给设备云厂商。当微信硬件云端处理消息成功后,将处理消息成功的行为,POST给设备云厂商。 对应微信云端API的URL:
https://api.weixin.qq.com/hardware/mydevice/platform/notify?access_token=xxxx
参数 是否必填 备注
access_token 必填 公众号access_token,详见http://mp.weixin.qq.com/wiki/2/88b2bf1265a707c031e51f26ca5e6512.html
表8 数据接口API参数说明
4.3.1通知请求(Request) 设备厂商云端POST方式推送消息给微信硬件云端服务器,JSON格式:
{
    "device_id": "device_id",
    "device_type": "device_ type",
    "msg_type": "notify",
    "services": {
        "operation_status": {
            "status": 1
        },
        ...
    }
}
微信硬件云端响应JSON格式包,里面带有本次notify的唯一标识msg_id:
{
    "error_code": 0,
    "error_msg": "ok",
    "msg_id": 1234567890123456
}
标签 类型 取值限制 含义
device_id string 设备DEVICE_ID或者子设备DEVICE_ID编码,唯一标识设备
device_type string 设备类型,目前为"公众账号原始ID"
msg_id int64 64位整型 消息序列号,用于异步通信,微信生成,厂家通知完之后,微信返回ack包里面会带有msg_id
msg_type string notify 消息类型命令字,notify代表通知消息
mandatory_services string   通知微信侧,必须带有能力项集合
operation_status string   通知微信侧,必须带有运行状态能力项服务
status int8   通知微信侧,必须带有运行状态能力项属性
services string   能力项键值集合
error_code int16   微信是否成功接收,0代码成功(其他错误码见附录)
error_msg string   微信返回成功接收的信息
表9 状态变更通知请求参数说明
4.3.2通知响应(Response) 微信硬件云端将数据成功处理后,将成功处理的行为POST给设备厂商云端,JSON格式:
{
    "asy_error_code": 0,
    "asy_error_msg": "ok",
    "device_id": "device_id",
    "device_type": "device_ type",
    "msg_id": 1234567890123456,
    "msg_type": "notify",
    "services": {
        "operation_status": {
            "status": 1
        }
       ...
    }
}
设备厂商云端应当返回:
{
    "error_code": 0,
    "error_msg": "ok"
}
标签 类型 取值限制 含义
asy_error_code int16   设备厂商异步设置结果,其他错误请见附录
asy_error_msg string   设备厂商异步查询结果的,消息文本描述
device_id string 和请求体里面device_id一致  
device_type string 和请求体里面device_type一致  
msg_id int64 和微信返回请求体里面的msgi_id一致  
msg_type string 和请求里面的msg_type一样,为notify  
mandatory_services string 和请求里面的mandatory_services一样  
operation_status string 和请求里面的operation_status一样  
status int8 和请求里面的status一样  
services string 和请求里面的services一样  
表10 状态变更通知响应参数说明
4.3.3举例 设备通知微信硬件云端: 设备厂商云端通知微信:
{
    "device_id": "device_id",
    "device_type": "device_ type",
    "msg_type": "notify",
    "services": {
        "operation_status": {
        "status": 1
     },
    "wxmsg_music": {
        "artist": "artist",
        "url": "url",
        "data_url": "data_url",
        "low_data_url": "low_data_url"
    }
}
微信硬件云端收到后立即回复:
{
    "error_code": 0,
    "error_msg": "ok"
    "msg_id": 1234567890123456
}
微信硬件云端将数据成功处理后,将结果POST给设备厂商云端:
{
    "asy_error_code": 0,
    "asy_error_msg": "ok",
    "device_id": "device_id",
    "device_type": "device_ type",
    "msg_id": 1234567890123456,
    "msg_type": "notify",
    "services": {
        "operation_status": {
            "status": 1
        },
        "wxmsg_music": {
            "artist": "artist",
            "url": "url",
            "data_url": "data_url",
            "low_data_url": "low_data_url"
        }
    }
}
设备厂商云端收到后返回:
{
    "error_code": 0,
    "error_msg": "ok"
}
4.4附录 4.4.1ERROR_CODE
取值 描述
0 请求成功
-1 系统繁忙,此时请开发者稍候再试
11000 未注册到微信平台,参考接入须知
11001 URL参数不合法
11002 POST数据不合法
11003 signature不合法,请参考接入须知signature生成规则
11004 缺少必选能力项/属性值
11005 异步通知的device_id和请求的device_id不一致
11006 device_id不合法,请注册device_id
11007 异步通知的msg_type和请求的msg_type不一致
11008 msg_id的相关的会话已经关闭
表11 ERROR_CODE定义
4.4.2ASY_ERROR_CODE
取值 描述
0 厂家异步处理成功
11500 系统繁忙
11501 设备没联网
11502 设备已经关机
11503 设备暂时无法操作,请微信平台稍后重试
表12 ASY_ERROR_CODE定义
4.4.3自助调试工具 调试阶段,厂商可以自助发送消息给微信硬件云端,微信硬件云端将消息转发到厂商接入的URL上(参见接入须知), 微信硬件云端上自助工具的地址:
https://api.weixin.qq.com/hardware/mydevice/platform/sendmsgtodevicecloud?access_token=xxxx
POST内容为JSON,硬件平台将对JSON内容进行检验,并将内容转发到厂商云端。 curl自助工具举例:
curl -X POST -H "Content-Type: application/json" -H "Cache-Control: no-cache" -d ‘{"device_id":"xxxxx","device_type":"xxxxx","user":"openid","msg_id":1234567890123456,"msg_type":"set","services":{"wxmsg_music":{"title":"title","artist":"artist","url":"url","data_url":"data_url","low_data_url":"low_data_url"}}}’ ‘ http://api.weixin.qq.com/hardware/mydevice/platform/sendmsgtodevicecloud?access_token=xxxx
微信云端响应
{
    "error_code": 0,
    "error_msg": "ok"
}
表示校验JSON成功。 备注:如果校验JSON不成功,还是会将数据透传给设备厂商云端。

5.SDK开发(兼容SDK则支持近场转发微信消息)

5.1 Android SDK下载链接 5.2Android版本使用说明 对于运行于Android系统的设备,微信提供对应的SDK(.so库)且不依赖于设备所使用的Android版本,开发者只需要将SDK动态库和API类文件加载到App中即可,目前文件包括:libairkiss3.so, libstlport_shared.so,/com/tencent/wechat/AirKiss3.java共3个文件,注意不得修改包名及方法名否则动态库无法使用,SDK运行中会通过Logcat打印数据,使用过程中遇到问题可以把log导出。详细的工程和代码示例请参考HelloJni工程,可以通过Eclipse直接import的方式导入:
动态库和接口文件在工程中的结构如下:
5.2.1加载动态库 由于SDK需要用到网络,如果是新建工程记得在xml中添加网络权限。设备App启动以后,需要加载对应的动态库,如果App有Application入口,可以放在Application入口处:
5.3API接口说明 5.3.1初始化设备函数 设备初始化函数用于给设备分配内存空间,初始化参数。初始化成功后,结束时必须调用释放设备函数,防止内存泄漏。
接口原型 public static native long deviceInit(String deviceType, String deviceId, String deviceName, int services, short port)
参数 String deviceType 设备类型,一般指公众号名字,形如gh_XXXXXXXX
  String deviceId 设备授权时的设备Id
  String deviceName 设备名字,可不填
  int services 设备支持的服务类型,可同时支持多个。位值见附录1设备服务类型
  short port 设备监听的tcp服务端口
返回值 long 初始化成功则返回设备句柄,失败则返回0
5.3.2释放设备函数 释放设备函数用于给释放设备初始化时分配的内存空间。
接口原型 public static native void deviceFree(long deviceHandle)
参数 long deviceHandle 设备初始化时返回的设备句柄
返回值  
5.3.3开启设备服务函数
接口原型 public static native int deviceStart(long deviceHandle)
参数 long deviceHandle 设备初始化时返回的设备句柄
返回值 int 启动成功返回0,启动失败返回负值
5.3.4停止设备服务函数
接口原型 public static native void deviceStop(long deviceHandle)
参数 long deviceHandle 设备初始化时返回的设备句柄
返回值  
5.3.5设备通知函数
接口原型 public static native void deviceNotify(long sessionId , String notifyData)
参数 long sessionId 设备初始化时返回的会话句柄
  notifyData 目前只支持JSApi数据。格式见附录2设备通知数据格式
返回值  
5.3.6设备事件回调函数 注意:设备事件回调函数,由运行于JNI层的线程来调用,建议此回调函数中不要直接处理业务,而是将数据发送给工作线程来处理
接口原型 public static void onDeviceCallback(long deviceHandle, int event, int error, byte[] data, long sessionId)
参数 long deviceHandle 设备初始化时返回的设备句柄
  int event 设备回调的事件类型,详见附录3回调事件类型及数据格式
  int error 出错回调时的错误码
  byte[] data 回调事件时的数据,详见附录3回调事件类型及数据格式
  long sessionId 产生回调的会话句柄
返回值  
5.4附录 附录1 设备服务类型
取值 描述
0x01 AK3_SERVICE_WECHAT_MUSIC : 支持接收音乐消息
0x02 AK3_SERVICE_WECHAT_FILE : 支持接收文件
0x04 AK3_SERVICE_WECHAT_POI : 支持接收POI位置消息
0x08 AK3_SERVICE_WECHAT_JSAPI : 支持JSApi功能
附录2 设备通知数据格式
{
    "services": {
        "wxmsg_jsapi": {
            "data": "aGVsbG8gd29ybGQ="
        }
    }
}
附录3 回调事件类型及数据格式
取值 描述 数据格式
-2 AK3_EVENT_TCP_DISCONNECTED 无,sessionId为断开连接的会话句柄
-1 AK3_EVENT_ERROR
1 AK3_EVENT_WECHAT_MUSIC JSON格式(安卓为UTF-8编码的字符串) { "device_id": "device_id", "device_type": "device_type", "msg_id": 1234567890123456, "user": "operator操作者ID", "msg_type": "set", "services": { "wxmsg_music": { "artist": "artist", "url": "url", "data_url": "data_url", "low_data_url": "low_data_url", "title": "title" } } }
2 AK3_EVENT_WECHAT_FILE JSON格式(安卓为UTF-8编码的字符串) { "device_id":"personalHardware1", "device_type":"gh_133118144c31", "user":"oAAAAADGHlE23OmJrGZ-tjQjI99E", "msg_id":36985, "msg_type":"set", "services":{ "wxmsg_file":{ "type":"pdf", "name":"ch03.pdf", "size":858571, "md5":"74a86f3b763f19f3d88a13783346532c" } } }
3 AK3_EVENT_WECHAT_FILE_DATA 二进制数据
4 AK3_EVENT_WECHAT_POI JSON格式(安卓为UTF-8编码的字符串) { "device_id": "device_id", "device_type": "device_type", "user": "operator操作者ID", "msg_id": 1234567890123456, "msg_type": "set", "services": { "wxmsg_poi": { "latitude": 1.20000004768, "longitude": 1.29999995232, "scale": 1.29999995232, "label": "lable" } } }
5 AK3_EVENT_WECHAT_JSAPI_OPEN JSON格式(安卓为UTF-8编码的字符串) { "services": { "wxmsg_jsapi": { "cmd": "open" } } }
6 AK3_EVENT_WECHAT_JSAPI_CLOSE JSON格式(安卓为UTF-8编码的字符串) { "services": { "wxmsg_jsapi": { "cmd": "close" } } }
7 AK3_EVENT_WECHAT_JSAPI_DATA JSON格式(安卓为UTF-8编码的字符串) { "services": { "wxmsg_jsapi": { "data": "aGVsbG8gd29ybGQ=" } } }
8 AK3_EVENT_TCP_ACCEPTED 无,sessionId为建立连接的会话句柄


返回
有心意 更有新意
欢迎拨打
  0715-8237299
Copyright © 2002-2017 UNIHUB. 优创科技 版权所有 Power by Unihub