微信硬件JS-Api開發不徹底指南

1.引入JS庫javascript

<script type='text/javascript' src='//res.wx.qq.com/open/js/jweixin-1.0.0.js'></script>

2.爲頁面注入配置信息java

wx.config({
    beta: true, // 開啓內測接口調用,注入wx.invoke方法,很是重要!!必須有這個
    debug: true,//開啓調試接口,alert運行結果
    appId: '',//必填,公衆號的惟一標識,
    timestamp: '',//必填,生成簽名的時間戳
    nonceStr: '',//必填,生成簽名的隨機串
    signature: '',//必填,簽名
    jsApiList: []//要調用的js函數,必須把函數名字寫入數組
});

這裏個人jsApiList爲git

jsApiList: [
            'openWXDeviceLib',//初始化設備庫(只支持藍牙設備)
            'closeWXDeviceLib',//關閉設備庫(只支持藍牙設備)
            'getWXDeviceInfos',//獲取設備信息(獲取當前用戶已綁定的藍牙設備列表)
            'sendDataToWXDevice',//發送數據給設備
            'startScanWXDevice',//掃描設備(獲取周圍全部的設備列表,不管綁定仍是未被綁定的設備都會掃描到)
            'stopScanWXDevice',//中止掃描設備
            'connectWXDevice',//鏈接設備
            'disconnectWXDevice',//斷開設備鏈接
            'getWXDeviceTicket',//獲取操做憑證
            'onWXDeviceBindStateChange',//微信客戶端設備綁定狀態被改變時觸發此事件
            'onWXDeviceStateChange',//監聽鏈接狀態,能夠監聽鏈接中、鏈接上、鏈接斷開
            'onReceiveDataFromWXDevice',//接收到來自設備的數據時觸發
            'onScanWXDeviceResult',//掃描到某個設備時觸發
            'onWXDeviceBluetoothStateChange',//手機藍牙打開或關閉時觸發
        ]

若是想要測一下微信版本是否是支持這幾個api,能夠這樣寫:github

wx.checkJsApi({
    jsApiList: ['openWXDeviceLib', 'onScanWXDevicesResult', 'getWXDeviceInfos'], // 須要檢測的JS接口列表,全部JS接口列表見附錄2,
    success: function (res) {
        console.log(res);

    }
});

3.初始化設備庫函數api

經過ready接口處理成功驗證數組

wx.ready(function () {          
    wx.invoke('openWXDeviceLib', {connType: 'blue'}, function (res) {
        console.debug('openWXDeviceLib從新打開設備庫==>');
        console.log(res);
    });
})

坑:從新掃描設備根本什麼都掃不出來,即便是刷新頁面也不頂用安全

解決方法:每次掃描前,先調用closeWXDeviceLib關閉設備庫,再調用openWXDeviceLib打開設備庫。這樣就至關於從新初始化了一遍設備庫,你如今再從新掃描,就能夠掃描到設備了。微信

代碼:app

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 的編解碼。
這裏,我用到一個庫:

<script type='text/javascript' src='base64.js'></script>

出處:
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調試工具實現。

相關文章
相關標籤/搜索