The human-friendly name of the device model. This is the name that people would typically use to refer to the device rather than a programmatic model identifier. This value of this field may be null if it cannot be determined.
Android only. The specific configuration or name of the industrial design. It represents the device's name when it was designed during manufacturing into mass production. On Android, it corresponds to Build.DEVICE. On web and iOS, this value is null.
Android only. The device's overall product name chosen by the device implementer containing the development name or code name of the device. Corresponds to Build.PRODUCT. On web and iOS, this value is null.
The device's total memory, in bytes. This is the total memory accessible to the kernel, but not necessarily to a single app. This is basically the amount of RAM the device has, not including below-kernel fixed allocations like DMA buffers, RAM for the baseband CPU, etc… On web, this value is null.
A list of supported processor architecture versions. The device expects the binaries it runs to be compiled for one of these architectures. This value is null if the supported architectures could not be determined, particularly on web.
The build ID of the OS that more precisely identifies the version of the OS. On Android, this corresponds to Build.DISPLAY (not Build.ID) and currently is a string as described here. On iOS, this corresponds to kern.osversion and is the detailed OS version sometimes displayed next to the more human-readable version. On web, this value is null.
Android only. The Android SDK version of the software currently running on this hardware device. This value never changes while a device is booted, but it may increase when the hardware manufacturer provides an OS update. See here to see all possible version codes and corresponding versions. On web and iOS, this value is null.
On Android, for devices other than TVs, the device type is determined by the screen resolution (screen diagonal size), so the result may not be completely accurate. If the screen diagonal length is between 3" and 6.9", the method returns DeviceType.PHONE. For lengths between 7" and 18", the method returns DeviceType.TABLET. Otherwise, the method returns DeviceType.UNKNOWN.
WARNING: This method is experimental and is not completely reliable. See description below.
Checks whether the device has been rooted (Android) or jailbroken (iOS). This is not completely reliable because there exist solutions to bypass root-detection on both iOS and Android. Further, many root-detection checks can be bypassed via reverse engineering.
On Android, it's implemented in a way to find all possible files paths that contain the "su" executable but some devices that are not rooted may also have this executable. Therefore, there's no guarantee that this method will always return correctly.
On iOS, these jailbreak checks are used to detect if a device is rooted/jailbroken. However, since there are closed-sourced solutions such as xCon that aim to hook every known method and function responsible for informing an application of a jailbroken device, this method may not reliably detect devices that have xCon or similar packages installed.
On web, this always resolves to false even if the device is rooted.
feature (string) -- The platform-specific name of the feature to check for on the device. You can get all available system features with Device.getSystemFeatureAsync(). See here to view acceptable feature strings.