Article written by Ryan B.
When creating apps for iOS and Android, you may want to uniquely identify the device the user is on via FGenericPlatformMisc::GetDeviceID(). This usually works to uniquely identify a device, but there are some key exceptions for these platforms to be aware of, that can result in duplicate or blank values:
On Android, it utilizes Secure.ANDROID_ID which has some different properties before and after Android 8.0 (which you can read about here), but they should be different across devices. That said, the value can be empty or not unique depending on the OEM implementation, so if you are getting the same values, that is likely the cause.
Specifically for iOS, it is implemented using UIDevice::identifierForVendor. From Apple’s developer page on identifierForVendor, apps not installed from the App Store calculate that value based on the app’s bundle ID, which would be the same across all devices running the same app.