资讯专栏INFORMATION COLUMN

微信硬件JS-Api开发不完全指南

villainhr / 1618人阅读

摘要:这里,我用到一个库出处你要发送的数据回调发消息到设备发送消息的结果已发送请查看控制板说明需要在微信对应设备号内才能使用对应的。

1.引入JS库

 

2.为页面注入配置信息

wx.config({
    beta: true, // 开启内测接口调用,注入wx.invoke方法,非常重要!!必须有这个
    debug: true,//开启调试接口,alert运行结果
    appId: "",//必填,公众号的唯一标识,
    timestamp: "",//必填,生成签名的时间戳
    nonceStr: "",//必填,生成签名的随机串
    signature: "",//必填,签名
    jsApiList: []//要调用的js函数,必须把函数名字写入数组
});

这里我的jsApiList为

jsApiList: [
            "openWXDeviceLib",//初始化设备库(只支持蓝牙设备)
            "closeWXDeviceLib",//关闭设备库(只支持蓝牙设备)
            "getWXDeviceInfos",//获取设备信息(获取当前用户已绑定的蓝牙设备列表)
            "sendDataToWXDevice",//发送数据给设备
            "startScanWXDevice",//扫描设备(获取周围所有的设备列表,无论绑定还是未被绑定的设备都会扫描到)
            "stopScanWXDevice",//停止扫描设备
            "connectWXDevice",//连接设备
            "disconnectWXDevice",//断开设备连接
            "getWXDeviceTicket",//获取操作凭证
            "onWXDeviceBindStateChange",//微信客户端设备绑定状态被改变时触发此事件
            "onWXDeviceStateChange",//监听连接状态,可以监听连接中、连接上、连接断开
            "onReceiveDataFromWXDevice",//接收到来自设备的数据时触发
            "onScanWXDeviceResult",//扫描到某个设备时触发
            "onWXDeviceBluetoothStateChange",//手机蓝牙打开或关闭时触发
        ]

如果想要测一下微信版本是不是支持这几个api,可以这样写:

 wx.checkJsApi({
    jsApiList: ["openWXDeviceLib", "onScanWXDevicesResult", "getWXDeviceInfos"], // 需要检测的JS接口列表,所有JS接口列表见附录2,
    success: function (res) {
        console.log(res);

    }
});

3.初始化设备库函数

通过ready接口处理成功验证

wx.ready(function () {          
    wx.invoke("openWXDeviceLib", {connType: "blue"}, function (res) {
        console.debug("openWXDeviceLib重新打开设备库==>");
        console.log(res);
    });
})

坑:重新扫描设备根本什么都扫不出来,即使是刷新页面也不顶用

解决方法:每次扫描前,先调用closeWXDeviceLib关闭设备库,再调用openWXDeviceLib打开设备库。这样就相当于重新初始化了一遍设备库,你现在再重新扫描,就可以扫描到设备了。

代码:

wx.invoke("stopScanWXDevice", {}, function (res) {
    console.debug("stopScanWXDevice");
    console.log(res);
 });
wx.invoke("closeWXDeviceLib", {}, function (res) {
    console.debug("closeWXDeviceLib关闭设备库==>");
    console.log(res);
});

wx.invoke("openWXDeviceLib", {connType: "blue"}, function (res) {
    console.debug("openWXDeviceLib重新打开设备库==>");
    console.log(res);
});

4.监听设备返回的信息

wx.on("onReceiveDataFromWXDevice", function (res) {
    console.warn("onReceiveDataFromWXDevice=>");
    console.log(JSON.stringify(res));
});

5.发送消息到设备

收发数据前需进行 base64 的编解码。
这里,我用到一个库:

    

出处:
https://github.com/dankogai/j...

var data={"deviceId":deviceId,"base64Data": Base64.encode("你要发送的数据")};
console.log(data);
wx.invoke("sendDataToWXDevice",data , function(res){
    //回调
    console.info("发消息到设备sendMsg");
    console.log(data);
    console.log(res);
    $("#dataFromDevice").append("发送消息的结果:"+JSON.stringify(res));
    alert("已发送 请查看控制板");
});

说明:

1.需要在微信对应设备号内才能使用对应的api。

2.必须要在设备号设置的安全域名下才能正常使用api

3.本篇内所有的console.log 等输出到控制台 都是用的vconsole调试工具实现。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/81427.html

相关文章

  • 微信硬件JS-Api开发完全指南

    摘要:这里,我用到一个库出处你要发送的数据回调发消息到设备发送消息的结果已发送请查看控制板说明需要在微信对应设备号内才能使用对应的。 1.引入JS库 2.为页面注入配置信息 wx.config({ beta: true, // 开启内测接口调用,注入wx.invoke方法,非常重要!!必须有这个 debug: true,//开启调试接口,alert运行结果 app...

    Tony_Zby 评论0 收藏0
  • Nginx

    摘要:此外,其也能够提供强大的反向代理功能。是由为俄罗斯访问量第二的站点开发的,第一个公开版本发布于年月日。 keepalived+nginx 实现高可用双机热备 + 负载均衡架构 1 准备4个ubuntu16.04虚拟机(启用网卡二并使用桥接模式):A服务器:192.168.0.103 主B服务器:192.168.0.104 主(备) 前端工程师学习 Nginx ...

    syoya 评论0 收藏0
  • Python入门深度学习完整指南

    摘要:通过书籍学习,比如除了上述的先学知识,你还应该了解一些流行的深度学习库和运行他们的语言。你也可以查看查看的中的第讲,概要性的了解一些深度学习库。 作者:chen_h微信号 & QQ:862251340微信公众号:coderpai简书地址:https://www.jianshu.com/p/cd0... 原文:https://www.analyticsvidhya.c... 介绍 ...

    ztyzz 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<