BLE connect to Device Id works with Android, not with iOS

I am connecting my Thunkable App to an ESP32-S3 using its mac address as its device name. Everything is working fine on Android, but after downloading the app on iOS 26, I got a message ‘“Invalid UUIDs or IDs were passed: xx:xx:xx:xx:xx:xx”. The xx being the mac address of the device. On the Android phone the MAC address retrieved is identical to the one on the iPhone. Anything that can explain the difference or point in the right direction?

Hi @tintin4000
According to our engineers, it is expected that Android returns the MAC address of the device, whereas iOS returns a randomized UDID because Apple doesn’t want to return the MAC address due to privacy concerns.

So the solution that would support both Android and iOS consist on using the Device Name instead, is that correct?

The device names block doesn’t work on Android 16.
Another solution is to use a different Device ID for Android and iOS.

after mac detected use timer 1 sec(connect with uuid)

I had to increase the time to 3 sec but I didn’t check all timing. But indeed it works. I have made a loop like connect, if failed (iPhone), wait 1-3 sec, try to connect again, then 100% success of connection with iPhone.

The recommended and supported approached is to use the scan function, unfortunately, it takes a long time compare to the approached above.

scan function →use another timer as loop don’t use delay fun, test with official esp32 lib