The Device ID is a unique identifier of the device, which is fetched from the OS and used to uniquely identify devices to restrict access to them. The type of ID and its origin vary by platform. The Device ID is also sent to the Ubik Web Service.
Accessing the Device ID
Accessing the Device ID is designed to be simple.
Android
On the legacy Android client, the Device ID can be found on the Information page.
UWP
On the Windows client, the Device ID can be accessed on the Connection Settings page.
Xamarin
On the newer Xamarin clients (iOS and Android), the Device ID can be inspected on the General Settings page.
Technical Information
The Device ID should be unique enough to exclusively identify a device/client and shouldn't get lost if the app updates.
Windows
In the UWP/WinX client, the device id is created using the ASHWID identifier encoded to a Base64 string. (<= 3.7.X)
The SystemIdentification.GetSystemIdForPublisher() Method returns a unique system identifier based on the app publisher ID The ID is generated either using a Trusted Platform Module (TPM), if present, or a Unified Extensible Firmware Interface (UEFI) if present If neither of these sources is available, this method will return an ID that is backed by the Windows registry. If a system does not have a TPM or UEFI support, and thus an ID was obtained from the registry, a clean install of Windows will result in a new, different ID being returned. If no ID could be generated, the old ASHWIND identifier is used. (>= 3.8.X)
Android
On the native Android client, the ANDROID_ID (SSAID) is accessed. Before Android 8, this ID was bound to a device for its lifetime. Since Android 8, the ID is different for every user (if the device has the multi-user feature enabled) and when the device is reset.
On the Android Xamarin app, before version 1.0.80, depending on the version of the OS, the Build.SERIAL is accessed (below Android 8), and Build.getSerial starting with Android 8, also requiring the READ_PHONE_STATE
permission. With Android 10, the function only works for devices enrolled in an organization.
Version 1.0.80 of the Xamarin Android app based the device ID onto the ANDROID_ID (SSAID), in the same way to how the native Android client does it. This also removed the need for the READ_PHONE_STATE
permission. This method now also works for Android 10+, even for unenrolled devices.
iOS
On iOS, the application makes use of the identifierForVendor. This is a GUID uniquely identifying a device to an app vendor.