React Native のデバイス情報。
iOS Podfile は iOS 10 以上に移行する必要があります。このモジュールの v7 では iOS9 はサポートされなくなりました。
npm の使用:
npm install --save react-native-device-info
または糸を使用して:
yarn add react-native-device-info
インストールリファラー追跡を使用したい場合は、この構成を Proguard 構成に追加する必要があります。
-keep class com.android.installreferrer.api.** {
*;
}
リリース APK で hasGms() に関する問題が発生している場合は、Proguard 構成に次のルールを追加してください。
-keep class com.google.android.gms.common.** {*;}
このモジュールのデフォルトは AndroidX です。android android/build.gradle
ファイルの「ext」ブロックでこれと同様のライブラリ バージョンを設定する必要があります。
.. .
ext {
// dependency versions
We have 3 options for deviceId :
// Option 1 (latest):
firebaseIidVersion = " 19.0.1 " // default: "19.0.1"
// Option 2 (legacy GooglePlay dependency but using AndroidX):
googlePlayServicesIidVersion = " 17.0.0 " // default: "17.0.0" - AndroidX
// Option 3 (legacy GooglePlay dependency before AndroidX):
googlePlayServicesIidVersion = " 16.0.1 "
// include as needed:
compileSdkVersion = " 28 " // default: 28 (28 is required for AndroidX)
targetSdkVersion = " 28 " // default: 28 (28 is required for AndroidX)
supportLibVersion = ' 1.0.2 ' // Use '28.0.0' or don't specify for old libraries, '1.0.2' or similar for AndroidX
mediaCompatVersion = ' 1.0.1 ' // Do not specify if using old libraries, specify '1.0.1' or similar for androidx.media:media dependency
supportV4Version = ' 1.0.0 ' // Do not specify if using old libraries, specify '1.0.0' or similar for androidx.legacy:legacy-support-v4 dependency
}
.. .
AndroidX 以外が必要な場合は、Jetifier パッケージをリバース モードで使用する必要があります。ドキュメントはそのパッケージで入手できます。
ネイティブ モジュールでのリンクは、新しい反応ネイティブ開発者にとって頻繁にトラブルの原因となり、「RNDeviceInfo が null です」などのエラーが発生します。このため、自動リンクが実装されており、プロジェクトで使用する必要があります。
自動リンクはすべてのプラットフォームでサポートされています (React ネイティブ >= 0.63 の Windows でも!)
以前のバージョンでは手動でリンクを行う必要があります。これらの以前の反応ネイティブ バージョンに対するサポートは提供されていませんが、必要に応じてこの README の古いバージョンを参照してください。最新バージョンの反応ネイティブにアップグレードします。必要に応じて、インターネット上のupgrade-helper
ツールを使用します。
import DeviceInfo from 'react-native-device-info' ;
// or ES6+ destructured imports
import { getUniqueId , getManufacturer } from 'react-native-device-info' ;
多くの API はプラットフォーム固有であることに注意してください。プラットフォームに実装がない場合、受け取る「デフォルト」の戻り値は、文字列の場合は"unknown"
、数値の場合は-1
、ブール値の場合はfalse
です。配列とオブジェクトは空になります (それぞれ[]
と{}
)。
ほとんどの API は Promise を返しますが、同期的に動作するSync
備えた対応する API も末端にあります。たとえば、アプリの起動の最初の部分での非同期呼び出しを避けるために、アプリのブートストラップ中にisCameraPresentSync()
を呼び出すことをお勧めします。
getUserAgentSync に関する注意事項
非同期メソッドgetUserAgent
両方のプラットフォームで使用できますが、 getUserAgentSync
は Android でのみサポートされます。
このリポジトリのサンプル アプリは、すべての API の使用例を示しています。質問がある場合はサンプル アプリを参照してください。問題があると思われる場合は、報告する前にサンプル アプリを使用して再現できることを確認してください。ありがとうございます。
方法 | 戻り値の型 | iOS | アンドロイド | 窓 | ウェブ | ビジョンOS |
---|---|---|---|---|---|---|
getAndroidId() | Promise | ✅ | ||||
getApiLevel() | Promise | ✅ | ||||
getアプリケーション名() | string | ✅ | ✅ | ✅ | ✅ | |
getAvailableLocationProviders() | Promise | ✅ | ✅ | ✅ | ||
getBaseOs() | Promise | ✅ | ✅ | ✅ | ||
getBuildId() | Promise | ✅ | ✅ | ✅ | ✅ | |
getBatteryLevel() | Promise | ✅ | ✅ | ✅ | ✅ | ✅ |
getBootloader() | Promise | ✅ | ||||
ブランドを取得() | string | ✅ | ✅ | ✅ | ✅ | |
getBuildNumber() | string | ✅ | ✅ | ✅ | ✅ | |
getBundleId() | string | ✅ | ✅ | ✅ | ✅ | |
isCameraPresent() | Promise | ✅ | ✅ | ✅ | ||
getキャリア() | Promise | ✅ | ✅ | |||
getコード名() | Promise | ✅ | ||||
getDevice() | Promise | ✅ | ||||
getDeviceId() | string | ✅ | ✅ | ✅ | ✅ | |
getDeviceType() | string | ✅ | ✅ | ✅ | ||
getDisplay() | Promise | ✅ | ||||
getデバイス名() | Promise | ✅ | ✅ | ✅ | ✅ | |
getDeviceToken() | Promise | ✅ | ✅ | |||
getFirstInstallTime() | Promise | ✅ | ✅ | ✅ | ✅ | |
get指紋() | Promise | ✅ | ||||
getFontScale() | Promise | ✅ | ✅ | ✅ | ||
getFreeDiskStorage() | Promise | ✅ | ✅ | ✅ | ✅ | ✅ |
getFreeDiskStorageOld() | Promise | ✅ | ✅ | ✅ | ✅ | ✅ |
getハードウェア() | Promise | ✅ | ||||
getホスト() | Promise | ✅ | ✅ | |||
getHostNames() | Promise | ✅ | ||||
getIpアドレス() | Promise | ✅ | ✅ | ✅ | ✅ | |
getIncremental() | Promise | ✅ | ||||
getInstallerPackageName() | Promise | ✅ | ✅ | ✅ | ✅ | |
getInstallReferrer() | Promise | ✅ | ✅ | ✅ | ||
getInstanceId() | Promise | ✅ | ||||
getLastUpdateTime() | Promise | ✅ | ||||
getMacAddress() | Promise | ✅ | ✅ | ✅ | ||
getメーカー() | Promise | ✅ | ✅ | ✅ | ✅ | |
getMaxMemory() | Promise | ✅ | ✅ | ✅ | ||
getModel() | string | ✅ | ✅ | ✅ | ✅ | |
getPowerState() | Promise | ✅ | ✅ | ✅ | ✅ | ✅ |
getProduct() | Promise | ✅ | ||||
getPreviewSdkInt() | Promise | ✅ | ||||
getReadableVersion() | string | ✅ | ✅ | ✅ | ✅ | |
getシリアル番号() | Promise | ✅ | ✅ | |||
getSecurityPatch() | Promise | ✅ | ||||
getStartupTime() | Promise | ✅ | ✅ | ✅ | ||
getSystemAvailableFunctions() | Promise | ✅ | ||||
getシステム名() | string | ✅ | ✅ | ✅ | ✅ | |
getSystemVersion() | string | ✅ | ✅ | ✅ | ✅ | |
getTags() | Promise | ✅ | ||||
getType() | Promise | ✅ | ||||
getTotalDiskCapacity() | Promise | ✅ | ✅ | ✅ | ✅ | ✅ |
getTotalDiskCapacityOld() | Promise | ✅ | ✅ | ✅ | ✅ | ✅ |
getTotalMemory() | Promise | ✅ | ✅ | ✅ | ✅ | |
getUniqueId() | Promise | ✅ | ✅ | ✅ | ✅ | |
getusedMemory() | Promise | ✅ | ✅ | ✅ | ✅ | ✅ |
getUserAgent() | Promise | ✅ | ✅ | ✅ | ✅ | |
getUserAgentSync() | string | ✅ | ✅ | |||
getVersion() | string | ✅ | ✅ | ✅ | ✅ | |
getBrightness() | Promise | ✅ | ||||
hasGms() | Promise | ✅ | ||||
hasHms() | Promise | ✅ | ||||
hasNotch() | boolean | ✅ | ✅ | ✅ | ✅ | |
hasDynamicIsland() | boolean | ✅ | ✅ | ✅ | ✅ | |
hasSystemFeature() | Promise | ✅ | ||||
isAirplaneMode() | Promise | ✅ | ✅ | |||
isBatteryCharging() | Promise | ✅ | ✅ | ✅ | ✅ | ✅ |
isEmulator() | Promise | ✅ | ✅ | ✅ | ✅ | |
isKeyboardConnected() | Promise | ✅ | ||||
isLandscape() | Promise | ✅ | ✅ | ✅ | ✅ | |
isLocationEnabled() | Promise | ✅ | ✅ | ✅ | ✅ | |
isMouseConnected() | Promise | ✅ | ||||
isHeadphonesConnected() | Promise | ✅ | ✅ | ✅ | ||
isWiredHeadphonesConnected() | Promise | ✅ | ✅ | ✅ | ||
isBluetoothHeadphonesConnected() | Promise | ✅ | ✅ | ✅ | ||
isPinOrFingerprintSet() | Promise | ✅ | ✅ | ✅ | ✅ | |
isタブレット() | boolean | ✅ | ✅ | ✅ | ✅ | |
isLowRamDevice() | boolean | ✅ | ||||
isDisplayZoomed() | boolean | ✅ | ||||
isタブレットモード() | Promise | ✅ | ||||
サポートされる32BitAbis() | Promise | ✅ | ||||
サポートされる64BitAbis() | Promise | ✅ | ||||
サポートされるAbis() | Promise | ✅ | ✅ | ✅ | ✅ | |
syncUniqueId() | Promise | ✅ | ✅ | |||
getSupportedMediaTypeList() | Promise | ✅ |
APIレベルを取得します。
DeviceInfo . getApiLevel ( ) . then ( ( apiLevel ) => {
// iOS: ?
// Android: 25
// Windows: ?
} ) ;
API レベルを参照
ANDROID_IDを取得します。適切な使用方法については、API ドキュメントを参照してください。
DeviceInfo . getAndroidId ( ) . then ( ( androidId ) => {
// androidId here
} ) ;
アプリケーション名を取得します。
let appName = DeviceInfo . getApplicationName ( ) ;
// AwesomeApp
製品のベースとなる基本 OS ビルド。
DeviceInfo . getBaseOs ( ) . then ( ( baseOs ) => {
// "Windows", "Android" etc
} ) ;
デバイスのバッテリー レベルを 0 から 1 までの浮動小数点数として取得します。
DeviceInfo . getBatteryLevel ( ) . then ( ( batteryLevel ) => {
// 0.759999
} ) ;
実際のバッテリーレベルを取得できるようにするには、アプリケーションのバッテリー監視モードを有効にします。このコードを追加します。
[UIDevice currentDevice ].batteryMonitoringEnabled = true ;
AppDelegate.m アプリケーション:didFinishLaunchingWithOptions:
iOS シミュレータでは -1 を返します
システム ブートローダーのバージョン番号。
DeviceInfo . getBootloader ( ) . then ( ( bootloader ) => {
// "mw8998-002.0069.00"
} ) ;
デバイスのブランドを取得します。
let brand = DeviceInfo . getBrand ( ) ;
// iOS: "Apple"
// Android: "xiaomi"
// Windows: ?
アプリケーションのビルド番号を取得します。
let buildNumber = DeviceInfo . getBuildNumber ( ) ;
// iOS: "89"
// Android: "4"
// Windows: ?
アプリケーションバンドル識別子を取得します。
let bundleId = DeviceInfo . getBundleId ( ) ;
// "com.example.AwesomeApp"
デバイスに現在カメラが搭載されているかどうかを示します。
DeviceInfo . isCameraPresent ( )
. then ( ( isCameraPresent ) => {
// true or false
} )
. catch ( ( cameraAccessException ) => {
// is thrown if a camera device could not be queried or opened by the CameraManager on Android
} ) ;
- カメラのホット追加/削除がサポートされています。
- カメラの物理的な存在のステータスを返します。カメラは存在するが、アプリにそれを使用する権限がない場合でも、isCameraPresent は true を返します。
通信事業者名(通信事業者)を取得します。
DeviceInfo . getCarrier ( ) . then ( ( carrier ) => {
// "SOFTBANK"
} ) ;
現在の開発コードネーム、またはこれがリリース ビルドの場合は文字列「REL」。
DeviceInfo . getCodename ( ) . then ( ( codename ) => {
// "REL"
} ) ;
工業デザインの名前。
DeviceInfo . getDevice ( ) . then ( ( device ) => {
// "walleye"
} ) ;
デバイスIDを取得します。
let deviceId = DeviceInfo . getDeviceId ( ) ;
// iOS: "iPhone7,2"
// Android: "goldfish"
// Windows: "Y3R94UC#AC4"
ユーザーに表示するためのビルド ID 文字列。
DeviceInfo . getDisplay ( ) . then ( ( display ) => {
// "OPM2.171026.006.G1"
} ) ;
デバイス名を取得します。
DeviceInfo . getDeviceName ( ) . then ( ( deviceName ) => {
// iOS: "Becca's iPhone 6"
// Android: ?
// Windows: ?
} ) ;
これには android.permission.BLUETOOTH が必要でしたが、v3 の新しい実装では必要ありません。この API 用に AndroidManifest.xml があった場合は、それを AndroidManifest.xml から削除できます。 iOS 16 以降では、ユーザー定義のデバイス名にアクセスするための資格が必要です。そうでない場合は、一般的な値 (例: 「iPad」、「iPhone」) が返されます。
デバイス トークンを取得します (DeviceCheck を参照)。実際のデバイスでは iOS 11.0 以降でのみ利用可能です。 getDeviceToken がサポートされていない場合、これにより Promise が拒否されます。例外処理には注意してください。
DeviceInfo . getDeviceToken ( ) . then ( ( deviceToken ) => {
// iOS: "a2Jqsd0kanz..."
} ) ;
アプリが最初にインストールされた時間をミリ秒単位で取得します。
DeviceInfo . getFirstInstallTime ( ) . then ( ( firstInstallTime ) => {
// Android: 1517681764528
} ) ;
このビルドを一意に識別する文字列。
DeviceInfo . getFingerprint ( ) . then ( ( fingerprint ) => {
// "google/walleye/walleye:8.1.0/OPM2.171026.006.G1/4820017:user/release-keys"
} ) ;
デバイスのフォントスケールを取得します。フォント スケールは、現在のシステム フォントと「通常の」フォント サイズの比率です。したがって、通常のテキストが 10 ポイントでシステム フォントが現在 15 ポイントの場合、フォント スケールは 1.5 になります。これは、アクセシビリティ設定が有効になっているかどうかを判断するために使用できます。デバイス用に変更されました。フォント スケールが大幅に大きい ( > 2.0 ) 場合は、特定のビューを再レイアウトする必要がある場合があります。
DeviceInfo . getFontScale ( ) . then ( ( fontScale ) => {
// 1.2
} ) ;
ルート ファイル システムとデータ ファイル システムの両方の計算を考慮して、利用可能なストレージ サイズをバイト単位で取得するメソッド。
iOSでは、このメソッドは次のオプションの引数を受け入れます。
'total'
: volumeAvailableCapacityKey
を使用します'important'
: volumeAvailableCapacityForImportantUsageKey
を使用します'opportunistic'
: volumeAvailableCapacityForOpportunisticUsageKey
を使用します詳細については、ボリューム ストレージ容量の確認に関する Apple ドキュメントを参照してください。
DeviceInfo . getFreeDiskStorage ( ) . then ( ( freeDiskStorage ) => {
// Android: 17179869184
// iOS: 17179869184
} ) ;
DeviceInfo . getFreeDiskStorage ( 'important' ) . then ( ( freeDiskStorage ) => {
// iOS: 18198219342 (important storage)
} ) ;
Android のこのメソッドで使用される API は v6.0.0 で変更されました。古いバージョンはgetFreeDiskStorageOld()
として以下に維持されています。 iOS では、 getFreeDiskStorage()
とgetFreeDiskStorageOld()
同じ値を返します。
利用可能なストレージ サイズをバイト単位で取得するメソッドの古い実装。
DeviceInfo . getFreeDiskStorageOld ( ) . then ( ( freeDiskStorage ) => {
// Android: 17179869184
// iOS: 17179869184
} ) ;
開発者.android.com から:
このメソッドは API レベル 29 で非推奨になりました。
プライマリ共有/外部ストレージ ディレクトリを返します。
注: ここでの「外部」という言葉に混同しないでください。このディレクトリは、メディア/共有ストレージとして考えることができます。これは、比較的大量のデータを保持でき、すべてのアプリケーション間で共有される (アクセス許可を強制しない) ファイル システムです。従来、これは SD カードですが、保護された内部ストレージとは別のデバイスの内蔵ストレージとして実装することもでき、コンピューター上のファイルシステムとしてマウントできます。
ハードウェアの名前 (カーネル コマンド ラインまたは /proc から)。
DeviceInfo . getHardware ( ) . then ( hardware => {
// "walleye"
} ) ;
ホスト名
DeviceInfo . getHost ( ) . then ( ( host ) => {
// "wprd10.hot.corp.google.com"
} ) ;
非推奨デバイスの現在の IP アドレスを取得します。 (Wi-Fi のみ)react-native-netinfo/netinfo または reverse-native-network-info に切り替えます
DeviceInfo . getIpAddress ( ) . then ( ( ip ) => {
// "92.168.32.44"
} ) ;
iOS のサポートは 0.22.0 で追加されました
このビルドを表すために基礎となるソース管理によって使用される内部値。
DeviceInfo . getIncremental ( ) . then ( ( incremental ) => {
// "4820017"
} ) ;
このビルドを表すために基礎となるソース管理によって使用される内部値。
DeviceInfo . getInstallerPackageName ( ) . then ( ( installerPackageName ) => {
// Play Store: "com.android.vending"
// Amazon: "com.amazon.venezia"
// Samsung App Store: "com.sec.android.app.samsungapps"
// iOS: "AppStore", "TestFlight", "Other"
} ) ;
アプリケーションのインストール時にリファラー文字列を取得します。
DeviceInfo . getInstallReferrer ( ) . then ( ( installReferrer ) => {
// If the app was installed from https://play.google.com/store/apps/details?id=com.myapp&referrer=my_install_referrer
// the result will be "my_install_referrer"
} ) ;
アプリケーションインスタンスIDを取得します。
これは、次の順序でこれらのソースからインスタンス ID を取得しようとします。
instanceId
の値react-native-device-info
firebaseBomVersion
またはfirebaseIidVersion
が gradle ext で定義されている場合 -非推奨)googlePlayServicesIidVersion
またはgooglePlayServicesVersion
が gradle ext で定義されている場合 -非推奨)非推奨のソースを使用している場合、生成されたインスタンス ID は共有設定に保存されるため、react-native-device-info のこのメジャー バージョンの間は安定しています。
React-native-device-info の将来のバージョンでは、Firebase IID と GMS IID の実装は削除され、将来のすべての値は SharedPreferences に保存された値 (存在する場合)、またはその後保存される新しいランダム UUID になります。将来そのアプリのインストールに使用されます。
DeviceInfo . getInstanceId ( ) . then ( ( instanceId ) => {
// Android: da4e0245-5d6c-402a-a07c-0c5349f229e2
} ) ;
https://developers.google.com/instance-id/ を参照してください。
アプリが最後に更新された時刻をミリ秒単位で取得します。
DeviceInfo . getLastUpdateTime ( ) . then ( ( lastUpdateTime ) => {
// Android: 1517681764992
} ) ;
ネットワークアダプターのMACアドレスを取得します。
DeviceInfo . getMacAddress ( ) . then ( ( mac ) => {
// "E5:12:D8:E5:69:97"
} ) ;
iOS: iOS 7 以降、MAC アドレスの取得が無効になっているため、このメソッドは常に「02:00:00:00:00:00」を返します。
デバイスの製造元を取得します。
DeviceInfo . getManufacturer ( ) . then ( ( manufacturer ) => {
// iOS: "Apple"
// Android: "Google"
// Windows: ?
} ) ;
VM が使用しようとするメモリの最大量をバイト単位で返します。
DeviceInfo . getMaxMemory ( ) . then ( ( maxMemory ) => {
// 402653183
} ) ;
デバイスのモデルを取得します。
iOS の警告:デバイス名のリストはコミュニティによって管理されているため、新しいデバイスに遅れが生じる可能性があります。 getDeviceId()
を使用することをお勧めします。新しい iOS デバイスをデバイス名とともにリストに追加するプル リクエストは受け付けます。
let model = DeviceInfo . getModel ( ) ;
// iOS: ?
// Android: ?
// Windows: ?
getPhoneNumber() は削除されました。このメソッドは、非推奨の Android API を使用します。電話番号を取得するには、react-native-sim-cards-manager を使用します。
バッテリーレベル、接続されているかどうか、システムが現在低電力モードで動作しているかどうかなど、デバイスの電源状態を取得します。バッテリー監視が有効になっていない場合、またはエミュレータ上で試行した場合 (監視が不可能な場合)、iOS に警告を表示します。
DeviceInfo . getPowerState ( ) . then ( ( state ) => {
// {
// batteryLevel: 0.759999,
// batteryState: 'unplugged',
// lowPowerMode: false,
// }
} ) ;
製品全体の名前。
DeviceInfo . getProduct ( ) . then ( ( product ) => {
// "walleye"
} ) ;
プレリリース SDK の開発者プレビュー リビジョン。
DeviceInfo . getPreviewSdkInt ( ) . then ( ( previewSdkInt ) => {
// 0
} ) ;
アプリケーションの人間が読めるバージョンを取得します (getVersion() + '.' + getBuildNumber() と同じ)
let readableVersion = DeviceInfo . getReadableVersion ( ) ;
// iOS: 1.0.1.32
// Android: 1.0.1.234
// Windows: ?
デバイスのシリアル番号を取得します。特権のあるアプリを使用していて、自分が何をしているのかを知っている場合を除き、ほとんどの場合、「不明」になります。
DeviceInfo . getSerialNumber ( ) . then ( ( serialNumber ) => {
// iOS: unknown
// Android: ? (maybe a serial number, if your app is privileged)
// Windows: ? (a serial number, if your app has the "capability smbios")
} ) ;
Windows でこの方法を使用したい場合は、アプリケーションに smbios 機能を追加する必要があります。マニフェスト ファイルに機能を追加するには、このドキュメントに従ってください。
ユーザーに表示されるセキュリティ パッチ レベル。
DeviceInfo . getSecurityPatch ( ) . then ( ( securityPatch ) => {
// "2018-07-05"
} ) ;
デバイスのOS名を取得します。
let systemName = DeviceInfo . getSystemName ( ) ;
// iOS: "iOS" on newer iOS devices "iPhone OS" on older devices (including older iPad models), "iPadOS" for iPads using iPadOS 15.0 or higher.
// Android: "Android"
// Windows: ?
現在のアプリプロセスが開始された時刻をミリ秒単位で取得します。
DeviceInfo . getStartupTime ( ) . then ( ( startupTime ) => {
// Android: 1517681764528
// iOS: 1517681764528
} ) ;
デバイスのOSバージョンを取得します。
let systemVersion = DeviceInfo . getSystemVersion ( ) ;
// iOS: "11.0"
// Android: "7.1.1"
// Windows: ?
オペレーティング システムのビルド番号を取得します。
DeviceInfo . getBuildId ( ) . then ( ( buildId ) => {
// iOS: "12A269"
// tvOS: not available
// Android: "13D15"
// Windows: not available
} ) ;
ビルドを説明するカンマ区切りのタグ。
DeviceInfo . getTags ( ) . then ( ( tags ) => {
// "release-keys, unsigned, debug",
} ) ;
ビルドのタイプ。
DeviceInfo . getType ( ) . then ( ( type ) => {
// "user", "eng"
} ) ;
ルート ファイル システムとデータ ファイル システムの両方の計算を考慮して、完全なディスク ストレージ サイズをバイト単位で取得するメソッド。
DeviceInfo . getTotalDiskCapacity ( ) . then ( ( capacity ) => {
// Android: 17179869184
// iOS: 17179869184
} ) ;
Android のこのメソッドで使用される API は v6.0.0 で変更されました。古いバージョンはgetTotalDiskCapacityOld()
として以下に維持されています。 iOS では、 getTotalDiskCapacity()
とgetTotalDiskCapacityOld()
同じ値を返します。
完全なディスク ストレージ サイズ (バイト単位) を取得するメソッドの古い実装。
DeviceInfo . getTotalDiskCapacityOld ( ) . then ( ( capacity ) => {
// Android: 17179869184
// iOS: 17179869184
} ) ;
デバイスの合計メモリをバイト単位で取得します。
DeviceInfo . getTotalMemory ( ) . then ( ( totalMemory ) => {
// 1995018240
} ) ;
この識別子は一部のアプリ ストア (Huawei や Google Play など) では機密情報とみなされ、ユーザーの同意なしに、または未承認の目的で使用された場合、アプリが削除または拒否される可能性があります。詳細については、ストア ポリシーを参照してください (以下の注を参照)。
デバイス固有のIDを取得します。 Android では、現時点ではこのモジュールのgetAndroidId()
と同じです。 iOS では、 DeviceUID
uid 識別子が使用されます。 Windows では、 Windows.Security.ExchangeActiveSyncProvisioning.EasClientDeviceInformation.id
を使用します。
DeviceInfo . getUniqueId ( ) . then ( ( uniqueId ) => {
// iOS: "FCDBD8EF-62FC-4ECB-B2F5-92C9E79AC7F9"
// Android: "dd96dec43fb81c97"
// Windows: "{2cf7cb3c-da7a-d508-0d7f-696bb51185b4}"
} ) ;
- iOS: これは
IDFV
、または IDFV が使用できない場合はランダムな文字列です。 UID が生成されると、iOS キーチェーンと NSUserDefaults に保存されます。そのため、アプリを削除したりIDFVをリセットしたりしても、状況は変わりません。これは永続的な一意の ID であると慎重に考えることができます。これは、誰かが Keychain/NSUserDefaults の値を手動でオーバーライドする場合、または Apple が Keychain と NSUserDefaults の実装を変更する場合にのみ変更できます。注意: IDFV はバンドル識別子を使用して計算されるため、アプリ拡張機能では異なります。- android: Oreo より前は、この ID (ANDROID_ID) は、一度携帯電話をセットアップすると常に同じになります。
- android: Google Play ポリシー、「永続的なデバイス識別子」を参照してください。 Huawei - AppGallery レビューガイドラインでは、「永続的なデバイス識別子」と「ユーザーの同意の取得」を参照してください。
このメソッドは iOS を対象としています。
これにより、uniqueId がIDFV
と同期されるか、ランダムな文字列が新たに設定されます。
iOS では、 DeviceUID
uid 識別子が使用されます。他のプラットフォームでは、このモジュールでgetUniqueId()
を呼び出すだけです。
DeviceInfo . syncUniqueId ( ) . then ( ( uniqueId ) => {
// iOS: "FCDBD8EF-62FC-4ECB-B2F5-92C9E79AC7F9"
// Android: "dd96dec43fb81c97"
// Windows: ?
} ) ;
- ユーザーが 1 台の iOS デバイスから 2 台目の iOS デバイスにデータを移動または復元した場合、Keychain/NSUserDefaults に同じ
uniqueId
持つ 2 つの異なるデバイスが存在することになります。ユーザーは新しい iOS デバイスでsyncUniqueId()
を呼び出すことができます。これにより、IDFV
またはランダムな文字列からuniqueId
更新されます。
アプリのメモリ使用量をバイト単位で取得します。
注: このメソッドは、ユーザー向けのプロセス管理 UI のデバッグまたは構築のみを目的としています。
DeviceInfo . getUsedMemory ( ) . then ( ( usedMemory ) => {
// 23452345
} ) ;
このメソッドは、サポートされているメディア コーデックのリストを取得します。
DeviceInfo . getSupportedMediaTypeList ( ) . then ( ( string [ ] ) => {
// ["audio/mpeg", "audio/mp4a-latm", "audio/mp4a-latm", "audio/mp4a-latm", "audio/mp4a-latm", "video/avc", "video/3gpp", "video/hevc", "video/mp4v-es", "video/av01", "video/avc", "video/avc", "video/avc", "video/avc"]
} ) ;
デバイスのユーザー エージェントを取得します。
DeviceInfo . getUserAgent ( ) . then ( ( userAgent ) => {
// iOS: "Mozilla/5.0 (iPhone; CPU iPhone OS 9_1 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13B143"
// tvOS: not available
// Android: "Mozilla/5.0 (Linux; Android 12; sdk_gphone64_arm64 Build/SE1A.220630.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/91.0.4472.114 Mobile Safari/537.36"
// Windows: ?
} ) ;
アプリケーションのバージョンを取得します。バージョン文字列はデバイス/OS 形式であり、追加データ (ビルド番号など) を含めることができることを考慮してください。バージョン形式を確認したい場合は、正規表現を使用して、返されたバージョン文字列の必要な部分を取得できます。
let version = DeviceInfo . getVersion ( ) ;
// iOS: "1.0"
// Android: "1.0" or "1.0.2-alpha.12"
// Windows: ?
デバイスが機内モードかどうかを示します。
DeviceInfo . isAirplaneMode ( ) . then ( ( airplaneModeOn ) => {
// false
} ) ;
- これは、リモート デバッガーが無効になっている場合にのみ機能します。
バッテリーが現在充電中かどうかを示します。
DeviceInfo . isBatteryCharging ( ) . then ( ( isCharging ) => {
// true or false
} ) ;
アプリケーションがエミュレータで実行されているかどうかを示します。
DeviceInfo . isEmulator ( ) . then ( ( isEmulator ) => {
// false
} ) ;
デバイスにキーボードが接続されているかどうかを示します。
let isKeyboardConnected = DeviceInfo . isKeyboardConnected ( ) ;
// true
デバイスに PIN 番号または指紋が設定されているかどうかを示します。
DeviceInfo . isPinOrFingerprintSet ( ) . then ( ( isPinOrFingerprintSet ) => {
if ( ! isPinOrFingerprintSet ) {
// ...
}
} ) ;
デバイスがタブレットかどうかを示します。
let isTablet = DeviceInfo . isTablet ( ) ;
// true
デバイスの RAM が少ないかどうかを示します。
let isLowRamDevice = DeviceInfo . isLowRamDevice ( ) ;
// true
ユーザーが表示ズームをズームに変更したかどうかを示します
let isDisplayZoomed = DeviceInfo . isDisplayZoomed ( ) ;
// true
デバイスがタブレット モードかどうかを示します。
let isTabletMode = DeviceInfo . isTabletMode ( ) ;
// true
デバイスが現在横向きモードであるかどうかを示します。
DeviceInfo . isLandscape ( ) . then ( ( isLandscape ) => {
// true
} ) ;
デバイスにマウスが接続されているかどうかを示します。
let isMouseConnected = DeviceInfo . isMouseConnected ( ) ;
// true
デバイスが Google モバイル サービスをサポートしているかどうかを示します。
DeviceInfo . hasGms ( ) . then ( ( hasGms ) => {
// true
} ) ;
デバイスが Huawei モバイル サービスをサポートしているかどうかを示します。
DeviceInfo . hasHms ( ) . then ( ( hasHms ) => {
// true
} ) ;
デバイスにノッチがあるかどうかを示します。
let hasNotch = DeviceInfo . hasNotch ( ) ;
// true
デバイスに動的アイランドがあるかどうかを示します。
let hasDynamicIsland = DeviceInfo . hasDynamicIsland ( ) ;
// true
デバイスのタイプを文字列として返します。これは次のいずれかになります。
Handset
Tablet
Tv
Desktop
GamingConsole
Headset
unknown
let type = DeviceInfo . getDeviceType ( ) ;
// 'Handset'
このデバイスでサポートされる 32 ビット ABI の順序付きリスト。
DeviceInfo . supported32BitAbis ( ) . then ( ( abis ) => {
// ["armeabi-v7a", "armeabi"]
} ) ;
このデバイスでサポートされる 64 ビット ABI の順序付きリスト。
DeviceInfo . supported64BitAbis ( ) . then ( ( abis ) => {
// ["arm64-v8a"]
} ) ;
サポートされているプロセッサ アーキテクチャのバージョンのリストを返します。
DeviceInfo . supportedAbis ( ) . then ( ( abis ) => {
// [ "arm64 v8", "Intel x86-64h Haswell", "arm64-v8a", "armeabi-v7a", "armeabi", "win_x86", "win_arm", "win_x64" ]
} ) ;
デバイスに特定のシステム機能があるかどうかを示します。
DeviceInfo . hasSystemFeature ( 'amazon.hardware.fire_tv' ) . then ( ( hasFeature ) => {
// true or false
} ) ;
Android で利用可能なシステム機能のリストを返します。
DeviceInfo . getSystemAvailableFeatures ( ) . then ( ( features ) => {
// ["android.software.backup", "android.hardware.screen.landscape", "android.hardware.wifi", ...]
} ) ;
デバイスの位置情報サービスがデバイスレベルでオフになっているかどうかを示します (アプリ固有の権限とは関係ありません)。
DeviceInfo . isLocationEnabled ( ) . then ( ( enabled ) => {
// true or false
} ) ;
デバイスが有線ヘッドセットまたは Bluetooth ヘッドフォンに接続されているかどうかを示します
DeviceInfo . isHeadphonesConnected ( ) . then ( ( enabled ) => {
// true or false
} ) ;
デバイスが有線ヘッドセットに接続されているかどうかを示します
DeviceInfo . isWiredHeadphonesConnected ( ) . then ( ( enabled ) => {
// true or false
} ) ;
デバイスが Bluetooth ヘッドセットに接続されているかどうかを示します
DeviceInfo . isBluetoothHeadphonesConnected ( ) . then ( ( enabled ) => {
// true or false
} ) ;
プラットフォーム固有の位置プロバイダー/サービスのオブジェクトを、現在利用可能かどうかに関係なくboolean
値とともに返します。
注: この機能には、Android の位置情報権限へのアクセスが必要です。
DeviceInfo . getAvailableLocationProviders ( ) . then ( ( providers ) => {
// {
// gps: true
// network: true
// passive: true
// }
} ) ;
DeviceInfo . getAvailableLocationProviders ( ) . then ( ( providers ) => {
// {
// headingAvailable: false
// isRangingAvailable: false
// locationServicesEnabled: true
// significantLocationChangeMonitoringAvailable: true
// }
} ) ;
デバイスのメイン画面の現在の輝度レベルを取得します。現在iOSのみです。 0.0 ~ 1.0 の数値を返します。
DeviceInfo . getBrightness ( ) . then ( ( brightness ) => {
// iOS: 0.6
} ) ;
Windows、iOS、Android でサポートされています (バッテリー/充電関連 API の Web サポート)。
バッテリーレベルが変化すると発生します。 1 分に 1 回以上の頻度で送信されません。
import { useBatteryLevel } from 'react-native-device-info' ;
const batteryLevel = useBatteryLevel ( ) ; // 0.759999
< Text > { batteryLevel } < / Text > ;
import { NativeEventEmitter , NativeModules } from 'react-native' ;
const deviceInfoEmitter = new NativeEventEmitter ( NativeModules . RNDeviceInfo ) ;
deviceInfoEmitter . addListener ( 'RNDeviceInfo_batteryLevelDidChange' , ( level ) => {
// 0.759999
} ) ;
バッテリーレベルが低いと考えられるときに発生します(充電されるまで複数回)
プラットフォーム | パーセンテージ |
---|---|
iOS | 20 |
アンドロイド | 15 |
ウェブ | 20 |
窓 | 20 |
import { useBatteryLevelIsLow } from 'react-native-device-info' ;
const batteryLevelIsLow = useBatteryLevelIsLow ( ) ; // 0.19
< Text > { batteryLevelIsLow } < / Text > ;
import { NativeEventEmitter , NativeModules } from 'react-native' ;
const deviceInfoEmitter = new NativeEventEmitter ( NativeModules . RNDeviceInfo ) ;
deviceInfoEmitter . addListener ( 'RNDeviceInfo_batteryLevelIsLow' , ( level ) => {
// 0.19
} ) ;
バッテリーの状態が変化したとき、またはデバイスが省電力モードになったときに発生します。たとえば、デバイスが充電モードに入ったときやプラグが抜かれたときなどです。
import { usePowerState } from 'react-native-device-info' ;
const powerState = usePowerState ( ) ;
// {
// batteryLevel: 0.759999,
// batteryState: 'unplugged',
// lowPowerMode: false,
// }
< Text > { powerState } < / Text > ;
import { NativeEventEmitter , NativeModules } from 'react-native'
const deviceInfoEmitter = new NativeEventEmitter ( NativeModules . RNDeviceInfo )
deviceInfoEmitter . addListener ( 'RNDeviceInfo_powerStateDidChange' , { powerState } = > {
// {
// batteryLevel: 0.759999,
// batteryState: 'unplugged',
// lowPowerMode: false,
// }
} ) ;
アプリが最初にインストールされた時間をミリ秒単位で取得します。
import { useFirstInstallTime } from 'react-native-device-info' ;
const { loading , result } = useFirstInstallTime ( ) ; // { loading: true, result: 1517681764528}
< Text > { loading ? 'loading...' : result } < / Text > ;
デバイス名を取得します。
import { useDeviceName } from 'react-native-device-info' ;
const { loading , result } = useDeviceName ( ) ; // { loading: true, result: "Becca's iPhone 6"}
< Text > { loading ? 'loading...' : result } < / Text > ;
デバイスに特定のシステム機能があるかどうかを示します。
import { useHasSystemFeature } from 'react-native-device-info' ;
const { loading , result } = useHasSystemFeature ( 'amazon.hardware.fire_tv' ) ; // { loading: true, result: false }
< Text > { loading ? 'loading...' : result } < / Text > ;
アプリケーションがエミュレータで実行されているかどうかを取得します。
import { useIsEmulator } from 'react-native-device-info' ;
const { loading , result } = useIsEmulator ( ) ; // { loading: true, result: false }
< Text > { loading ? 'loading...' : result } < / Text > ;
デバイスの製造元を取得します。
import { useManufacturer } from 'react-native-device-info' ;
const { loading , result } = useManufacturer ( ) ; // { loading: true, result: "Apple"}
< Text > { loading ? 'loading...' : result } < / Text > ;
デバイスが有線ヘッドセットまたは Bluetooth ヘッドフォンに接続されているかどうかを示します。
このフックはイベントRNDeviceInfo_headphoneConnectionDidChange
をサブスクライブし、それに応じてresult
フィールドを更新します。
import { useIsHeadphonesConnected } from 'react-native-device-info' ;
const { loading , result } = useIsHeadphonesConnected ( ) ; // { loading: true, result: false}
< Text > { loading ? 'loading...' : result } < / Text > ;
デバイスが有線ヘッドセットに接続されているかどうかを示します。
このフックはイベントRNDeviceInfo_headphoneWiredConnectionDidChange
をサブスクライブし、それに応じてresult
フィールドを更新します。
import { useIsWiredHeadphonesConnected } from 'react-native-device-info' ;
const { loading , result } = useIsWiredHeadphonesConnected ( ) ; // { loading: true, result: false}
< Text > { loading ? 'loading...' : result } < / Text > ;
デバイスが Bluetooth ヘッドフォンに接続されているかどうかを示します。
このフックはイベントRNDeviceInfo_headphoneBluetoothConnectionDidChange
をサブスクライブし、それに応じてresult
フィールドを更新します。
import { useIsBluetoothHeadphonesConnected } from 'react-native-device-info' ;
const { loading , result } = useIsBluetoothHeadphonesConnected ( ) ; // { loading: true, result: false}
< Text > { loading ? 'loading...' : result } < / Text > ;
デバイスのメイン画面の現在の輝度レベルを取得します。現在iOSのみです。 0.0 ~ 1.0 の数値を返します。
このフックはイベントRNDeviceInfo_brightnessDidChange
をサブスクライブし、それに応じてbrightness
フィールドを更新します。
import { useBrightness } from 'react-native-device-info' ;
const brightness = useBrightness ( ) ; // 0.46578987897654567
< Text > { brightness } < / Text > ;
import { NativeEventEmitter , NativeModules } from 'react-native' ;
const deviceInfoEmitter = new NativeEventEmitter ( NativeModules . RNDeviceInfo ) ;
deviceInfoEmitter . addListener ( 'RNDeviceInfo_brightnessDidChange' , ( brightness ) => {
// 0.46578987897654567
} ) ;
=======
ネイティブ側からデバイス タイプを確認する必要がある場合は、次を使用できます。
import com . learnium . resolver . DeviceTypeResolver
...
deviceTypeResolver = new DeviceTypeResolver ( context );
...
//Check if the device is a Tablet:
if ( deviceTypeResolver . isTablet ){
...
} else {
...
}
react-native-device-info
インストールまたは使用するときに、次の問題が発生する可能性があります。
react-native-device-info
com.google.android.gms:play-services-gcm
を使用して getInstanceId() を提供します。これにより、Android アプリケーションを構築するときに競合が発生する可能性があります。
アプリで別のバージョンのcom.google.android.gms:play-services-gcm
を使用している場合は、 build.gradle
ファイルでgooglePlayServicesVersion
gradle 変数を定義して、 react-native-device-info
にバージョンを伝えることができます必要とするはずです。サンプルについては、ここに含まれるサンプル プロジェクトを参照してください。
com.google.android.gms:play-services-gcm
と競合する別のライブラリを使用していて、バージョンの競合を回避するために何をしているかを確実に理解している場合は、単純にこの依存関係を無視できます。あなたのgradleファイル:
compile(project( ' :react-native-device-info ' )) {
exclude group : ' com.google.android.gms '
}
どうやらreact-native link
によるバグのようです。 Xcode -> [Your iOS build target] -> Build Phrases -> Link Binary with Libraries
でlibRNDeviceInfo-tvOS.a
手動で削除できます。
これは、 xcrun simctl spawn booted log config --mode "level:off" --subsystem com.apple.CoreTelephony
実行することでオフにできるシステム レベルのログです。コマンドを元に戻すには、次のコマンドを実行します。 xcrun simctl spawn booted log config --mode "level:info" --subsystem com.apple.CoreTelephony
target 'yourTargetName' do
# See http://facebook.github.io/react-native/docs/integration-with-existing-apps.html#configuring-cocoapods-dependencies
pod 'React' , :path => '../node_modules/react-native' , :subspecs => [
'Core' ,
'CxxBridge' , # Include this for RN >= 0.47
'DevSupport' , # Include this to enable In-App Devmenu if RN >= 0.43
'RCTText' ,
'RCTNetwork' ,
'RCTWebSocket' , # Needed for debugging
'RCTAnimation' , # Needed for FlatList and animations running on native UI thread
# Add any other subspecs you want to use in your project
]
# Explicitly include Yoga if you are using RN >= 0.42.0
pod 'yoga' , :path => '../node_modules/react-native/ReactCommon/yoga'
# Third party deps podspec link - you may have multiple pods here, just an example
pod 'RNDeviceInfo' , path : '../node_modules/react-native-device-info'
end
# if you see errors about React duplicate definitions, this fixes it. The same works for yoga.
post_install do | installer |
installer . pods_project . targets . each do | target |
if target . name == "React"
target . remove_from_project
end
end
end
react-native-device-info
にはネイティブ コードが含まれているため、モックする必要があります。ただし、Jest スナップショットのサポートは機能する可能性があります。
Jest セットアップ ファイルが構成されていない場合は、Jest 設定に次の内容を追加し、プロジェクト ルートに jest.setup.js ファイルを作成する必要があります。
setupFiles: [ '/jest.setup.js' ] ;
次に、Jest セットアップ ファイルに次のコードを追加して、DeviceInfo ネイティブ モジュールをモックする必要があります。
import mockRNDeviceInfo from 'react-native-device-info/jest/react-native-device-info-mock' ;
jest . mock ( 'react-native-device-info' , ( ) => mockRNDeviceInfo ) ;
詳細については、サンプル プロジェクトを確認してください。
一部の API (getBatteryState など) は、tvOS や iOS エミュレーターなどの特定の状況で警告をスローします。これは本番環境では表示されませんが、開発中でもイライラする可能性があります。これらのデバイスは状態を返さないため、警告があると便利ですが、これは驚くべきことであり、github サポートの問題につながる可能性があります。警告は、開発者としての教育を目的としています。警告が煩わしい場合は、コード内でこれを試して警告を抑制してください。
import { LogBox } from 'react-native' ;
LogBox . ignoreLogs ( [ 'Battery state' ] ) ;
CHANGELOG.mdを参照してください。
contributing guide
参照してください。
開発者への好意として、このライブラリは v0.21.6 で、ビルドの中断を避けるために空のポリフィルを提供することにより、react-native-dom および React-native-web と互換性を持つようになりました。
getUserAgent() のみが正しい値を返します。他のすべての API メソッドは、文書化された戻り値の型の「空」の値を返します。数値の場合は0
、文字列の場合は''
、ブール値の場合はfalse
。