乐鑫技术交流
直播中

陈韵瑄

7年用户 949经验值
私信 关注
[问答]

ESP32-C3 iOS微信小程序开发获取不到芯片蓝牙mac地址怎么解决?

微信小程序的官方文档显示: i0S 设备上扫描获取到的 deviceId 是系统根据外围设备 MAC 地址及发现设备的时间生成的 UUD。  意思是iOS系统对原本蓝牙设备广播的mac地址做了不可逆的加工,使得作为调用方,我拿不到原始的蓝牙Mac地址,这会造成我在配网过程记录下来的所谓设备UUID,和后续设备和云端交互做业务时携带的ID(芯片mac地址)根本无法匹配。

我查到一些所谓的解决方案,最靠谱的有一个:
针对这种情况,我们只能获取蓝牙设备的mac地址来作为唯一标识。但是,苹果公司也许是出于安全考虑,并没有对我们开放获取蓝牙设备的mac地址的接口(安卓开发是可以获取的)。那么我们只能自己通过某种手段来获取mac地址,有两种方法可以让我们获取到mac地址:
第一种:将mac地址放在蓝牙设备的广播数据之中,然后在广播的时候,将mac地址以广播的形式发送出来以供我们获取。
第二种:将mac地址写在某一个特征通道中,当我们连接蓝牙设备之后,通过某一个特征通道来获取mac地址。
请问,蓝牙mac地址有没有写在被提及的“广播数据”或者“特征通道”呢?

第二个问题:我如果采购一批esp32-c3芯片,是否支持定制出厂芯片蓝牙名称 = “某固定格式字符串” + 蓝牙Mac ?
第三个问题:不知道其他有没有类似的案例,跟我有一样的需求和问题,最好的解决方案能否给个建议?

回帖(2)

刘丽

2024-6-6 10:12:38
如果当前的通信方式是建立连接的,可以开一个服务用于获取设备的MAC地址。如果是不建立连接的,则可以在广播包数据中包含设备的MAC地址信息,这两部分都可以由程序实现,并不需要定制芯片
举报

刘高

2024-6-6 18:16:31
针对这个问题,我们可以尝试以下几个步骤来解决:

1. 使用通用唯一标识符(UUID)作为设备标识:在iOS设备上,系统会为每个蓝牙设备生成一个UUID,这个UUID是唯一的,可以用来作为设备的标识。在配网过程中,可以将这个UUID记录下来,并在后续的设备和云端交互中使用。

2. 在设备配网时,将设备的UUID和MAC地址进行关联:在配网过程中,可以在本地存储设备UUID和MAC地址的映射关系。这样,在后续的设备和云端交互中,可以通过UUID找到对应的MAC地址。

3. 使用第三方库或服务:有些第三方库或服务可能提供了获取蓝牙设备MAC地址的方法。可以尝试查找这些库或服务,并在项目中集成使用。

4. 联系设备制造商:如果以上方法都无法解决问题,可以尝试联系设备的制造商,看看他们是否提供了获取MAC地址的方法或者解决方案。

5. 考虑使用其他设备:如果问题依然无法解决,可以考虑使用其他支持获取MAC地址的蓝牙设备。

总之,虽然iOS系统出于安全考虑没有开放获取蓝牙设备MAC地址的功能,但我们可以通过其他方法来解决这个问题。关键是在配网过程中记录设备的UUID,并在后续的设备和云端交互中使用这个UUID作为设备的唯一标识。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分