1.引入JS庫
<script type=`text/javascript` src=`//res.wx.qq.com/open/js/jweixin-1.0.0.js`></script>
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 的編解碼。
這裡,我用到一個庫:
<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除錯工具實現。