| Device Unique ID | `getUniqueID()` | `string` e.g. "FCDBD8EF-62FC-4ECB-B2F5-92C9E79AC7F9" | This is IDFV on iOS so it will change if all apps from the current apps vendor have been previously uninstalled. |
> There is a type inconsistency: Android return an integer instead of the documented string.
| Device Country | `getDeviceCountry()` | `string` e.g. "US" | |
| Timezone | `getTimezone()` | `string` e.g. "America/Mexico_City" | |
---
| App is running in emulator | `isEmulator()` | `boolean` e.g. true | if app is running in emulator return true |
| App is running on a tablet | `isTablet()` | `boolean` e.g. true | if app is running on a tablet return true |
### getBundleId()
| PIN or fingerprint set | `isPinOrFingerprintSet()` | `(callback: (isPinOrFingerprintSet: boolean) => void) => void` | Only supported in Android and iOS 9.0 and above |
Gets the application bundle identifier.
| API Level | `getAPILevel()` | `number` e.g. 25 | ANDROID ONLY - see [API Levels](https://developer.android.com/guide/topics/manifest/uses-sdk-element.html#ApiLevels)|
| App Instance ID | `getInstanceID()` | `string` | ANDROID ONLY - see https://developers.google.com/instance-id/ |
**Examples**
| Phone Number | `getPhoneNumber()` | `?string` e.g. "2348675309" or "" | Only supported in Android |
```js
| First Install Time | `getFirstInstallTime()` | `number` e.g. 1505607068808 | Only supported in Android |
| Last Install Time | `getLastUpdateTime()` | `number` e.g. 1505607068808 | Only supported in Android |
```
| Serial Number | `getSerialNumber()` | `string` | Only supported in Android |
| IP Address | `getIPAddress()` | `Promise<string>` | Only supported in Android |
---
| MAC Address | `getMACAddress()` | `Promise<string>` | Only supported in Android |
| Carrier | `getCarrier()` | `string` e.g. "SOFTBANK" | |
### getCarrier()
| Total Memory | `getTotalMemory()` | `number` e.g. 1995018240 | Total amount of memory on the device |
Gets the carrier name (network operator).
| Max Memory | `getMaxMemory()` | `number` e.g. 268435456 | ANDROID ONLY - see https://developer.android.com/reference/java/lang/Runtime.html#maxMemory() |
| App Name | `getApplicationName()` | `string` e.g.Learnium Mobile | |
**Examples**
```js
Since the device setting for PIN/Fingerprint can be modified while the app is still open, this is available via callback instead of as a constant. To use, pass a callback function to the returned bridge function in your javascript: