Package Exports
- react-native-device-info
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (react-native-device-info) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
react-native-device-info
Device Information for React Native
Install
npm install --save react-native-device-infoRN > 0.47 use 0.11 or higher
Automatically link
With React Native 0.27+
react-native link react-native-device-infoWith older versions of React Native
You need rnpm (npm install -g rnpm)
rnpm link react-native-device-infoManually link
iOS (via Cocoa Pods)
Add the following line to your build targets in your Podfile
pod 'RNDeviceInfo', :path => '../node_modules/react-native-device-info'
Then run pod install
iOS (without Cocoa Pods)
In XCode, in the project navigator:
- Right click Libraries
- Add Files to [your project's name]
- Go to
node_modules/react-native-device-info - Add the
.xcodeprojfile
In XCode, in the project navigator, select your project.
- Add the
libRNDeviceInfo.afrom the deviceinfo project to your project's Build Phases ➜ Link Binary With Libraries - Click
.xcodeprojfile you added before in the project navigator and go the Build Settings tab. Make sure All is toggled on (instead of Basic). - Look for Header Search Paths and make sure it contains both
$(SRCROOT)/../react-native/Reactand$(SRCROOT)/../../React - Mark both as recursive (should be OK by default).
Run your project (Cmd+R)
(Thanks to @brysgo for writing the instructions)
Android
- in
android/app/build.gradle:
dependencies {
...
compile "com.facebook.react:react-native:+" // From node_modules
+ compile project(':react-native-device-info')
}- in
android/settings.gradle:
...
include ':app'
+ include ':react-native-device-info'
+ project(':react-native-device-info').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-device-info/android')With React Native 0.29+
- in
MainApplication.java:
+ import com.learnium.RNDeviceInfo.RNDeviceInfo;
public class MainApplication extends Application implements ReactApplication {
//......
@Override
protected List<ReactPackage> getPackages() {
return Arrays.<ReactPackage>asList(
+ new RNDeviceInfo(),
new MainReactPackage()
);
}
......
}With older versions of React Native:
- in
MainActivity.java:
+ import com.learnium.RNDeviceInfo.RNDeviceInfo;
public class MainActivity extends ReactActivity {
......
@Override
protected List<ReactPackage> getPackages() {
return Arrays.<ReactPackage>asList(
+ new RNDeviceInfo(),
new MainReactPackage()
);
}
}(Thanks to @chirag04 for writing the instructions)
Windows
- Open the solution in Visual Studio for your Windows apps
- right click your in the Explorer and click Add > Existing Project...
- Navigate to
./<app-name>/node_modules/react-native-device-info/windows/RNDeviceInfoand addRNDeviceInfo.csproj - this time right click on your React Native Windows app under your solutions directory and click Add > Reference...
- check the
RNDeviceInfoyou just added and press ok - open up
MainPage.csfor your app and edit the file like so:
+ using RNDeviceInfo;
......
get
{
return new List<IReactPackage>
{
new MainReactPackage(),
+ new RNDeviceInfoPackage(),
};
}(Thanks to @josephan for writing the instructions)
Permissions
Add the appropriate, optional permissions to your AndroidManifest.xml:
...
<uses-permission android:name="android.permission.BLUETOOTH"/> <!-- for Device Name -->
<uses-permission android:name="android.permission.READ_PHONE_STATE"/> <!-- for Phone Number -->Release Notes
See CHANGELOG.md
Example
var DeviceInfo = require('react-native-device-info');
// or import DeviceInfo from 'react-native-device-info';| Name | Method | Return | Notes |
|---|---|---|---|
| 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. |
| Device Manufacturer | getManufacturer() |
string e.g. "Apple" |
|
| Device Brand | getBrand() |
string e.g. "Apple / htc / Xiaomi" |
|
| Device Model | getModel() |
string e.g. "iPhone 6" |
|
| Device ID | getDeviceId() |
string e.g. "iPhone7,2" |
Or the board on Android e.g. goldfish |
| Device is set to 24 hour time format | is24Hour() |
boolean e.g. true |
|
| System Name | getSystemName() |
string e.g. "iPhone OS" |
|
| System Version | getSystemVersion() |
string e.g. "9.0" |
|
| Bundle ID | getBundleId() |
string e.g. "com.learnium.mobile" |
|
| Build Number | getBuildNumber() |
string e.g. "89" |
|
| App Version | getVersion() |
string e.g. "1.1.0" |
|
| App Version (Readable) | getReadableVersion() |
string e.g. "1.1.0.89" |
|
| Device Name | getDeviceName() |
string e.g. "Becca's iPhone 6" |
|
| User Agent | getUserAgent() |
string e.g. "Mozilla/5.0 (Linux; Android 8.0.0; Nexus 5X Build/OPR4.170623.009; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/61.0.3163.98 Mobile Safari/537.36" |
|
| Device Locale | getDeviceLocale() |
string e.g. "en-US" |
|
| 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 |
| PIN or fingerprint set | isPinOrFingerprintSet() |
(callback: (isPinOrFingerprintSet: boolean) => void) => void |
Only supported in Android and iOS 9.0 and above |
| API Level | getAPILevel() |
number e.g. 25 |
ANDROID ONLY - see API Levels |
| App Instance ID | getInstanceID() |
string |
ANDROID ONLY - see https://developers.google.com/instance-id/ |
| Phone Number | getPhoneNumber() |
?string e.g. "2348675309" or "" |
Only supported in Android |
| 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" |
|
| Total Memory | getTotalMemory() |
number e.g. 1995018240 |
Total amount of memory on the device |
| 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 |
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:
RNDeviceInfo.isPinOrFingerprintSet()(isPinOrFingerprintSet => {
if (!isPinOrFingerprintSet) {
...
}
}