微信硬件平臺藍牙打印機

方案一:

注意:這一步可以獲取到設備ID和二維碼,如果需要引用的可以通過二維碼,而設備ID是微信後臺生成的。


直接在瀏覽器中這樣請求即可返回你需要的設備和二維碼,上圖只是爲了大家更加明白這個是幹嘛的:https://api.weixin.qq.com/device/getqrcode?access_token=TOKEN&product_id=產品ID




此接口會返回一個鏈接,用鏈接生成二維碼。 用戶掃描後,綁定設備。就會與設備綁定。  只有綁定後的設備微信纔會主動連接 。


方案二:

1.設備授權

https://api.weixin.qq.com/device/create_qrcode?access_token=ZWcTAh_Ux2p2J6zhXeUt2cQZqMqjfShLbSTK661xrQYagO8ONtqG8LAh6jeTsNTjv7hu-ZsSQzlQOwubrsrmWgJDUa_WZVQH4muVZ75dhQGzBXdMK4lBc0FyHaeF35AKXZWjADANPM
參數:
{
    "device_num":"1",
    "device_list":[
    {
        "id":"設備Id",
        "mac":"Mac地址,不要包含冒號",
        "connect_protocol":"3",
        "auth_key":"",
        "close_strategy":"1",
        "conn_strategy":"1",
        "crypt_method":"0",
        "auth_ver":"0",
        "manu_mac_pos":"-1",
        "ser_mac_pos":"-2",
        "ble_simple_protocol": "0"
    }
    ],
    "op_type":"(0|1)0表示授權設備,1表示更新設備",
    "product_id": "產品類型Id(公衆平臺設備功能中產品ID)"

}

調用此接口後,在公衆號主頁面就會主動連接設備。

注意:這一步在鏈接中請求的設備ID可以用方案一中得到的設備ID,但是不一定要用 , 因爲微信後臺生成的是公衆平臺唯一ID加上後面的他生成的數據組成的。


完成上面的其中一個步驟後接着執行下面的方法:


1.頁面上調用方法 
wx.invoke('startScanWXDevice', { "connType": "blue", "btVersion": 'ble' }, function (res) {
                    $('#result').append('開始掃描' + '\r\n');
                });
開始搜索周邊設備,搜索到的結果會被onScanWXDeviceResult  監聽到,其中會包含有設備Id和綁定狀態


2.選擇沒有綁定設備,調用getWXDeviceTicket獲取到ticket後,將ticket和設備Id,傳入後臺,代碼如下:
 //綁定設備
            $("#bind").click(function () {
                wx.invoke('getWXDeviceTicket', { "deviceId": mac, 'type': '1' }, function (res) {
                    // $('#result').append(JSON.stringify(res) + '\r\n');
                    //獲取ticket
                    var ticket = res.ticket;
                    $.ajax({
                        url: '/Test/Bind',
                        type: 'post',
                        data: { ticket: ticket, mac: mac },
                        success: function (data) {
                            console.log(JSON.stringify(data));
                        }
                    });
                });
            });
3.後臺調用:https://api.weixin.qq.com/device/bind?access_token=ACCESS_TOKEN   參考頁面地址:http://iot.weixin.qq.com/wiki/new/index.html?page=3-4-7   綁定的接口,完成設備和用戶的綁定
4.綁定成功後,會被onWXDeviceBindStateChange監聽到:
  wx.on('onWXDeviceBindStateChange',
            function (res) {
                //把res輸出來看吧
                $('#result').append(JSON.stringify(res) + '\r\n');
            });
5.綁定後,IOS的設備就會主動連接設備了。

好了,下面開始給大家介紹坑。

爲什麼說IOS會主動連接設備呢?我想在這裏說,他不光主動,還特麼秒連,如果你們測試連接的時候,儘量找一個IOS手機放在身邊,否則你連不上的時候大概就會以爲是程序有問題了。 下面來講講安卓機,安卓機有時候連接得非常快,有時候會灰常灰常慢,或者直接連不上,任你想破腦袋,最終的結果就是,有時候還是連不上,經過研究發現,這個是因爲當你進入微信對應的公衆號時,上面有一個正在連接,或者是已連接0個設備,這個是因爲微信會不斷的去掃描設備,如果掃描到了,會直接請求配對,所以有時候我們沒點頁面中的掃描按鈕就會出現已連接一個設備。開始說重點了 , 如果我們通過公衆號,點擊網頁進入頁面,點擊掃描設備時,會發現身邊的設備都掃描到了,會進入(onScanWXDeviceResult)這個監聽函數中,但是連接有時候會連不到,但是掃描的那個函數雖然有時會掃描不到,但是公衆號上方的那個不斷的掃描和請求是一直都在執行的,如果它連接到設備了,那麼你進入網頁點掃描的時候會秒連。在這裏就是想告訴大家,公衆號上方的那個連接是一直都存在的。有時候忽然連上了也許就是它連上了。如果是一個公衆號連接多個設備的時候(問題只存在安卓機)在連接中也只能連接一個設備的,連接上來的都是公衆號上方的那個連接做的事。

在微信公衆號連接設備中,雖然微信會不斷的掃描,但是掃描到設備之後只會連接一次,而IOS一次就連接上了,安卓系統完全靠運氣!


有不足之處,請大家踊躍發言,提出來大家一起學習,共同進步,讓更多人少遇坑!




發佈了16 篇原創文章 · 獲贊 9 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章