>  기사  >  위챗 애플릿  >  WeChat 하드웨어 JS-Api 개발에 대한 불완전한 가이드

WeChat 하드웨어 JS-Api 개발에 대한 불완전한 가이드

高洛峰
高洛峰원래의
2017-02-09 09:28:521815검색

1. JS 라이브러리 소개

 <script type=&#39;text/javascript&#39; src=&#39;//res.wx.qq.com/open/js/jweixin-1.0.0.js&#39;></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',//手机蓝牙打开或关闭时触发
        ]
입니다.

WeChat 버전이 이러한 API를 지원하는지 테스트하려면 다음과 같이 작성하면 됩니다.

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

    }
});

3. 장치 라이브러리 기능을 초기화

준비된 인터페이스 성공적인 검증 처리

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=&#39;text/javascript&#39; src=&#39;base64.js&#39;></script>

출처:
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('已发送 请查看控制板');
});

설명:

1. 해당 API를 사용하려면 위챗의 해당 기기 번호에 있어야 합니다.

2. API는 기기번호로 설정된 보안 도메인 이름으로 정상적으로 사용되어야 합니다

3. 이 글의 모든 console.log 및 기타 콘솔 출력은 vconsole을 사용하여 이루어집니다. 디버깅 도구가 수행됩니다.


1. JS 라이브러리 도입

rree

2.

 <script type=&#39;text/javascript&#39; src=&#39;//res.wx.qq.com/open/js/jweixin-1.0.0.js&#39;></script>
여기 내 jsApiList는

wx.config({
    beta: true, // 开启内测接口调用,注入wx.invoke方法,非常重要!!必须有这个
    debug: true,//开启调试接口,alert运行结果
    appId: '',//必填,公众号的唯一标识,
    timestamp: '',//必填,生成签名的时间戳
    nonceStr: '',//必填,生成签名的随机串
    signature: '',//必填,签名
    jsApiList: []//要调用的js函数,必须把函数名字写入数组
});
입니다. WeChat 버전이 이러한 API를 지원하는지 테스트하려면 다음과 같이 작성할 수 있습니다.

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

3. 초기화 장치 라이브러리 기능

은 준비된 인터페이스를 통해 성공적인 확인을 처리합니다

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

    }
});
함정: 장치를 다시 검색해도 아무것도 찾을 수 없으며 페이지를 새로 고쳐도 쓸모가 없습니다

해결 방법: 각 스캔 전에 closeWXDeviceLib를 호출하여 장치 라이브러리를 닫은 다음 openWXDeviceLib를 호출하여 장치 라이브러리를 엽니다. 이는 장치 라이브러리를 다시 초기화하는 것과 같습니다. 지금 다시 스캔하면 장치를 스캔할 수 있습니다.

코드:

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

4. 기기에서 반환된 정보 듣기

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);
});

5. 기기

데이터를 보내고 받기 전에 Base64 인코딩 및 디코딩이 필요합니다.

여기서는 라이브러리를 사용합니다:

wx.on('onReceiveDataFromWXDevice', function (res) {
    console.warn('onReceiveDataFromWXDevice=>');
    console.log(JSON.stringify(res));
});
출처:

http://www.php.cn/

    <script type=&#39;text/javascript&#39; src=&#39;base64.js&#39;></script>
설명:

1. 해당 API를 사용하려면 위챗의 해당 기기 번호에 있어야 합니다.

2. API는 기기번호로 설정된 보안 도메인 이름으로 정상적으로 사용되어야 합니다

3. 이 글의 모든 console.log 및 기타 콘솔 출력은 vconsole을 사용하여 이루어집니다. 디버깅 도구가 수행됩니다.

WeChat 하드웨어 JS-Api 개발에 대한 불완전한 가이드와 관련된 더 많은 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.