调用微信jsapi完成公众号蓝牙蓝牙传输功能(测试版)
一、第一阶段:首先要在微信测试号申请一个产品(得到产品的id号)
二、 第二阶段:微信后台基本设置,需要通过在线接口调试去设置
-
回到微信主页,依次点击"开发者工具"进入“在线接口调试工具”(http://mp.weixin.qq.com/debug)
-
在“在线接口调试工具”页面按照如图所示填入自己在第一阶段的测试账号的appID和appsecret的内容(吐槽:一会儿又appID,这里又appid,上面appsecret这里secret,就不能规范一点吗?):
并点击检查问题(吐槽:其实就是提交请求的设置,不知道为什么按钮名称会叫“检查问题”)。点击后倘若成功的话会在页面下面返回有如图所示的包含access_token的字段信息(若返回了error,请仔细检查appID和appsecret是否都写对了,这里要写测试账号的哦,因为我们第一阶段的设置都是设置的测试账号的):
-
向上滚动鼠标到这个界面,并填写如图所示内容,其中的access_token填写刚才获取到的那个字符串并在末尾加上&product_id=21816(注意,这个数字是在第一阶段的第7步所得到的那个,这里的21816是我自己的,需要填写自己对应的那个)。
同样,点击“检查问题”,得到如下图所示的内容:
-
向上滚动鼠标到这个界面,并填写如图所示内容,其中的access_token栏会自动根据你上次操作而自动填写上,这里可以把“&product_id=21816”这几个字符删除。若没有自动填写,那就手动填写一下步骤2获取到的access_token值吧。
body填写的是一个json对象,目的是把你的蓝牙设备在微信后台进行注册,不然微信到时候是不会自动去连接你的蓝牙设备的。
body内容及参数解释:
{
"device_num": "1", //这里填写注册设备的个数,必须和device_list中的
"device_list": [
{
"id": "gh_dd58c7bef8e7_b00fef105fd4269f", //填写步骤3获取到的deviceid
"mac": "209148B74D40", //填写你的设备的mac地址(注意,不要写":")
"connect_protocol": "3", //下面的参数及解释就自行查看官方说明了
"auth_key": "",
"close_strategy": "1",
"conn_strategy": "1",
"crypt_method": "0",
"auth_ver": "0",
"manu_mac_pos": "-1",
"ser_mac_pos": "-2"
}
],
"op_type": "0", //0表示新注册设备信息,1表示更新(修改)设备信息,当要修改的时候就写1。
"product_id": "21543"//填写设备所属的产品id,就是第一阶段所添加的那个产品的product_id
}
然后点击“检查问题”,得到如下回复:
倘若得到的回复是error alredy exist的失败字样,可以把op_type的值更改为“1”。若出现account quota not enough,请检查product_id是否填写正确。
-
进入百度搜索“在线二维码”,根据个人喜好选择一个二维码平台,制作二维码。这里选择的是“草料二维码”,如图:
图中红色的url是步骤3获取到的qrticket。复制填入即可。然后点击“生成二维码”即可,然后图中右边的就是该设备的绑定二维码,用微信扫描,并点击“绑定设备”,然后点击“进入公众号”。这个时候在公众号(测试号)顶部标题栏会显示灰白色的“连接中”或“已连接1个设备”等相关信息(记得打开手机蓝牙和蓝牙外设)。
三、第三阶段:调用微信jsapi进行数据传输(前两个都是准备阶段)
wx.ready(function(){
//初始化设备
wx.invoke('openWXDeviceLib', {'brandUserName':'测试号的appid'}, function(res){});
//连接蓝牙
wx.invoke('connectWXDevice', {
'deviceId' :
设备的授权id(生成二维码时候一同出现的)
,
'connType' : 'ble'
}, function(res) {
//alert(JSON.stringify(res));
//向蓝牙发送命令
wx.invoke(
'sendDataToWXDevice',
{
'deviceId' : 设备的授权id(生成二维码时候一同出现的),
'connType' : 'ble',
'base64Data' : '要发送的数据'
}, function(res) {
var data=JSON.stringify(res);
var json = eval("(" + data + ")");
//alert(json.err_msg);
if(json.err_msg=="sendDataToWXDevice:ok"){
//接收到设备传来的数据
wx.on('onReceiveDataFromWXDevice',function(res) {
//alert(JSON.stringify(res));
var data = JSON.stringify(res);
var json = eval("(" + data + ")");
alert(json.base64Data);
});
}else{
alert("错误提示!");
}
});
});
//错误提示
wx.error(function(res){
alert("wx.error错误:"+JSON.stringify(res));
//如果初始化出错了会调用此方法,没什么特别要注意的
});
});