Unvollständiger Leitfaden zur WeChat-Hardware-JS-API-Entwicklung

高洛峰
Freigeben: 2017-02-09 09:28:52
Original
1880 Leute haben es durchsucht

1. JS-Bibliothek vorstellen

 <script type=&#39;text/javascript&#39; src=&#39;//res.wx.qq.com/open/js/jweixin-1.0.0.js&#39;></script>
Nach dem Login kopieren
Nach dem Login kopieren

2. Konfigurationsinformationen in die Seite einfügen

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

Hier ist meine jsApiList

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

Wenn Sie testen möchten, ob die WeChat-Version diese APIs unterstützt, können Sie so schreiben:

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

    }
});
Nach dem Login kopieren
Nach dem Login kopieren

3. Initialisieren Sie die Gerätebibliotheksfunktion

Erfolgreiche Verifizierung über die fertige Schnittstelle abwickeln

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

Fallstrick: Durch erneutes Scannen des Geräts kann überhaupt nichts gefunden werden, selbst ein Aktualisieren der Seite löst das Problem nicht

Methode: Rufen Sie vor jedem Scan zunächst closeWXDeviceLib auf, um die Gerätebibliothek zu schließen, und rufen Sie dann openWXDeviceLib auf, um die Gerätebibliothek zu öffnen. Dies entspricht einer Neuinitialisierung der Gerätebibliothek. Wenn Sie jetzt erneut scannen, können Sie das Gerät scannen.

Code:

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);
});
Nach dem Login kopieren
Nach dem Login kopieren

4. Achten Sie auf die vom Gerät zurückgegebenen Informationen

wx.on('onReceiveDataFromWXDevice', function (res) {
    console.warn('onReceiveDataFromWXDevice=>');
    console.log(JSON.stringify(res));
});
Nach dem Login kopieren
Nach dem Login kopieren

5 Eine Nachricht an das Gerät

muss vor dem Senden und Empfangen von Daten eine Base64-Kodierung und -Dekodierung durchführen.
Hier verwende ich eine Bibliothek:

    <script type=&#39;text/javascript&#39; src=&#39;base64.js&#39;></script>
Nach dem Login kopieren
Nach dem Login kopieren

Quelle:
http://www.php.cn/

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('已发送 请查看控制板');
});
Nach dem Login kopieren
Nach dem Login kopieren

Beschreibung:

1. Sie benötigen die entsprechende Gerätenummer auf WeChat, um die entsprechende API nutzen zu können.

2. Die API muss normal unter dem durch die Gerätenummer festgelegten sicheren Domänennamen verwendet werden

3. Alle console.log- und anderen Ausgaben an die Konsole in diesem Artikel erfolgen über die vconsole Debugging-Tool durchführen.


1. JS-Bibliothek einführen

 <script type=&#39;text/javascript&#39; src=&#39;//res.wx.qq.com/open/js/jweixin-1.0.0.js&#39;></script>
Nach dem Login kopieren
Nach dem Login kopieren

2. Konfigurationsinformationen in die Seite einfügen

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

Meine jsApiList hier ist

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

Wenn Sie testen möchten, ob die WeChat-Version diese APIs unterstützt, können Sie so schreiben:

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

    }
});
Nach dem Login kopieren
Nach dem Login kopieren

3. Initialisieren Sie die Gerätebibliotheksfunktion

Erfolgreiche Überprüfung über die fertige Schnittstelle durchführen

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

Falle: Scannen Sie das Gerät erneut und es kann nichts gefunden werden Auch das Aktualisieren der Seite funktioniert nicht

Lösung: Rufen Sie vor jedem Scan closeWXDeviceLib auf, um die Gerätebibliothek zu schließen, und rufen Sie dann openWXDeviceLib auf, um die Gerätebibliothek zu öffnen. Dies entspricht einer Neuinitialisierung der Gerätebibliothek. Wenn Sie jetzt erneut scannen, können Sie das Gerät scannen.

Code:

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);
});
Nach dem Login kopieren
Nach dem Login kopieren

4. Achten Sie auf die vom Gerät zurückgegebenen Informationen

wx.on('onReceiveDataFromWXDevice', function (res) {
    console.warn('onReceiveDataFromWXDevice=>');
    console.log(JSON.stringify(res));
});
Nach dem Login kopieren
Nach dem Login kopieren

5 Eine Nachricht an das Gerät

muss vor dem Senden und Empfangen von Daten eine Base64-Kodierung und -Dekodierung durchführen.
Hier verwende ich eine Bibliothek:

    <script type=&#39;text/javascript&#39; src=&#39;base64.js&#39;></script>
Nach dem Login kopieren
Nach dem Login kopieren

Quelle:
http://www.php.cn/

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('已发送 请查看控制板');
});
Nach dem Login kopieren
Nach dem Login kopieren

Beschreibung:

1. Sie benötigen die entsprechende Gerätenummer auf WeChat, um die entsprechende API nutzen zu können.

2. Die API muss normal unter dem durch die Gerätenummer festgelegten sicheren Domänennamen verwendet werden.

3 Alle console.log- und anderen Ausgaben an die Konsole in diesem Artikel erfolgen über die vconsole Debugging-Tool durchführen.

Weitere Artikel zum unvollständigen Leitfaden für die WeChat-Hardware-JS-API-Entwicklung finden Sie auf der chinesischen PHP-Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!