方案一:
注意:這一步可以獲取到設備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一次就連接上了,安卓系統完全靠運氣!
有不足之處,請大家踊躍發言,提出來大家一起學習,共同進步,讓更多人少遇坑!