解決uniapp微信小程序Android與iOS系統(tǒng)獲取藍牙廣播包中deviceid不同的辦法

前言

因為小程序官方是支持接入低能藍牙(BLE)的焰望,所以在一個項目中也嘗試使用如何接入藍牙骚亿,我們從微信的官方網(wǎng)站就可以清楚知道如何使用,但是其中也是有很多坑的熊赖。本著學習的心態(tài)来屠,自己也手把手帶你摸坑,一起處理一些平臺兼容性的問題以及一些邏輯判斷問題

作者在開發(fā)一款共享干衣機小程序震鹉,用的是`uniapp`框架進行開發(fā)的俱笛,開發(fā)期間時遇到了 蘋果(ios) 和 安卓(android)手機 獲取到的 `deviceId(mac)`地址不一致問題;

1、設(shè)備綁定

在共享設(shè)備鋪貨到酒店等場所時传趾,我們會讓工作人員使用小程序碼對共享干衣機設(shè)備進行綁定迎膜,這個目的就是為了解決,用戶打開藍牙連接時會出現(xiàn)N個藍牙浆兰,用戶會不知所措的問題磕仅。

綁定過程需要填寫以下信息:


1、藍牙名稱:自動生成簸呈;

2榕订、設(shè)備編碼:掃描提前生成的小程序碼(里面包含了設(shè)備編碼);

3蜕便、設(shè)備:選擇設(shè)備就是我們選擇藍牙然后拿到`deviceId(mac地址)`劫恒;

4、代理商轿腺;

5兼贸、商戶段直;

?6、網(wǎng)點溶诞;

2鸯檬、用戶使用流程:

我們這個共享項目的用戶使用流程是:

1、用戶掃碼(生成的小程序碼) 里面包含設(shè)備藍牙信息螺垢;

2喧务、彈出連接藍牙給用戶連接 (通過小程序碼里的藍牙信息里的`deviceId(mac地址)`過濾掉其他藍牙,只顯示用戶掃碼設(shè)備的藍牙);

3枉圃、用戶連接成功后 隱藏連接藍牙按鈕顯示 立即使用按鈕功茴;

4、用戶選擇使用時長(默認30分鐘)孽亲;

5坎穿、點擊立即使用調(diào)用支付;

6返劲、支付成功后 (小程序下發(fā)開關(guān)定時指令給干衣機設(shè)備進行使用)玲昧;

3、平臺差異化

因為我們使用的是`uniapp`框架開發(fā)所以沒看到`uniapp`說明這個...(大坑)

后來我們從微信文檔上面看到這樣一段話:


看到這里我就想著篮绿,完犢子了孵延,因為我們的手機平臺有安卓和蘋果,唯一標識藍牙的就是`deviceId`亲配,但是蘋果搜索出來就不是這個了尘应,而是`uuid`的一串字符串。因為蘋果官方認為透露`deviceId(MAC地址)`會有安全問題吼虎,索性直接屏蔽了犬钢。

4、問題分析

開發(fā)安卓和IOS的APP中思灰,在獲取藍牙模塊的MAC地址的時候有區(qū)別娜饵。

安卓系統(tǒng)在藍牙這一塊,給了獲取藍牙模塊MAC地址的接口官辈,所以直接用就行箱舞,包括安卓端的微信小程序或者其他小程序拳亿。

IOS比較嚴謹晴股,不允許獲取藍牙模塊的MAC地址肺魁,沒有給出API,所以必須要在藍牙模塊這一端做一些特別的設(shè)置。

在設(shè)備綁定時工作人員用安卓綁定的設(shè)備是唯一的寂呛,而用戶使用ios搜索藍牙時怎诫,每個用戶搜索到的藍牙設(shè)備都是`uuid`隨機的`deviceId`與我們綁定`deviceId`的不匹配,因此也就無法在用戶使用的時候過濾其他藍牙了幻妓。

5劫拢、解決方案

方法1-特定的UUID去讀取MAC地址

其實這類型的應用并不多肉津,因為他需要建立連接之后,才能獲取到mac地址舱沧,這樣就不實用了

在程序開發(fā)中我們很少有采用這樣的方式的 妹沙。其實實現(xiàn)也很簡單,一說就懂

所以這個方法距糖,暫時不推薦使用牵寺,請詳細了解一下方法二丈咐。

方法2-MAC地址存放在藍牙模塊廣播包里面

在廣播包里面棋枕,查找藍牙的 MAC 地址东亦,一般良心廠商都會存放在廣播包里面,所以可以獲取到典阵。

作者開發(fā)的藍牙線路板廠商沒有寫進去...,然后聯(lián)系廠商重新燒錄進去壮啊。


經(jīng)過了九九八十一天來回郵寄線路板歹啼,廠商終于把 mac 地址寫入進`advertisData`去了。

下面是原始數(shù)據(jù)


這里我們稱之為:`advertisData(當前藍牙設(shè)備的廣播數(shù)據(jù)段中的 ManufacturerData 數(shù)據(jù)段藤树, 類型為:ArrayBuffer)`拓萌。

**做這個的目的,有如下原因:**

1、微信小程序開發(fā):無法直接獲取藍牙芯片的 mac 地址品嚣,沒有相應的API钧大,所以可以通過這個獲取到,具體網(wǎng)上可以搜一下

2拓型、APP 開發(fā)--IOS 端,也沒辦法直接獲取 MAC 地址册养,也是通過這個方式得到藍牙芯片的 MAC 地址

3压固、APP 開發(fā)--安卓端,沒有這個問題帐我,直接通過 API 時可以獲取到藍牙芯片的 mac 地址的。所以用不用這個功能拦键,都無所謂

實現(xiàn)代碼:

```js

// 初始化藍牙模塊

uni.openBluetoothAdapter({

? success(res) {

? ? // 開始搜尋附近的藍牙外圍設(shè)備

? ? uni.startBluetoothDevicesDiscovery({

? ? ? success(res) {

? ? ? ? // 監(jiān)聽尋找到新設(shè)備的事件

? ? ? uni.onBluetoothDeviceFound((devices) =>{

? ? ? ? ? console.log(ab2hex(devices[0].advertisData)) // 獲取到 mac 地址

? ? ? ? })

? ? ? }

? ? })

? }

})

// ArrayBuffer轉(zhuǎn)16進度字符串示例

function ab2hex(buffer) {

? const hexArr = Array.prototype.map.call(

? ? new Uint8Array(buffer),

? ? function (bit) {

? ? ? return ('00' + bit.toString(16)).slice(-2)

? ? }

? )

? return hexArr.reverse().join(':')

}

```

至此成功芬为,我們拿到了藍牙的`mac地址`,然后就可以進行后續(xù)操作了媚朦。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末询张,一起剝皮案震驚了整個濱河市孙乖,隨后出現(xiàn)的幾起案子份氧,更是在濱河造成了極大的恐慌,老刑警劉巖越妈,帶你破解...
    沈念sama閱讀 211,123評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件钮糖,死亡現(xiàn)場離奇詭異酌住,居然都是意外死亡阎抒,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,031評論 2 384
  • 文/潘曉璐 我一進店門都哭,熙熙樓的掌柜王于貴愁眉苦臉地迎上來逞带,“玉大人,你說我怎么就攤上這事展氓。” “怎么了未妹?”我有些...
    開封第一講書人閱讀 156,723評論 0 345
  • 文/不壞的土叔 我叫張陵空入,是天一觀的道長。 經(jīng)常有香客問我化戳,道長埋凯,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,357評論 1 283
  • 正文 為了忘掉前任盟步,我火速辦了婚禮躏结,結(jié)果婚禮上狰域,老公的妹妹穿的比我還像新娘。我一直安慰自己兆览,他們只是感情好,可當我...
    茶點故事閱讀 65,412評論 5 384
  • 文/花漫 我一把揭開白布子巾。 她就那樣靜靜地躺著,像睡著了一般线梗。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上瘾婿,一...
    開封第一講書人閱讀 49,760評論 1 289
  • 那天烤咧,我揣著相機與錄音,去河邊找鬼笛谦。 笑死立膛,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的宝泵。 我是一名探鬼主播,決...
    沈念sama閱讀 38,904評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼框往,長吁一口氣:“原來是場噩夢啊……” “哼闯捎!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起秉版,我...
    開封第一講書人閱讀 37,672評論 0 266
  • 序言:老撾萬榮一對情侶失蹤茬祷,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后祭犯,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,118評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡粥惧,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,456評論 2 325
  • 正文 我和宋清朗相戀三年突雪,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片咏删。...
    茶點故事閱讀 38,599評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡饵婆,死狀恐怖勺馆,靈堂內(nèi)的尸體忽然破棺而出侨核,到底是詐尸還是另有隱情,我是刑警寧澤悲柱,帶...
    沈念sama閱讀 34,264評論 4 328
  • 正文 年R本政府宣布些己,位于F島的核電站,受9級特大地震影響段标,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜蛇更,卻給世界環(huán)境...
    茶點故事閱讀 39,857評論 3 312
  • 文/蒙蒙 一赛糟、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧掌逛,春花似錦司倚、人聲如沸豆混。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,731評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至拆讯,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間种呐,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,956評論 1 264
  • 我被黑心中介騙來泰國打工汁讼, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留阔墩,地道東北人。 一個月前我還...
    沈念sama閱讀 46,286評論 2 360
  • 正文 我出身青樓耸彪,卻偏偏與公主長得像忘苛,于是被迫代替她去往敵國和親蝉娜。 傳聞我的和親對象是個殘疾皇子扎唾,可洞房花燭夜當晚...
    茶點故事閱讀 43,465評論 2 348

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