Description
Area(s)
area:device
What's missing?
Take a look at the current definition of device.id
:
semantic-conventions/model/device/registry.yaml
Lines 14 to 21 in b855a36
The obligatory recommendation for Android (Firebase Installation ID or a globally unique UUID which is persisted across sessions in your application) mostly mirrors the recommendation for Google
Use a Firebase installation ID (FID) or a privately stored GUID whenever possible for all other use cases, except for payment fraud prevention and telephony. For the vast majority of non-ads use cases, an FID or GUID should be sufficient.
The one for iOS suggests using identifierForVendor
.
The value of this property is the same for apps that come from the same vendor running on the same device. A different value is returned for apps on the same device that come from different vendors, and for apps on different devices regardless of vendor.
Now I have multiple remarks to these recommendations:
-
None of the two Android recommendations and the one iOS recommendation are really device ids, they are more like installation ids. For consumer apps the difference is probably insignificant, however, for enterprise apps on managed Android/iOS devices it is important. One could have many managed applications on the same device, so the expectation for
device.id
s would be that they are identical across all apps, which neither the Firebase Installation ID, nor the random generated UUID or the iOSidentifierForVendor
fulfill. -
There is another ID, which fits my use case better on Android, called
Settings.Secure.ANDROID_ID
, because I don't want to use Firebase, but I want an ID which survives uninstalls, and which is consistent across all my in-house apps.ANDROID_ID
:
On Android 8.0 (API level 26) and higher versions of the platform, a 64-bit number (expressed as a hexadecimal string), unique to each combination of app-signing key, user, and device. [...] -
Although not recommended by Google for Android, one could still use actual device IDs, such as the IMEI or proprietary APIs provided by the vendor (e.g. Zebra's API), which are bound to the device for its whole lifetime. For enterprise-managed hardware there might be a legitimate use for such actual device ids, so these IDs would rather deserve to be the definition of
device.id
.
Describe the solution you'd like
I would recommend these 3 changes:
- Introduce a new attribute, called
installation.id
, and recommend it for most use-cases on Android and iOS. - Use a similar description for
installation.id
, thatdevice.id
currently has, but extend it with the possibility to useSettings.Secure.ANDROID_ID
- Discourage the usage of
device.id
due to privacy reasons, but leave it open to custom implementations, such as IMEI or proprietary APIs.
Metadata
Metadata
Assignees
Type
Projects
Status