Informasi Perangkat untuk React Native.
Podfile iOS Anda harus dipindahkan ke minimum iOS 10. v7 modul ini tidak lagi mendukung iOS9.
Menggunakan npm:
npm install --save react-native-device-info
atau menggunakan benang:
yarn add react-native-device-info
Jika Anda ingin menggunakan pelacakan Instal Referrer, Anda perlu menambahkan konfigurasi ini ke konfigurasi Proguard Anda
-keep class com.android.installreferrer.api.** {
*;
}
Jika Anda mengalami masalah dengan hasGms() pada apk rilis Anda, tambahkan aturan berikut ke konfigurasi Proguard Anda
-keep class com.google.android.gms.common.** {*;}
Modul ini defaultnya adalah AndroidX. Anda harus mengonfigurasi versi pustaka yang serupa dengan ini di blok "ext" file android/build.gradle
Anda
.. .
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
}
.. .
Jika Anda memerlukan non-AndroidX, Anda perlu menggunakan paket jetifier dalam mode terbalik, dokumentasi tersedia bersama paket tersebut.
Penautan dalam modul asli sering menjadi sumber masalah bagi pengembang reaksi asli baru, yang mengakibatkan kesalahan seperti "RNDeviceInfo is null" dll. Karena alasan inilah penautan otomatis diterapkan, dan ini harus digunakan dalam proyek Anda.
Penautan otomatis didukung untuk semua platform (bahkan windows pada React native >= 0.63!)
Versi sebelumnya perlu melakukan penautan manual. Tidak ada dukungan yang ditawarkan untuk versi react-native sebelumnya tetapi Anda dapat merujuk ke versi README ini yang lebih lama jika Anda mau. Tingkatkan ke versi modern dari react-native. Gunakan alat upgrade-helper
di internet jika diperlukan.
import DeviceInfo from 'react-native-device-info' ;
// or ES6+ destructured imports
import { getUniqueId , getManufacturer } from 'react-native-device-info' ;
Perhatikan bahwa banyak API yang spesifik untuk platform. Jika tidak ada implementasi untuk platform, maka nilai pengembalian "default" yang akan Anda terima adalah "unknown"
untuk string, -1
untuk angka, dan false
untuk boolean. Array dan Objek akan kosong (masing-masing []
dan {}
).
Sebagian besar API mengembalikan Janji tetapi juga memiliki API terkait dengan Sync
di bagian akhir yang beroperasi secara sinkron. Misalnya, Anda mungkin lebih memilih untuk memanggil isCameraPresentSync()
selama bootstrap aplikasi Anda untuk menghindari panggilan asinkron selama bagian pertama permulaan aplikasi.
Catatan tentang getUserAgentSync
Meskipun metode asinkron getUserAgent
tersedia di kedua platform, getUserAgentSync
hanya didukung di Android.
Contoh aplikasi dalam repositori ini menunjukkan contoh penggunaan setiap API, lihat aplikasi contoh jika Anda memiliki pertanyaan, dan jika Anda merasa melihat masalah, pastikan Anda dapat mereproduksinya menggunakan aplikasi contoh sebelum melaporkannya, terima kasih.
Metode | Jenis Pengembalian | iOS | Android | jendela | jaring | visionOS |
---|---|---|---|---|---|---|
dapatkanAndroidId() | Promise<string> | ✅ | ||||
dapatkanApiLevel() | Promise<number> | ✅ | ||||
dapatkan NamaAplikasi() | string | ✅ | ✅ | ✅ | ✅ | |
dapatkan PenyediaLocationAvailable() | Promise<Object> | ✅ | ✅ | ✅ | ||
dapatkanBaseOs() | Promise<string> | ✅ | ✅ | ✅ | ||
dapatkanBuildId() | Promise<string> | ✅ | ✅ | ✅ | ✅ | |
dapatkan Tingkat Baterai () | Promise<number> | ✅ | ✅ | ✅ | ✅ | ✅ |
dapatkan Bootloader() | Promise<string> | ✅ | ||||
dapatkan Merek() | string | ✅ | ✅ | ✅ | ✅ | |
dapatkanBuildNumber() | string | ✅ | ✅ | ✅ | ✅ | |
dapatkanBundleId() | string | ✅ | ✅ | ✅ | ✅ | |
isCameraPresent() | Promise<boolean> | ✅ | ✅ | ✅ | ||
dapatkan Pembawa() | Promise<string> | ✅ | ✅ | |||
dapatkan Nama Kode() | Promise<string> | ✅ | ||||
dapatkanPerangkat() | Promise<string> | ✅ | ||||
dapatkanDeviceId() | string | ✅ | ✅ | ✅ | ✅ | |
dapatkanDeviceType() | string | ✅ | ✅ | ✅ | ||
dapatkan Tampilan() | Promise<string> | ✅ | ||||
dapatkan NamaPerangkat() | Promise<string> | ✅ | ✅ | ✅ | ✅ | |
dapatkanDeviceToken() | Promise<string> | ✅ | ✅ | |||
dapatkanWaktu Instal Pertama() | Promise<number> | ✅ | ✅ | ✅ | ✅ | |
dapatkan Sidik Jari() | Promise<string> | ✅ | ||||
dapatkanFontScale() | Promise<number> | ✅ | ✅ | ✅ | ||
dapatkan PenyimpananDisk Gratis() | Promise<number> | ✅ | ✅ | ✅ | ✅ | ✅ |
dapatkanFreeDiskStorageOld() | Promise<number> | ✅ | ✅ | ✅ | ✅ | ✅ |
dapatkan Perangkat Keras() | Promise<string> | ✅ | ||||
dapatkanHost() | Promise<string> | ✅ | ✅ | |||
dapatkan NamaHost() | Promise<string[]> | ✅ | ||||
dapatkan Alamat Ip() | Promise<string> | ✅ | ✅ | ✅ | ✅ | |
dapatkan Inkremental() | Promise<string> | ✅ | ||||
dapatkanInstallerPackageName() | Promise<string> | ✅ | ✅ | ✅ | ✅ | |
dapatkanInstallReferrer() | Promise<string> | ✅ | ✅ | ✅ | ||
dapatkanInstanceId() | Promise<string> | ✅ | ||||
dapatkanWaktuPembaruan Terakhir() | Promise<number> | ✅ | ||||
dapatkan MacAddress() | Promise<string> | ✅ | ✅ | ✅ | ||
dapatkan Produsen() | Promise<string> | ✅ | ✅ | ✅ | ✅ | |
dapatkanMaxMemory() | Promise<number> | ✅ | ✅ | ✅ | ||
dapatkanModel() | string | ✅ | ✅ | ✅ | ✅ | |
dapatkanPowerState() | Promise<object> | ✅ | ✅ | ✅ | ✅ | ✅ |
dapatkan Produk() | Promise<string> | ✅ | ||||
dapatkan PratinjauSdkInt() | Promise<number> | ✅ | ||||
dapatkanReadableVersion() | string | ✅ | ✅ | ✅ | ✅ | |
dapatkanNomorSerial() | Promise<string> | ✅ | ✅ | |||
dapatkanSecurityPatch() | Promise<string> | ✅ | ||||
dapatkanWaktu Mulai() | Promise<number> | ✅ | ✅ | ✅ | ||
dapatkanSystemAvailableFeatures() | Promise<string[]> | ✅ | ||||
dapatkanNamaSistem() | string | ✅ | ✅ | ✅ | ✅ | |
dapatkanVersi Sistem() | string | ✅ | ✅ | ✅ | ✅ | |
dapatkanTag() | Promise<string> | ✅ | ||||
getType() | Promise<string> | ✅ | ||||
dapatkanTotalDiskCapacity() | Promise<number> | ✅ | ✅ | ✅ | ✅ | ✅ |
dapatkanTotalDiskCapacityOld() | Promise<number> | ✅ | ✅ | ✅ | ✅ | ✅ |
dapatkanTotalMemori() | Promise<number> | ✅ | ✅ | ✅ | ✅ | |
dapatkanIdUnik() | Promise<string> | ✅ | ✅ | ✅ | ✅ | |
dapatkan Memori yang Digunakan () | Promise<number> | ✅ | ✅ | ✅ | ✅ | ✅ |
dapatkan Agen Pengguna () | Promise<string> | ✅ | ✅ | ✅ | ✅ | |
dapatkanUserAgentSync() | string | ✅ | ✅ | |||
dapatkanVersi() | string | ✅ | ✅ | ✅ | ✅ | |
dapatkan Kecerahan() | Promise<number> | ✅ | ||||
hasGms() | Promise<boolean> | ✅ | ||||
hasHms() | Promise<boolean> | ✅ | ||||
memilikiNotch() | boolean | ✅ | ✅ | ✅ | ✅ | |
hasDynamicIsland() | boolean | ✅ | ✅ | ✅ | ✅ | |
memilikiSistemFitur() | Promise<boolean> | ✅ | ||||
isAirplaneMode() | Promise<boolean> | ✅ | ✅ | |||
isPengisian Baterai() | Promise<boolean> | ✅ | ✅ | ✅ | ✅ | ✅ |
adalahEmulator() | Promise<boolean> | ✅ | ✅ | ✅ | ✅ | |
adalahKeyboardConnected() | Promise<bool> | ✅ | ||||
adalahLanskap() | Promise<boolean> | ✅ | ✅ | ✅ | ✅ | |
isLocationEnabled() | Promise<boolean> | ✅ | ✅ | ✅ | ✅ | |
isMouseConnected() | Promise<bool> | ✅ | ||||
isHeadphone Terhubung() | Promise<boolean> | ✅ | ✅ | ✅ | ||
isWiredHeadphoneTerhubung() | Promise<boolean> | ✅ | ✅ | ✅ | ||
isBluetoothHeadphoneTerhubung() | Promise<boolean> | ✅ | ✅ | ✅ | ||
isPinOrFingerprintSet() | Promise<boolean> | ✅ | ✅ | ✅ | ✅ | |
adalahTablet() | boolean | ✅ | ✅ | ✅ | ✅ | |
adalahLowRamDevice() | boolean | ✅ | ||||
isDisplayZoomed() | boolean | ✅ | ||||
isTabletMode() | Promise<bool> | ✅ | ||||
didukung32BitAbis() | Promise<string[]> | ✅ | ||||
didukung64BitAbis() | Promise<string[]> | ✅ | ||||
didukungAbis() | Promise<string[]> | ✅ | ✅ | ✅ | ✅ | |
sinkronisasiIdUnik() | Promise<string> | ✅ | ✅ | |||
dapatkanDaftarMediaTypeList() yang Didukung() | Promise<string[]> | ✅ |
Mendapatkan tingkat API.
DeviceInfo . getApiLevel ( ) . then ( ( apiLevel ) => {
// iOS: ?
// Android: 25
// Windows: ?
} ) ;
Lihat Level API
Mendapatkan ANDROID_ID. Lihat dokumentasi API untuk penggunaan yang sesuai.
DeviceInfo . getAndroidId ( ) . then ( ( androidId ) => {
// androidId here
} ) ;
Mendapatkan nama aplikasi.
let appName = DeviceInfo . getApplicationName ( ) ;
// AwesomeApp
OS dasar yang menjadi dasar pembuatan produk.
DeviceInfo . getBaseOs ( ) . then ( ( baseOs ) => {
// "Windows", "Android" etc
} ) ;
Mendapatkan tingkat baterai perangkat sebagai pelampung yang terdiri antara 0 dan 1.
DeviceInfo . getBatteryLevel ( ) . then ( ( batteryLevel ) => {
// 0.759999
} ) ;
Untuk bisa mendapatkan level baterai aktual, aktifkan mode pemantauan baterai untuk aplikasi. Tambahkan kode ini:
[UIDevice currentDevice ].batteryMonitoringEnabled = true ;
ke aplikasi AppDelegate.m:didFinishLaunchingWithOptions:
Mengembalikan -1 di Simulator iOS
Nomor versi bootloader sistem.
DeviceInfo . getBootloader ( ) . then ( ( bootloader ) => {
// "mw8998-002.0069.00"
} ) ;
Mendapatkan merek perangkat.
let brand = DeviceInfo . getBrand ( ) ;
// iOS: "Apple"
// Android: "xiaomi"
// Windows: ?
Mendapatkan nomor build aplikasi.
let buildNumber = DeviceInfo . getBuildNumber ( ) ;
// iOS: "89"
// Android: "4"
// Windows: ?
Mendapatkan pengidentifikasi bundel aplikasi.
let bundleId = DeviceInfo . getBundleId ( ) ;
// "com.example.AwesomeApp"
Memberitahukan apakah perangkat memiliki kamera apa pun sekarang.
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
} ) ;
- Hot add/remove kamera didukung.
- Mengembalikan status kehadiran fisik kamera. Jika kamera ada tetapi aplikasi Anda tidak memiliki izin untuk menggunakannya, isCameraPresent akan tetap mengembalikan nilai aslinya
Mendapatkan nama operator (operator jaringan).
DeviceInfo . getCarrier ( ) . then ( ( carrier ) => {
// "SOFTBANK"
} ) ;
Nama kode pengembangan saat ini, atau string "REL" jika ini adalah versi rilis.
DeviceInfo . getCodename ( ) . then ( ( codename ) => {
// "REL"
} ) ;
Nama desain industri.
DeviceInfo . getDevice ( ) . then ( ( device ) => {
// "walleye"
} ) ;
Mendapatkan ID perangkat.
let deviceId = DeviceInfo . getDeviceId ( ) ;
// iOS: "iPhone7,2"
// Android: "goldfish"
// Windows: "Y3R94UC#AC4"
String ID build dimaksudkan untuk ditampilkan kepada pengguna.
DeviceInfo . getDisplay ( ) . then ( ( display ) => {
// "OPM2.171026.006.G1"
} ) ;
Mendapatkan nama perangkat.
DeviceInfo . getDeviceName ( ) . then ( ( deviceName ) => {
// iOS: "Becca's iPhone 6"
// Android: ?
// Windows: ?
} ) ;
Ini dulunya memerlukan android.permission.BLUETOOTH tetapi implementasi baru di v3 tidak memerlukannya. Anda dapat menghapusnya dari AndroidManifest.xml jika Anda memilikinya untuk API ini. iOS 16 dan yang lebih baru memerlukan hak untuk mengakses nama perangkat yang ditentukan pengguna, jika tidak, nilai umum akan dikembalikan (mis. 'iPad', 'iPhone')
Mendapatkan token perangkat (lihat DeviceCheck). Hanya tersedia untuk iOS 11.0+ di perangkat sebenarnya. Ini akan menolak janji ketika getDeviceToken tidak didukung, hati-hati dengan penanganan pengecualian.
DeviceInfo . getDeviceToken ( ) . then ( ( deviceToken ) => {
// iOS: "a2Jqsd0kanz..."
} ) ;
Mendapatkan waktu saat aplikasi pertama kali diinstal, dalam milidetik.
DeviceInfo . getFirstInstallTime ( ) . then ( ( firstInstallTime ) => {
// Android: 1517681764528
} ) ;
Sebuah string yang secara unik mengidentifikasi bangunan ini.
DeviceInfo . getFingerprint ( ) . then ( ( fingerprint ) => {
// "google/walleye/walleye:8.1.0/OPM2.171026.006.G1/4820017:user/release-keys"
} ) ;
Mendapatkan skala font perangkat. Skala font adalah rasio font sistem saat ini dengan ukuran font "normal", jadi jika teks normal adalah 10pt dan font sistem saat ini 15pt, skala font akan menjadi 1,5. Ini dapat digunakan untuk menentukan apakah pengaturan aksesibilitas telah dilakukan diubah untuk perangkat; Anda mungkin ingin menata ulang tampilan tertentu jika skala font jauh lebih besar ( > 2.0 )
DeviceInfo . getFontScale ( ) . then ( ( fontScale ) => {
// 1.2
} ) ;
Metode yang mendapatkan ukuran penyimpanan yang tersedia, dalam byte, dengan mempertimbangkan perhitungan sistem file root dan data.
Di iOS , metode ini menerima argumen opsional berikut:
'total'
: Menggunakan volumeAvailableCapacityKey
'important'
: Menggunakan volumeAvailableCapacityForImportantUsageKey
'opportunistic'
: Menggunakan volumeAvailableCapacityForOpportunisticUsageKey
Untuk detail lebih lanjut, lihat Dokumentasi Apple tentang Memeriksa Kapasitas Penyimpanan Volume.
DeviceInfo . getFreeDiskStorage ( ) . then ( ( freeDiskStorage ) => {
// Android: 17179869184
// iOS: 17179869184
} ) ;
DeviceInfo . getFreeDiskStorage ( 'important' ) . then ( ( freeDiskStorage ) => {
// iOS: 18198219342 (important storage)
} ) ;
API yang digunakan oleh metode ini untuk Android diubah di v6.0.0. Versi lama dipertahankan di bawah sebagai getFreeDiskStorageOld()
. Di iOS, getFreeDiskStorage()
dan getFreeDiskStorageOld()
mengembalikan nilai yang sama.
Implementasi metode lama yang mendapatkan ukuran penyimpanan yang tersedia, dalam byte.
DeviceInfo . getFreeDiskStorageOld ( ) . then ( ( freeDiskStorage ) => {
// Android: 17179869184
// iOS: 17179869184
} ) ;
Dari pengembang.android.com:
Metode ini tidak digunakan lagi di API level 29.
Kembalikan direktori penyimpanan bersama/eksternal utama.
Catatan: jangan bingung dengan kata "eksternal" di sini. Direktori ini lebih baik dianggap sebagai media/penyimpanan bersama. Ini adalah sistem file yang dapat menampung sejumlah besar data dan dibagikan ke semua aplikasi (tidak menerapkan izin). Biasanya ini adalah kartu SD, namun bisa juga diimplementasikan sebagai penyimpanan internal di perangkat yang berbeda dari penyimpanan internal yang dilindungi dan dapat dipasang sebagai sistem file di komputer.
Nama perangkat keras (dari baris perintah kernel atau /proc).
DeviceInfo . getHardware ( ) . then ( hardware => {
// "walleye"
} ) ;
Nama host
DeviceInfo . getHost ( ) . then ( ( host ) => {
// "wprd10.hot.corp.google.com"
} ) ;
Tidak berlaku lagi Mendapatkan alamat IP perangkat saat ini. (hanya wifi) Beralih ke react-native-netinfo/netinfo atau react-native-network-info
DeviceInfo . getIpAddress ( ) . then ( ( ip ) => {
// "92.168.32.44"
} ) ;
Dukungan untuk iOS ditambahkan di 0.22.0
Nilai internal yang digunakan oleh kontrol sumber yang mendasarinya untuk mewakili build ini.
DeviceInfo . getIncremental ( ) . then ( ( incremental ) => {
// "4820017"
} ) ;
Nilai internal yang digunakan oleh kontrol sumber yang mendasarinya untuk mewakili build ini.
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"
} ) ;
Mendapatkan string pengarah saat instalasi aplikasi.
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"
} ) ;
Mendapatkan ID instans aplikasi.
Ini mencoba untuk mendapatkan ID instance dari sumber berikut, dengan urutan sebagai berikut:
instanceId
kunci dalam file SharedPreferences react-native-device-info
firebaseBomVersion
atau firebaseIidVersion
didefinisikan dalam gradle ext - tidak digunakan lagi )googlePlayServicesIidVersion
atau googlePlayServicesVersion
ditentukan dalam gradle ext - tidak digunakan lagi )Jika Anda menggunakan sumber yang tidak digunakan lagi, ID instans yang dihasilkan disimpan dalam preferensi bersama sehingga akan stabil selama versi utama info perangkat asli reaksi ini.
Dalam versi react-native-device-info yang akan datang, implementasi Firebase IID dan GMS IID akan dihapus, dan semua nilai di masa mendatang akan menjadi nilai (jika ada) yang disimpan di SharedPreferences, atau UUID acak baru yang kemudian akan disimpan dan digunakan untuk instalasi aplikasi itu di masa depan.
DeviceInfo . getInstanceId ( ) . then ( ( instanceId ) => {
// Android: da4e0245-5d6c-402a-a07c-0c5349f229e2
} ) ;
Lihat https://developers.google.com/instance-id/