expo の代わりに、react-native CLI を使用してプロジェクトを作成できます。
コマンドを使用して新しいプロジェクトを作成します。
react-native init Myproject
cd Myproject
次のコマンドを使用してプロジェクトを実行します。
react-native run-android
その後、react-native-device-info パッケージを使用できます。
次のバージョンで試してみましたが、うまくいきました。
"react": "16.0.0",
"react-native": "0.50.4",
"react-native-device-info": "^0.12.1",
コマンドでインストールしました:
npm install --save react-native-device-info
次に、コマンドでリンクします:
react-native link react-native-device-info
パッケージのリンク中に問題が発生した場合は、手動リンクを実行するか、パッケージが正常にリンクされているかどうかをクロスチェックできます。
- Android/app/build.gradle で:
dependencies {
...
compile "com.facebook.react:react-native:+" // From node_modules
+ compile project(':react-native-device-info')
}
- Android/settings.gradle で:
...
':app' を含める
':react-native-device-info' を含める
project(':react-native-device-info').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-device-info/android')
- 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()
);
}
......
}
権限
適切なオプションのアクセス許可を AndroidManifest.xml に追加します。
...
<uses-permission android:name="android.permission.BLUETOOTH"/> <!-- for Device Name -->
<uses-permission android:name="android.permission.READ_PHONE_STATE"/> <!-- for Phone Number -->
例
var DeviceInfo = require('react-native-device-info');
// or import DeviceInfo from 'react-native-device-info';
var deviceId = DeviceInfo.getUniqueID();
上記のdeviceIdを使用できます。