Page 1 of 1

ESP32-C3,iOS微信小程序开发获取不到芯片蓝牙mac地址

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

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

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

多谢!

Re: ESP32-C3,iOS微信小程序开发获取不到芯片蓝牙mac地址

Posted: Tue Jan 23, 2024 8:35 am
by ESP_MacChu
如果当前的通信方式是建立连接的,可以开一个服务用于获取设备的MAC地址。如果是不建立连接的,则可以在广播包数据中包含设备的MAC地址信息,这两部分都可以由程序实现,并不需要定制芯片。关于广播数据修改和服务示例代码可以参考例程esp-idf/examples/bluetooth/bluedroid/ble/gatt_server和esp-idf/examples/bluetooth/bluedroid/ble/ble_ibeacon