問題
在uniapp開發(fā)項(xiàng)目中,主要是指APP端,使用API接口:uni.getBluetoothDevices
或者uni.onBluetoothDeviceFound
查找到的藍(lán)牙設(shè)備數(shù)據(jù)里deviceId值不一樣:
在安卓中deviceId即mac地址
在ios中deviceId即uuid
如何在ios端也能獲取到mac地址?
通常情況下,藍(lán)牙設(shè)備必定是有獨(dú)一無二的mac地址,只是在uniapp中ios和安卓的獲取方式不一樣而已,良心廠家肯定是會(huì)把mac地址通過某個(gè)數(shù)據(jù)包傳遞給開發(fā)者的,只是位置可能不一樣而已。
說說我的解決方案:
解決方案:
買藍(lán)牙設(shè)備,可以從產(chǎn)品說明中獲取到相關(guān)的數(shù)據(jù)包信息,沒有可以找廠家咨詢(或者自己一步一步測(cè)試)
new Uint8Array() 轉(zhuǎn)譯
-
mac地址存在
advertisData
字段中
通過new Uint8Array()
方法可以讀取該字段中的信息,通常是數(shù)字+逗號(hào)分隔的 -
mac地址存在
serviceData
字段中
但是這個(gè)字段可能是一個(gè)obj,里面可能有多個(gè)key,
通過new Uint8Array(Device.serviceData[key])
獲取相關(guān)的信息,通常是數(shù)字+逗號(hào)分隔的
找到指定值
我們現(xiàn)在獲取到了相關(guān)的數(shù)據(jù),那么如何去找到哪些數(shù)字是我要的mac地址(或者這段值中根本不存在mac,但是要test一下,萬一中了呢)
-
在安卓中,我們是可以在deviceId中得知我們的mac地址的,把這個(gè)mac地址記錄一下,為了后面一步一步測(cè)試對(duì)比。
-
mac地址比較短,我們把它轉(zhuǎn)十進(jìn)制,方法:
parseInt('ed',16)
,ed就是mac地址中的某一段,具體根據(jù)你的mac地址寫,示例中得出的值是237,然后在上一步中找到的值中查找有沒有這個(gè)數(shù)字,有則說明mac地址在這里面的概率增加了一些,mac地址的幾段值都轉(zhuǎn)譯后發(fā)現(xiàn)在上一步值中按序排列著,那么mac地址就是這一段了。記住這一段的索引值,在開發(fā)中使用,這一步是在開發(fā)測(cè)試階段,對(duì)于藍(lán)牙設(shè)備的一個(gè)測(cè)試研究。文章來源:http://www.zghlxwxcb.cn/news/detail-700799.html -
正式開發(fā)中我們是不知道設(shè)備具體的mac地址的,因?yàn)槊總€(gè)設(shè)備的mac地址不一樣,但是我們使用的設(shè)備是一樣的,通過前面的那些步驟,我們可以知道同一套藍(lán)牙設(shè)備mac地址存在的位置都一樣,也知道位置和獲取方式,那么就需要把十進(jìn)制轉(zhuǎn)十六進(jìn)制,通過:
(值).toString(16)
方式,得到十六進(jìn)制值,按序組合成mac地址。接下來傳后端還是干啥的都好說了。文章來源地址http://www.zghlxwxcb.cn/news/detail-700799.html
到了這里,關(guān)于uniapp:藍(lán)牙設(shè)備ios與安卓端deviceId不一致問題及ios端獲取藍(lán)牙m(xù)ac地址方法的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!