小程序中,iOS设备获取蓝牙设备的Mac地址
生活随笔
收集整理的這篇文章主要介紹了
小程序中,iOS设备获取蓝牙设备的Mac地址
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
遇到的問題
在使用藍牙的過程中,我們需要獲取藍牙設備的Mac地址。在Android設備上,onBluetoothDeviceFound方法中,deviceId是藍牙設備的Mac地址。而在 iOS設備上,deviceId則是藍牙設備的uuid。我們想要在iOS設備上獲取Mac地址,就需要自己想辦法。
解決的方法
通過查閱一些相關資料,發(fā)現(xiàn)有些藍牙設備有180A這個服務id,該服務id中的2A23特征值可以獲取藍牙設備的Mac地址。具體操作參考下面的代碼:
function array2String(buffer) {let hexArr = Array.prototype.map.call(new Uint8Array(buffer),function (bit) {return ('00' + bit.toString(16)).slice(-2)})return `${hexArr[7]}:${hexArr[6]}:${hexArr[5]}:${hexArr[2]}:${hexArr[1]}:${hexArr[0]}`} // 連接藍牙 wx.createBLEConnection({deviceId,success: res => {// 獲取服務idwx.getBLEDeviceServices({deviceId,success: res => {let serviceId = ''for (let i = 0, len = res.services.length; i < len; i++) {// 使用包含 180A 的服務idif (~res.services[i].uuid.indexOf('180A')) {serviceId = res.services[i].uuid// 獲取對應的特征值wx.getBLEDeviceCharacteristics({deviceId,serviceId,success: res => {let characteristicId = ''for (let i = 0, len = res.characteristics.length; i < len; i++) {// 使用含有 2A23 對應的特征值if (~res.characteristics[i].uuid.indexOf('2A23')) {characteristicId = res.characteristics[i].uuid}}wx.readBLECharacteristicValue({deviceId,serviceId,characteristicId,success: res => {console.log('mac read ----------', res)}})wx.notifyBLECharacteristicValueChange({deviceId,serviceId,characteristicId,state: true,})wx.onBLECharacteristicValueChange(function (characteristic) {// 當特征值是查詢 Mac 地址時if (~characteristic.characteristicId.indexOf('2A23')) {let macInfo = (array2String(characteristic.value)).toUpperCase()console.log('mac info -----------', macInfo)}})}})}}}})} })后續(xù)
當獲取到藍牙設備Mac地址后,我們一般還是要繼續(xù)使用藍牙的。這個時候需要重新獲取藍牙設備的服務id,以及新的特征值。
wx.getBLEDeviceCharacteristics({deviceId,// 新的服務id, 通過 getBLEDeviceServices 獲取serviceId: newServiceId,success: res => {wx.notifyBLECharacteristicValueChange({state: true,deviceId,serviceId: newServiceId,// 新的特征值characteristicId: newCharacteristicId})// 監(jiān)聽低功耗藍牙連接的錯誤事件wx.onBLEConnectionStateChange(res => { })} })轉(zhuǎn)載于:https://www.cnblogs.com/yangrenmu/p/10885902.html
總結(jié)
以上是生活随笔為你收集整理的小程序中,iOS设备获取蓝牙设备的Mac地址的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: JS实现——俄罗斯方块
- 下一篇: 其他团队对本组建议汇总