微信硬件藍牙api(前端開發(fā))

本文僅介紹微信硬件藍牙開發(fā)前端部分基本流程和可能遇到的坑

所需材料:

  1. 基本的前端三件套(HTML,CSS,JS)
  2. js-sdk

配置:

wx.config({
    beta: true,                 //必須配置這個為true,才能調(diào)用微信的硬件API
    debug: true,                //是否開啟調(diào)試模式粘勒,會自動彈一些消息框顯示微信返回的數(shù)據(jù)
    appId: 公眾號的唯一標識,    //后臺給的
    timestamp: 時間戳,          //后臺給的
    nonceStr: 隨機字符串,       //后臺給的
    signature: 證書,            //后臺給的
    jsApiList: [                //所有需要調(diào)用的接口
        "openWXDeviceLib",      //初始化設備庫(只支持藍牙設備)
        "closeWXDeviceLib",     //關(guān)閉設備庫(只支持藍牙設備)
        "getWXDeviceInfos",     //獲取當前用戶已綁定的藍牙設備列表
        "sendDataToWXDevice",   //發(fā)送數(shù)據(jù)給設備
        "startScanWXDevice",    //掃描設備(無論綁定還是未被綁定的設備都會掃描到)
        "stopScanWXDevice",     //停止掃描設備
        "connectWXDevice",      //連接設備
        "disconnectWXDevice",   //斷開設備連接
        "getWXDeviceTicket",    //獲取綁定或解綁硬件的操作憑證
        //如果需要其他js api可繼續(xù)添加

        //監(jiān)聽事件:
        "onWXDeviceBindStateChange",    //監(jiān)聽硬件設備綁定狀態(tài)
        "onWXDeviceStateChange",        //監(jiān)聽連接狀態(tài)蜒谤,可以監(jiān)聽連接中、已連接晶渠、連接斷開
        "onReceiveDataFromWXDevice",    //監(jiān)聽接收來自硬件設備的數(shù)據(jù)
        "onScanWXDeviceResult",         //監(jiān)聽掃描到的設備
        "onWXDeviceBluetoothStateChange",  //監(jiān)聽手機藍牙打開或關(guān)閉
    ]
});

最基本的調(diào)用:

wx.ready(() => {
    // config配置成功后調(diào)用罕伯,所有微信api操作都應在config配置成功后進行曲伊。
    wx.invoke('openWXDeviceLib', {  //初始化硬件設備庫
        'brandUserName': 'gh_xxxxxxxxxx'    //必須加上這個公眾號原始ID,否則部分機型無法初始化
    }, (res) => {
        //res結(jié)果可參考文章底部的微信硬件平臺說明文檔追他,或者自己試著輸出看看
    });
});
wx.error((res) => {
    // config配置失敗調(diào)用坟募。
});

調(diào)用方法和監(jiān)聽的基本形式:

wx.invoke(jsApiName, params, callback); //方法,所有方法的參數(shù)params都含有默認的'connType': 'blue'字段邑狸,此字段可寫可不寫
wx.on(listenName, callback);   //監(jiān)聽

坑:即使不想寫params參數(shù)懈糯,也要加個空對象{}傳參

例子(更多方法和事件可查閱微信硬件平臺說明文檔):

wx.on('onReceiveDataFromWXDevice', (res) => {
    console.log(Base64.decode(res.base64Data));    //發(fā)送數(shù)據(jù)和接收數(shù)據(jù)都需要base64編碼和解碼,下載一個Base64.js即可
});
wx.invoke('sendDataToWXDevice', {
    'deviceId': deviceId, 
    'connType': 'blue', 
    'base64Data': Base64.encode(data)
}, (res) => {
    //用于發(fā)送數(shù)據(jù)(指令)給設備
});

注意事項:

  1. 流程(在回調(diào)中執(zhí)行下一步):初始化 -> 掃描設備 -> 綁定設備(通過getWXDeviceTicket方法獲取ticket单雾,并發(fā)送給后臺進行綁定昂利,在監(jiān)聽綁定狀態(tài)事件中獲知是否綁定成功) -> 連接設備(在監(jiān)聽綁定狀態(tài)事件中獲知是否連接成功) -> 發(fā)送數(shù)據(jù)(數(shù)據(jù)都需要經(jīng)過Base64編碼和解碼,在監(jiān)聽接收設備數(shù)據(jù)中獲取設備發(fā)送的數(shù)據(jù))
  2. 在掃描設備時铁坎,已被連接或者已被綁定的設備可能無法被掃描到。
  3. 停止掃描沒有效果的解決辦法:直接使用closeWXDeviceLib關(guān)閉設備犁苏,下次掃描再重新打開硬萍。
  4. 掃描一次后,刷新頁面或者跳轉(zhuǎn)頁面再回來無法再掃描到任何設備解決辦法:每次掃描前使用closeWXDeviceLib關(guān)閉設備再openWXDeviceLib重新打開围详,然后再進行掃描操作朴乖。
  5. 在綁定設備時,如果已被綁定過助赞,則無法通過監(jiān)聽獲知是否綁定成功买羞,只能通過獲取設備信息(getWXDeviceInfos),并遍歷結(jié)果獲知設備是否綁定雹食,因此綁定成功回調(diào)方法應同時寫在監(jiān)聽事件中和獲取設備信息中畜普。
  6. 一些設備在綁定成功后自動連接,同理第5點群叶,連接成功回調(diào)方法應同時寫在監(jiān)聽事件中和獲取設備信息中吃挑。
  7. 為解決第5弓摘、6點存在的問題籽慢,建議進入頁面時先獲取設備信息并保存下來,在綁定和連接操作的時候即時更新設備信息长赞,在后續(xù)方法中可減少操作赎离。
  8. 使用微信web開發(fā)者工具移動端調(diào)試時逛犹,不會有報錯信息!!虽画!代碼中斷了代表你寫錯了舞蔽,不用懷疑。(使用X5 Blink內(nèi)核調(diào)試除外)
  9. 只能掃描到關(guān)注了的公眾號綁定的硬件狸捕,同一硬件不可被多個公眾號綁定使用喷鸽。
  10. 如果發(fā)送命令后沒有返回數(shù)據(jù),可嘗試多次重發(fā)灸拍。
  11. 在項目上做祝,極有可能流程卡在一些綁定、連接鸡岗、發(fā)送數(shù)據(jù)操作上混槐,重試和無回應或錯誤提示是有必要的。

微信JS-SDK說明文檔
微信硬件平臺說明文檔

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末轩性,一起剝皮案震驚了整個濱河市声登,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌揣苏,老刑警劉巖悯嗓,帶你破解...
    沈念sama閱讀 221,198評論 6 514
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異卸察,居然都是意外死亡脯厨,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,334評論 3 398
  • 文/潘曉璐 我一進店門坑质,熙熙樓的掌柜王于貴愁眉苦臉地迎上來合武,“玉大人,你說我怎么就攤上這事涡扼〖谔” “怎么了?”我有些...
    開封第一講書人閱讀 167,643評論 0 360
  • 文/不壞的土叔 我叫張陵吃沪,是天一觀的道長汤善。 經(jīng)常有香客問我,道長票彪,這世上最難降的妖魔是什么萎津? 我笑而不...
    開封第一講書人閱讀 59,495評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮抹镊,結(jié)果婚禮上锉屈,老公的妹妹穿的比我還像新娘。我一直安慰自己垮耳,他們只是感情好颈渊,可當我...
    茶點故事閱讀 68,502評論 6 397
  • 文/花漫 我一把揭開白布遂黍。 她就那樣靜靜地躺著,像睡著了一般俊嗽。 火紅的嫁衣襯著肌膚如雪雾家。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,156評論 1 308
  • 那天绍豁,我揣著相機與錄音芯咧,去河邊找鬼。 笑死竹揍,一個胖子當著我的面吹牛敬飒,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播芬位,決...
    沈念sama閱讀 40,743評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼无拗,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了昧碉?” 一聲冷哼從身側(cè)響起英染,我...
    開封第一講書人閱讀 39,659評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎被饿,沒想到半個月后四康,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,200評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡狭握,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,282評論 3 340
  • 正文 我和宋清朗相戀三年箭养,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片哥牍。...
    茶點故事閱讀 40,424評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖喝检,靈堂內(nèi)的尸體忽然破棺而出嗅辣,到底是詐尸還是另有隱情,我是刑警寧澤挠说,帶...
    沈念sama閱讀 36,107評論 5 349
  • 正文 年R本政府宣布澡谭,位于F島的核電站,受9級特大地震影響损俭,放射性物質(zhì)發(fā)生泄漏蛙奖。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,789評論 3 333
  • 文/蒙蒙 一杆兵、第九天 我趴在偏房一處隱蔽的房頂上張望雁仲。 院中可真熱鬧,春花似錦琐脏、人聲如沸攒砖。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,264評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽吹艇。三九已至惰蜜,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間受神,已是汗流浹背抛猖。 一陣腳步聲響...
    開封第一講書人閱讀 33,390評論 1 271
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留鼻听,地道東北人财著。 一個月前我還...
    沈念sama閱讀 48,798評論 3 376
  • 正文 我出身青樓,卻偏偏與公主長得像精算,于是被迫代替她去往敵國和親瓢宦。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,435評論 2 359

推薦閱讀更多精彩內(nèi)容