欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 产业 > 蓝牙BLE开发——解决iOS设备获取MAC方式

蓝牙BLE开发——解决iOS设备获取MAC方式

2025/2/23 1:48:32 来源:https://blog.csdn.net/Smile_ping/article/details/144673984  浏览:    关键词:蓝牙BLE开发——解决iOS设备获取MAC方式

解决iOS设备获取MAC方式

uniapp 解决 iOS 获取 MAC地址,在Android、iOS不同端中互通,根据MAC 地址处理相关的业务场景;

文章目录

    • 解决iOS设备获取MAC方式
      • 监听寻找到新设备的事件
      • BLE工具效果图
      • APP监听设备返回数据
      • 解决方式
      • ArrayBuffer转16进制
      • 微信小程序 监听设备返回数据
      • MAC 数据

API: onBluetoothDeviceFound

可能会遇到相关问题:请查看

关于进制转换:请点击或搜索相关文章


Desc:

  • AndroidiOS 设备得到的 deviceId 是不一致的,如果想要存储 MAC ,在后面的业务中使用,如何获取 MAC地址
  • Android:得到是 MAC
  • iOS:得到是 UUID
  • tip:不要混淆了,是否处理 MAC 根据需求,不影响设备正常连接;

监听寻找到新设备的事件

function onBluetoothDeviceFound() {uni.onBluetoothDeviceFound((res) => {console.log('onBluetoothDeviceFound success', res)handleFilterDevices(res.devices);})
}

BLE工具效果图

在这里插入图片描述


APP监听设备返回数据

  • 很多人以为返回数据是空的,在App端,ArrayBuffer 数据无法直接查看,转换下打印日志也许有惊喜(⊙o⊙)

在这里插入图片描述


解决方式

具体数据 根据 供应商 协议去处理,因有些 供应商 返回 MAC方式不一样;

  • 监听广播数据,根据 MAC 数据存储位置,解析对应 ManufacturerData 数据段、 ServiceData 数据段;

  • MAC 在 advertisData 中: 即ManufacturerData 数据段

    filterDevices(devices) {let res = devices.filter(device => {if (!device.name && !device.localName) return;// ArrayBuffer转16进制let advertisData = ab2hex(device.advertisData);console.log('advertisData To HEX:', advertisData);// ...}
    }
    

  • MAC 在 serviceData 中:即 ServiceData 数据段,返回对象

    • 先 转换为 Uint8Array 类型,再 转换 16进制
  • 和效果图一样,返回在 ServiceData
filterDevices(devices) {let res = devices.filter(device => {if (!device.name && !device.localName) return;// 遍历 ServiceData 数据段let serviceData = '';for (let key in device.serviceData) {let tmpData = new Uint8Array(device.serviceData[key]);if (tmpData) {let tmpHex = ab2hex(tmpData);serviceData = tmpHex.join(':');}}device['MAC'] = serviceData;// ...}
}

  • 通过广播数据段namelocalName中通过名称匹配设备,通常: 前缀 + MAC ,直接截取就行(有些供应商会采取该方式)

ArrayBuffer转16进制

const ab2hex = (buffer) => {const hexArr = Array.prototype.map.call(new Uint8Array(buffer),function(bit) {return ('00' + bit.toString(16)).slice(-2)})return hexArr.join('')
}

微信小程序 监听设备返回数据

小程序,打印日志更直观些

在这里插入图片描述


MAC 数据

[{"0": 172,"1": 35,"2": 53,"3": 153,"4": 83,"5": 133}
]

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词