1.引入JS庫
?<script type='text/javascript' src='//res.wx.qq.com/open/js/jweixin-1.0.0.js'></script>
2.為頁麵注入配置信息
wx.config({ ????beta:?true,?//?開啟內(nèi)測接口調(diào)用,注入wx.invoke方法,非常重要!!必須有這個(gè) ????debug:?true,//開啟調(diào)試接口,alert運(yùn)行結(jié)果 ????appId:?'',//必填,公眾號(hào)的唯一標(biāo)識(shí), ????timestamp:?'',//必填,生成簽名的時(shí)間戳 ????nonceStr:?'',//必填,生成簽名的隨機(jī)串 ????signature:?'',//必填,簽名 ????jsApiList:?[]//要調(diào)用的js函數(shù),必須把函數(shù)名字寫入數(shù)組 });
這裡我的jsApiList為
jsApiList:?[ ????????????'openWXDeviceLib',//初始化設(shè)備庫(只支持藍(lán)牙設(shè)備) ????????????'closeWXDeviceLib',//關(guān)閉設(shè)備庫(只支持藍(lán)牙設(shè)備) ????????????'getWXDeviceInfos',//獲取設(shè)備信息(獲取當(dāng)前用戶已綁定的藍(lán)牙設(shè)備列表) ????????????'sendDataToWXDevice',//發(fā)送數(shù)據(jù)給設(shè)備 ????????????'startScanWXDevice',//掃描設(shè)備(獲取周圍所有的設(shè)備列表,無論綁定還是未被綁定的設(shè)備都會(huì)掃描到) ????????????'stopScanWXDevice',//停止掃描設(shè)備 ????????????'connectWXDevice',//連接設(shè)備 ????????????'disconnectWXDevice',//斷開設(shè)備連接 ????????????'getWXDeviceTicket',//獲取操作憑證 ????????????'onWXDeviceBindStateChange',//微信客戶端設(shè)備綁定狀態(tài)被改變時(shí)觸發(fā)此事件 ????????????'onWXDeviceStateChange',//監(jiān)聽連接狀態(tài),可以監(jiān)聽連接中、連接上、連接斷開 ????????????'onReceiveDataFromWXDevice',//接收到來自設(shè)備的數(shù)據(jù)時(shí)觸發(fā) ????????????'onScanWXDeviceResult',//掃描到某個(gè)設(shè)備時(shí)觸發(fā) ????????????'onWXDeviceBluetoothStateChange',//手機(jī)藍(lán)牙打開或關(guān)閉時(shí)觸發(fā) ????????]
如果想要測一下微信版本是不是支持這幾個(gè)版本是這樣:
?wx.checkJsApi({ ????jsApiList:?['openWXDeviceLib',?'onScanWXDevicesResult',?'getWXDeviceInfos'],?//?需要檢測的JS接口列表,所有JS接口列表見附錄2, ????success:?function?(res)?{ ????????console.log(res); ????} });
3.初始化設(shè)備庫函數(shù)
透過ready介面處理成功驗(yàn)證
wx.ready(function?()?{?????????? ????wx.invoke('openWXDeviceLib',?{connType:?'blue'},?function?(res)?{ ????????console.debug('openWXDeviceLib重新打開設(shè)備庫==>'); ????????console.log(res); ????}); })
坑解決方法:每次解決方法掃描前,先呼叫closeWXDeviceLib關(guān)閉設(shè)備庫,再呼叫openWXDeviceLib開啟設(shè)備庫。這樣就等於重新初始化了一次設(shè)備庫,你現(xiàn)在再重新掃描,就可以掃描到設(shè)備了。坑:重新掃描設(shè)備根本什麼都掃不出來,即使是刷新頁面也不頂用
坑:重新掃描設(shè)備根本什麼都掃不出來,即使是刷新頁面也不頂用
代碼:wx.invoke("stopScanWXDevice",?{},?function?(res)?{
????console.debug('stopScanWXDevice');
????console.log(res);
?});
wx.invoke("closeWXDeviceLib",?{},?function?(res)?{
????console.debug('closeWXDeviceLib關(guān)閉設(shè)備庫==>');
????console.log(res);
});
wx.invoke('openWXDeviceLib',?{connType:?'blue'},?function?(res)?{
????console.debug('openWXDeviceLib重新打開設(shè)備庫==>');
????console.log(res);
});
wx.on('onReceiveDataFromWXDevice',?function?(res)?{
????console.warn('onReceiveDataFromWXDevice=>');
????console.log(JSON.stringify(res));
});
這裡,我用到一個(gè)庫:
????<script type='text/javascript' src='base64.js'></script>出處:
http://m.miracleart.cn/
var?data={"deviceId":deviceId,"base64Data":?Base64.encode('你要發(fā)送的數(shù)據(jù)')}; console.log(data); wx.invoke('sendDataToWXDevice',data?,?function(res){ ????//回調(diào) ????console.info('發(fā)消息到設(shè)備sendMsg'); ????console.log(data); ????console.log(res); ????$('#dataFromDevice').append('發(fā)送消息的結(jié)果:'+JSON.stringify(res)); ????alert('已發(fā)送?請查看控制板'); });
說明:3.本篇內(nèi)所有的console.log 等輸出到控制臺(tái) 都是用的vconsole調(diào)試工具實(shí)現(xiàn)。1.需要在微信對(duì)應(yīng)設(shè)備號(hào)內(nèi)才能使用對(duì)應(yīng)的api。
2.必須要在設(shè)備號(hào)設(shè)定的安全域名下才能正常使用api
1.引入JS庫
?<script type='text/javascript' src='//res.wx.qq.com/open/js/jweixin-1.0.0.js'></script>
wx.config({ ????beta:?true,?//?開啟內(nèi)測接口調(diào)用,注入wx.invoke方法,非常重要!!必須有這個(gè) ????debug:?true,//開啟調(diào)試接口,alert運(yùn)行結(jié)果 ????appId:?'',//必填,公眾號(hào)的唯一標(biāo)識(shí), ????timestamp:?'',//必填,生成簽名的時(shí)間戳 ????nonceStr:?'',//必填,生成簽名的隨機(jī)串 ????signature:?'',//必填,簽名 ????jsApiList:?[]//要調(diào)用的js函數(shù),必須把函數(shù)名字寫入數(shù)組 });
這裡不是幾個(gè)版本的jsApiList為頁面注入設(shè)定資訊
jsApiList:?[ ????????????'openWXDeviceLib',//初始化設(shè)備庫(只支持藍(lán)牙設(shè)備) ????????????'closeWXDeviceLib',//關(guān)閉設(shè)備庫(只支持藍(lán)牙設(shè)備) ????????????'getWXDeviceInfos',//獲取設(shè)備信息(獲取當(dāng)前用戶已綁定的藍(lán)牙設(shè)備列表) ????????????'sendDataToWXDevice',//發(fā)送數(shù)據(jù)給設(shè)備 ????????????'startScanWXDevice',//掃描設(shè)備(獲取周圍所有的設(shè)備列表,無論綁定還是未被綁定的設(shè)備都會(huì)掃描到) ????????????'stopScanWXDevice',//停止掃描設(shè)備 ????????????'connectWXDevice',//連接設(shè)備 ????????????'disconnectWXDevice',//斷開設(shè)備連接 ????????????'getWXDeviceTicket',//獲取操作憑證 ????????????'onWXDeviceBindStateChange',//微信客戶端設(shè)備綁定狀態(tài)被改變時(shí)觸發(fā)此事件 ????????????'onWXDeviceStateChange',//監(jiān)聽連接狀態(tài),可以監(jiān)聽連接中、連接上、連接斷開 ????????????'onReceiveDataFromWXDevice',//接收到來自設(shè)備的數(shù)據(jù)時(shí)觸發(fā) ????????????'onScanWXDeviceResult',//掃描到某個(gè)設(shè)備時(shí)觸發(fā) ????????????'onWXDeviceBluetoothStateChange',//手機(jī)藍(lán)牙打開或關(guān)閉時(shí)觸發(fā) ????????]這裡不是幾個(gè)新版本為點(diǎn)測,可以這樣寫:
?wx.checkJsApi({ ????jsApiList:?['openWXDeviceLib',?'onScanWXDevicesResult',?'getWXDeviceInfos'],?//?需要檢測的JS接口列表,所有JS接口列表見附錄2, ????success:?function?(res)?{ ????????console.log(res); ????} });
3.初始化設(shè)備庫函數(shù)
通過ready接口處理成功驗(yàn)證
wx.ready(function?()?{?????????? ????wx.invoke('openWXDeviceLib',?{connType:?'blue'},?function?(res)?{ ????????console.debug('openWXDeviceLib重新打開設(shè)備庫==>'); ????????console.log(res); ????}); })坑:重新掃描設(shè)備根本什麼都掃不出來,即使是刷新頁面也不頂用
解決方法:每次掃描前,先呼叫closeWXDeviceLib關(guān)閉裝置庫,再呼叫openWXDeviceLib開啟設(shè)備庫。這樣就等於重新初始化了一次設(shè)備庫,你現(xiàn)在再重新掃描,就可以掃描到設(shè)備了。
代碼:
wx.invoke("stopScanWXDevice",?{},?function?(res)?{ ????console.debug('stopScanWXDevice'); ????console.log(res); ?}); wx.invoke("closeWXDeviceLib",?{},?function?(res)?{ ????console.debug('closeWXDeviceLib關(guān)閉設(shè)備庫==>'); ????console.log(res); }); wx.invoke('openWXDeviceLib',?{connType:?'blue'},?function?(res)?{ ????console.debug('openWXDeviceLib重新打開設(shè)備庫==>'); ????console.log(res); });
4.監(jiān)聽設(shè)備回傳的訊息
wx.on('onReceiveDataFromWXDevice',?function?(res)?{ ????console.warn('onReceiveDataFromWXDevice=>'); ????console.log(JSON.stringify(res)); });
5.發(fā)送訊息到裝置
base64 的解碼。
這裡,我用到一個(gè)庫:
????<script type='text/javascript' src='base64.js'></script>
出處:
http://m.miracleart.cn/var?data={"deviceId":deviceId,"base64Data":?Base64.encode('你要發(fā)送的數(shù)據(jù)')}; console.log(data); wx.invoke('sendDataToWXDevice',data?,?function(res){ ????//回調(diào) ????console.info('發(fā)消息到設(shè)備sendMsg'); ????console.log(data); ????console.log(res); ????$('#dataFromDevice').append('發(fā)送消息的結(jié)果:'+JSON.stringify(res)); ????alert('已發(fā)送?請查看控制板'); });說明:
1.需要在微信對(duì)應(yīng)設(shè)備號(hào)內(nèi)才能使用對(duì)應(yīng)的api。 2.必須要在設(shè)備號(hào)設(shè)定的安全域名下才能正常使用api
3.本篇內(nèi)所有的console.log 等輸出到控制臺(tái) 都是用的vconsole調(diào)試工具實(shí)現(xiàn)。
更多微信硬體JS-Api開發(fā)不完全指南相關(guān)文章請關(guān)注PHP中文網(wǎng)! ??????
熱AI工具

Undress AI Tool
免費(fèi)脫衣圖片

Undresser.AI Undress
人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io
AI脫衣器

Video Face Swap
使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱門文章

熱工具

記事本++7.3.1
好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版
中文版,非常好用

禪工作室 13.0.1
強(qiáng)大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6
視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版
神級(jí)程式碼編輯軟體(SublimeText3)
