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 startup 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 | ✅ | ||||
dapatkanApiLevel() | Promise | ✅ | ||||
dapatkan NamaAplikasi() | string | ✅ | ✅ | ✅ | ✅ | |
dapatkan PenyediaLocationAvailable() | Promise | ✅ | ✅ | ✅ | ||
dapatkanBaseOs() | Promise | ✅ | ✅ | ✅ | ||
dapatkanBuildId() | Promise | ✅ | ✅ | ✅ | ✅ | |
dapatkan Tingkat Baterai () | Promise | ✅ | ✅ | ✅ | ✅ | ✅ |
dapatkan Bootloader() | Promise | ✅ | ||||
dapatkan Merek() | string | ✅ | ✅ | ✅ | ✅ | |
dapatkanBuildNumber() | string | ✅ | ✅ | ✅ | ✅ | |
dapatkanBundleId() | string | ✅ | ✅ | ✅ | ✅ | |
isCameraPresent() | Promise | ✅ | ✅ | ✅ | ||
dapatkan Pembawa() | Promise | ✅ | ✅ | |||
dapatkan Nama Kode() | Promise | ✅ | ||||
dapatkanPerangkat() | Promise | ✅ | ||||
dapatkanDeviceId() | string | ✅ | ✅ | ✅ | ✅ | |
dapatkanDeviceType() | string | ✅ | ✅ | ✅ | ||
dapatkan Tampilan() | Promise | ✅ | ||||
dapatkan NamaPerangkat() | Promise | ✅ | ✅ | ✅ | ✅ | |
dapatkanDeviceToken() | Promise | ✅ | ✅ | |||
dapatkanWaktu Instal Pertama() | Promise | ✅ | ✅ | ✅ | ✅ | |
dapatkan Sidik Jari() | Promise | ✅ | ||||
dapatkanFontScale() | Promise | ✅ | ✅ | ✅ | ||
dapatkan PenyimpananDisk Gratis() | Promise | ✅ | ✅ | ✅ | ✅ | ✅ |
dapatkanFreeDiskStorageOld() | Promise | ✅ | ✅ | ✅ | ✅ | ✅ |
dapatkan Perangkat Keras() | Promise | ✅ | ||||
dapatkanHost() | Promise | ✅ | ✅ | |||
dapatkan NamaHost() | Promise | ✅ | ||||
dapatkan Alamat Ip() | Promise | ✅ | ✅ | ✅ | ✅ | |
dapatkan Inkremental() | Promise | ✅ | ||||
dapatkanInstallerPackageName() | Promise | ✅ | ✅ | ✅ | ✅ | |
dapatkanInstallReferrer() | Promise | ✅ | ✅ | ✅ | ||
dapatkanInstanceId() | Promise | ✅ | ||||
dapatkanWaktuPembaruan Terakhir() | Promise | ✅ | ||||
dapatkan MacAddress() | Promise | ✅ | ✅ | ✅ | ||
dapatkan Produsen() | Promise | ✅ | ✅ | ✅ | ✅ | |
dapatkanMaxMemory() | Promise | ✅ | ✅ | ✅ | ||
dapatkanModel() | string | ✅ | ✅ | ✅ | ✅ | |
dapatkanPowerState() | Promise | ✅ | ✅ | ✅ | ✅ | ✅ |
dapatkan Produk() | Promise | ✅ | ||||
dapatkan PratinjauSdkInt() | Promise | ✅ | ||||
dapatkanReadableVersion() | string | ✅ | ✅ | ✅ | ✅ | |
dapatkanNomorSerial() | Promise | ✅ | ✅ | |||
dapatkanSecurityPatch() | Promise | ✅ | ||||
dapatkanWaktu Mulai() | Promise | ✅ | ✅ | ✅ | ||
dapatkanSystemAvailableFeatures() | Promise | ✅ | ||||
dapatkanNamaSistem() | string | ✅ | ✅ | ✅ | ✅ | |
dapatkanVersi Sistem() | string | ✅ | ✅ | ✅ | ✅ | |
dapatkanTag() | Promise | ✅ | ||||
getType() | Promise | ✅ | ||||
dapatkanTotalDiskCapacity() | Promise | ✅ | ✅ | ✅ | ✅ | ✅ |
dapatkanTotalDiskCapacityOld() | Promise | ✅ | ✅ | ✅ | ✅ | ✅ |
dapatkanTotalMemori() | Promise | ✅ | ✅ | ✅ | ✅ | |
dapatkanIdUnik() | Promise | ✅ | ✅ | ✅ | ✅ | |
dapatkan Memori yang Digunakan () | Promise | ✅ | ✅ | ✅ | ✅ | ✅ |
dapatkan Agen Pengguna () | Promise | ✅ | ✅ | ✅ | ✅ | |
dapatkanUserAgentSync() | string | ✅ | ✅ | |||
dapatkanVersi() | string | ✅ | ✅ | ✅ | ✅ | |
dapatkan Kecerahan() | Promise | ✅ | ||||
hasGms() | Promise | ✅ | ||||
hasHms() | Promise | ✅ | ||||
memilikiNotch() | boolean | ✅ | ✅ | ✅ | ✅ | |
hasDynamicIsland() | boolean | ✅ | ✅ | ✅ | ✅ | |
memilikiSistemFitur() | Promise | ✅ | ||||
isAirplaneMode() | Promise | ✅ | ✅ | |||
isPengisian Baterai() | Promise | ✅ | ✅ | ✅ | ✅ | ✅ |
adalahEmulator() | Promise | ✅ | ✅ | ✅ | ✅ | |
adalahKeyboardConnected() | Promise | ✅ | ||||
adalahLanskap() | Promise | ✅ | ✅ | ✅ | ✅ | |
isLocationEnabled() | Promise | ✅ | ✅ | ✅ | ✅ | |
isMouseConnected() | Promise | ✅ | ||||
isHeadphone Terhubung() | Promise | ✅ | ✅ | ✅ | ||
isWiredHeadphoneTerhubung() | Promise | ✅ | ✅ | ✅ | ||
isBluetoothHeadphoneTerhubung() | Promise | ✅ | ✅ | ✅ | ||
isPinOrFingerprintSet() | Promise | ✅ | ✅ | ✅ | ✅ | |
adalahTablet() | boolean | ✅ | ✅ | ✅ | ✅ | |
adalahLowRamDevice() | boolean | ✅ | ||||
isDisplayZoomed() | boolean | ✅ | ||||
isTabletMode() | Promise | ✅ | ||||
didukung32BitAbis() | Promise | ✅ | ||||
didukung64BitAbis() | Promise | ✅ | ||||
didukungAbis() | Promise | ✅ | ✅ | ✅ | ✅ | |
sinkronisasiIdUnik() | Promise | ✅ | ✅ | |||
dapatkanDaftarMediaTypeList() yang Didukung() | Promise | ✅ |
Mendapatkan tingkat API.
DeviceInfo . getApiLevel ( ) . then ( ( apiLevel ) => {
// iOS: ?
// Android: 25
// Windows: ?
} ) ;
Lihat Level API
Mendapatkan ANDROID_ID. Lihat dokumentasi API untuk penggunaan yang tepat.
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/
Mendapatkan waktu terakhir aplikasi diperbarui, dalam milidetik.
DeviceInfo . getLastUpdateTime ( ) . then ( ( lastUpdateTime ) => {
// Android: 1517681764992
} ) ;
Mendapatkan alamat MAC adaptor jaringan.
DeviceInfo . getMacAddress ( ) . then ( ( mac ) => {
// "E5:12:D8:E5:69:97"
} ) ;
iOS: Metode ini selalu mengembalikan "02:00:00:00:00:00" karena pengambilan alamat MAC dinonaktifkan sejak iOS 7
Mendapatkan produsen perangkat.
DeviceInfo . getManufacturer ( ) . then ( ( manufacturer ) => {
// iOS: "Apple"
// Android: "Google"
// Windows: ?
} ) ;
Mengembalikan jumlah maksimum memori yang akan coba digunakan oleh VM, dalam byte.
DeviceInfo . getMaxMemory ( ) . then ( ( maxMemory ) => {
// 402653183
} ) ;
Mendapatkan model perangkat.
Peringatan iOS: Daftar nama perangkat dikelola oleh komunitas dan mungkin tertinggal dari perangkat baru. Disarankan untuk menggunakan getDeviceId()
karena lebih andal dan selalu terkini dengan perangkat iOS baru. Kami menerima permintaan penarikan yang menambahkan perangkat iOS baru ke daftar dengan nama perangkat.
let model = DeviceInfo . getModel ( ) ;
// iOS: ?
// Android: ?
// Windows: ?
getPhoneNumber() telah dihapus. Metode ini menggunakan API Android yang tidak digunakan lagi. Anda dapat menggunakan react-native-sim-cards-manager untuk mendapatkan nomor telepon.
Mendapatkan status daya perangkat termasuk tingkat baterai, apakah perangkat dicolokkan, dan apakah sistem sedang beroperasi dalam mode daya rendah. Menampilkan peringatan di iOS jika pemantauan baterai tidak diaktifkan, atau jika dicoba pada emulator (jika pemantauan tidak memungkinkan)
DeviceInfo . getPowerState ( ) . then ( ( state ) => {
// {
// batteryLevel: 0.759999,
// batteryState: 'unplugged',
// lowPowerMode: false,
// }
} ) ;
Nama produk secara keseluruhan.
DeviceInfo . getProduct ( ) . then ( ( product ) => {
// "walleye"
} ) ;
Revisi pratinjau pengembang dari SDK prarilis.
DeviceInfo . getPreviewSdkInt ( ) . then ( ( previewSdkInt ) => {
// 0
} ) ;
Mendapatkan versi aplikasi yang dapat dibaca manusia (sama seperti getVersion() + '.' + getBuildNumber())
let readableVersion = DeviceInfo . getReadableVersion ( ) ;
// iOS: 1.0.1.32
// Android: 1.0.1.234
// Windows: ?
Mendapatkan nomor seri perangkat. Akan menjadi 'tidak diketahui' di hampir semua kasus kecuali Anda memiliki aplikasi yang memiliki hak istimewa dan Anda tahu apa yang Anda lakukan.
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")
} ) ;
Jika Anda ingin menggunakan metode ini di windows, Anda harus menambahkan kemampuan smbios di aplikasi Anda. Silakan ikuti dokumentasi ini untuk menambahkan kemampuan dalam file manifes Anda.
Tingkat patch keamanan yang terlihat oleh pengguna.
DeviceInfo . getSecurityPatch ( ) . then ( ( securityPatch ) => {
// "2018-07-05"
} ) ;
Mendapatkan nama OS perangkat.
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: ?
Mendapatkan waktu dimulainya proses aplikasi saat ini, dalam milidetik.
DeviceInfo . getStartupTime ( ) . then ( ( startupTime ) => {
// Android: 1517681764528
// iOS: 1517681764528
} ) ;
Mendapatkan versi OS perangkat.
let systemVersion = DeviceInfo . getSystemVersion ( ) ;
// iOS: "11.0"
// Android: "7.1.1"
// Windows: ?
Mendapatkan nomor build sistem operasi.
DeviceInfo . getBuildId ( ) . then ( ( buildId ) => {
// iOS: "12A269"
// tvOS: not available
// Android: "13D15"
// Windows: not available
} ) ;
Tag yang dipisahkan koma yang menjelaskan build.
DeviceInfo . getTags ( ) . then ( ( tags ) => {
// "release-keys, unsigned, debug",
} ) ;
Jenis bangunan.
DeviceInfo . getType ( ) . then ( ( type ) => {
// "user", "eng"
} ) ;
Metode yang mendapatkan ukuran penyimpanan disk penuh, dalam byte, dengan mempertimbangkan perhitungan sistem file root dan data.
DeviceInfo . getTotalDiskCapacity ( ) . then ( ( capacity ) => {
// Android: 17179869184
// iOS: 17179869184
} ) ;
API yang digunakan oleh metode ini untuk Android diubah di v6.0.0. Versi lama dipertahankan di bawah sebagai getTotalDiskCapacityOld()
. Di iOS, getTotalDiskCapacity()
dan getTotalDiskCapacityOld()
mengembalikan nilai yang sama.
Implementasi lama dari metode yang mendapatkan ukuran penyimpanan disk penuh, dalam byte.
DeviceInfo . getTotalDiskCapacityOld ( ) . then ( ( capacity ) => {
// Android: 17179869184
// iOS: 17179869184
} ) ;
Mendapatkan total memori perangkat, dalam byte.
DeviceInfo . getTotalMemory ( ) . then ( ( totalMemory ) => {
// 1995018240
} ) ;
Pengenal ini dianggap sebagai informasi sensitif di beberapa toko aplikasi (misalnya Huawei atau Google Play) dan dapat menyebabkan aplikasi Anda dihapus atau ditolak, jika digunakan tanpa izin pengguna atau untuk tujuan yang tidak disetujui. Lihat kebijakan toko untuk informasi lebih lanjut (lihat catatan di bawah).
Mendapatkan ID unik perangkat. Di Android saat ini identik dengan getAndroidId()
dalam modul ini. Di iOS menggunakan pengidentifikasi uid DeviceUID
. Di Windows menggunakan Windows.Security.ExchangeActiveSyncProvisioning.EasClientDeviceInformation.id
.
DeviceInfo . getUniqueId ( ) . then ( ( uniqueId ) => {
// iOS: "FCDBD8EF-62FC-4ECB-B2F5-92C9E79AC7F9"
// Android: "dd96dec43fb81c97"
// Windows: "{2cf7cb3c-da7a-d508-0d7f-696bb51185b4}"
} ) ;
- iOS: Ini adalah
IDFV
atau string acak jika IDFV tidak tersedia. Setelah UID dibuat, UID disimpan di iOS Keychain dan NSUserDefaults. Jadi itu akan tetap sama meskipun Anda menghapus aplikasi atau mengatur ulang IDFV. Anda dapat dengan hati-hati menganggapnya sebagai ID unik yang persisten. Ini hanya dapat diubah jika seseorang secara manual mengganti nilai di Keychain/NSUserDefaults atau jika Apple akan mengubah implementasi Keychain dan NSUserDefaults. Hati-hati: IDFV dihitung menggunakan pengidentifikasi paket Anda dan karenanya akan berbeda di ekstensi aplikasi.- android: Sebelum Oreo, id ini (ANDROID_ID) akan selalu sama setelah Anda mengatur ponsel Anda.
- android: kebijakan Google Play, lihat "pengidentifikasi perangkat persisten". Huawei - Pedoman Tinjauan AppGallery lihat "pengidentifikasi perangkat permanen" dan "mendapatkan persetujuan pengguna".
Metode ini ditujukan untuk iOS.
Ini menyinkronkan UniqueId dengan IDFV
atau menetapkan string acak baru.
Di iOS menggunakan pengidentifikasi uid DeviceUID
. Di platform lain, cukup panggil getUniqueId()
dalam modul ini.
DeviceInfo . syncUniqueId ( ) . then ( ( uniqueId ) => {
// iOS: "FCDBD8EF-62FC-4ECB-B2F5-92C9E79AC7F9"
// Android: "dd96dec43fb81c97"
// Windows: ?
} ) ;
- Jika pengguna memindahkan atau memulihkan data dari satu perangkat iOS ke perangkat iOS kedua maka ia akan memiliki dua perangkat berbeda dengan
uniqueId
yang sama di Keychain/NSUserDefaults. Pengguna dapat memanggilsyncUniqueId()
di perangkat iOS baru. Itu akan memperbaruiuniqueId
-nya dariIDFV
atau string acak.
Mendapatkan penggunaan memori aplikasi, dalam byte.
Catatan: metode ini hanya ditujukan untuk melakukan debug atau membangun UI manajemen proses yang dapat dilihat pengguna.
DeviceInfo . getUsedMemory ( ) . then ( ( usedMemory ) => {
// 23452345
} ) ;
Metode ini mendapatkan daftar codec media yang didukung.
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"]
} ) ;
Mendapatkan Agen Pengguna perangkat.
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: ?
} ) ;
Mendapatkan versi aplikasi. Perhatikan bahwa string versi diformat perangkat/OS dan dapat berisi data tambahan apa pun (seperti nomor build, dll.). Jika Anda ingin yakin tentang format versi, Anda dapat menggunakan ekspresi reguler untuk mendapatkan bagian yang diinginkan dari string versi yang dikembalikan.
let version = DeviceInfo . getVersion ( ) ;
// iOS: "1.0"
// Android: "1.0" or "1.0.2-alpha.12"
// Windows: ?
Memberi tahu apakah perangkat berada dalam Mode Pesawat.
DeviceInfo . isAirplaneMode ( ) . then ( ( airplaneModeOn ) => {
// false
} ) ;
- Ini hanya berfungsi jika debugger jarak jauh dinonaktifkan.
Memberitahukan apakah baterai sedang diisi.
DeviceInfo . isBatteryCharging ( ) . then ( ( isCharging ) => {
// true or false
} ) ;
Memberitahukan apakah aplikasi berjalan di emulator.
DeviceInfo . isEmulator ( ) . then ( ( isEmulator ) => {
// false
} ) ;
Memberitahukan apakah perangkat memiliki keyboard yang terhubung.
let isKeyboardConnected = DeviceInfo . isKeyboardConnected ( ) ;
// true
Memberitahukan apakah nomor PIN atau sidik jari telah disetel untuk perangkat.
DeviceInfo . isPinOrFingerprintSet ( ) . then ( ( isPinOrFingerprintSet ) => {
if ( ! isPinOrFingerprintSet ) {
// ...
}
} ) ;
Memberi tahu apakah perangkat tersebut adalah tablet.
let isTablet = DeviceInfo . isTablet ( ) ;
// true
Memberi tahu apakah perangkat memiliki RAM rendah.
let isLowRamDevice = DeviceInfo . isLowRamDevice ( ) ;
// true
Memberitahukan apakah pengguna mengubah Tampilan Zoom ke Zoomed
let isDisplayZoomed = DeviceInfo . isDisplayZoomed ( ) ;
// true
Memberi tahu apakah perangkat berada dalam mode tablet.
let isTabletMode = DeviceInfo . isTabletMode ( ) ;
// true
Memberitahukan apakah perangkat sedang dalam mode lanskap.
DeviceInfo . isLandscape ( ) . then ( ( isLandscape ) => {
// true
} ) ;
Memberitahukan apakah perangkat memiliki mouse yang terhubung.
let isMouseConnected = DeviceInfo . isMouseConnected ( ) ;
// true
Memberitahukan apakah perangkat mendukung Layanan Seluler Google.
DeviceInfo . hasGms ( ) . then ( ( hasGms ) => {
// true
} ) ;
Memberi tahu apakah perangkat mendukung Layanan Seluler Huawei.
DeviceInfo . hasHms ( ) . then ( ( hasHms ) => {
// true
} ) ;
Memberi tahu apakah perangkat memiliki takik.
let hasNotch = DeviceInfo . hasNotch ( ) ;
// true
Memberitahukan apakah perangkat memiliki pulau dinamis.
let hasDynamicIsland = DeviceInfo . hasDynamicIsland ( ) ;
// true
Mengembalikan tipe perangkat sebagai string, yang akan menjadi salah satu dari:
Handset
Tablet
Tv
Desktop
GamingConsole
Headset
unknown
let type = DeviceInfo . getDeviceType ( ) ;
// 'Handset'
Daftar urutan ABI 32 bit yang didukung oleh perangkat ini.
DeviceInfo . supported32BitAbis ( ) . then ( ( abis ) => {
// ["armeabi-v7a", "armeabi"]
} ) ;
Daftar urutan ABI 64 bit yang didukung oleh perangkat ini.
DeviceInfo . supported64BitAbis ( ) . then ( ( abis ) => {
// ["arm64-v8a"]
} ) ;
Mengembalikan daftar versi arsitektur prosesor yang didukung
DeviceInfo . supportedAbis ( ) . then ( ( abis ) => {
// [ "arm64 v8", "Intel x86-64h Haswell", "arm64-v8a", "armeabi-v7a", "armeabi", "win_x86", "win_arm", "win_x64" ]
} ) ;
Memberi tahu apakah perangkat memiliki fitur sistem tertentu.
DeviceInfo . hasSystemFeature ( 'amazon.hardware.fire_tv' ) . then ( ( hasFeature ) => {
// true or false
} ) ;
Mengembalikan daftar fitur sistem yang tersedia di Android.
DeviceInfo . getSystemAvailableFeatures ( ) . then ( ( features ) => {
// ["android.software.backup", "android.hardware.screen.landscape", "android.hardware.wifi", ...]
} ) ;
Memberi tahu apakah perangkat menonaktifkan layanan lokasi di tingkat perangkat (TIDAK terkait dengan izin khusus aplikasi)
DeviceInfo . isLocationEnabled ( ) . then ( ( enabled ) => {
// true or false
} ) ;
Memberitahukan apakah perangkat terhubung ke headset berkabel atau headphone bluetooth
DeviceInfo . isHeadphonesConnected ( ) . then ( ( enabled ) => {
// true or false
} ) ;
Memberitahukan apakah perangkat terhubung ke headset berkabel
DeviceInfo . isWiredHeadphonesConnected ( ) . then ( ( enabled ) => {
// true or false
} ) ;
Memberitahukan apakah perangkat terhubung ke headset bluetooth
DeviceInfo . isBluetoothHeadphonesConnected ( ) . then ( ( enabled ) => {
// true or false
} ) ;
Mengembalikan objek penyedia/layanan lokasi spesifik platform , dengan nilai boolean
baik saat ini tersedia atau tidak.
CATATAN: Fungsi ini memerlukan akses ke izin Lokasi di Android
DeviceInfo . getAvailableLocationProviders ( ) . then ( ( providers ) => {
// {
// gps: true
// network: true
// passive: true
// }
} ) ;
DeviceInfo . getAvailableLocationProviders ( ) . then ( ( providers ) => {
// {
// headingAvailable: false
// isRangingAvailable: false
// locationServicesEnabled: true
// significantLocationChangeMonitoringAvailable: true
// }
} ) ;
Mendapatkan tingkat kecerahan layar utama perangkat saat ini. Saat ini hanya iOS. Mengembalikan angka antara 0,0 dan 1,0, inklusif.
DeviceInfo . getBrightness ( ) . then ( ( brightness ) => {
// iOS: 0.6
} ) ;
Didukung di Windows, iOS & Android (dukungan web untuk API terkait baterai/pengisian daya).
Diaktifkan saat level baterai berubah; dikirim tidak lebih dari sekali per menit.
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
} ) ;
Diaktifkan saat level baterai dianggap rendah (berkali-kali hingga terisi daya)
Platform | Persentase |
---|---|
iOS | 20 |
Android | 15 |
jaring | 20 |
jendela | 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
} ) ;
Diaktifkan saat status baterai berubah atau perangkat memasuki mode hemat daya, misalnya saat perangkat memasuki mode pengisian daya atau dicabut.
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,
// }
} ) ;
Mendapatkan waktu saat aplikasi pertama kali diinstal, dalam milidetik.
import { useFirstInstallTime } from 'react-native-device-info' ;
const { loading , result } = useFirstInstallTime ( ) ; // { loading: true, result: 1517681764528}
< Text > { loading ? 'loading...' : result } < / Text > ;
Mendapatkan nama perangkat.
import { useDeviceName } from 'react-native-device-info' ;
const { loading , result } = useDeviceName ( ) ; // { loading: true, result: "Becca's iPhone 6"}
< Text > { loading ? 'loading...' : result } < / Text > ;
Memberi tahu apakah perangkat memiliki fitur sistem tertentu.
import { useHasSystemFeature } from 'react-native-device-info' ;
const { loading , result } = useHasSystemFeature ( 'amazon.hardware.fire_tv' ) ; // { loading: true, result: false }
< Text > { loading ? 'loading...' : result } < / Text > ;
Mengetahui apakah aplikasi berjalan di emulator.
import { useIsEmulator } from 'react-native-device-info' ;
const { loading , result } = useIsEmulator ( ) ; // { loading: true, result: false }
< Text > { loading ? 'loading...' : result } < / Text > ;
Mendapatkan produsen perangkat.
import { useManufacturer } from 'react-native-device-info' ;
const { loading , result } = useManufacturer ( ) ; // { loading: true, result: "Apple"}
< Text > { loading ? 'loading...' : result } < / Text > ;
Memberitahukan apakah perangkat terhubung ke headset berkabel atau headphone bluetooth.
Kait ini berlangganan acara, RNDeviceInfo_headphoneConnectionDidChange
, dan memperbarui bidang result
yang sesuai.
import { useIsHeadphonesConnected } from 'react-native-device-info' ;
const { loading , result } = useIsHeadphonesConnected ( ) ; // { loading: true, result: false}
< Text > { loading ? 'loading...' : result } < / Text > ;
Memberitahukan apakah perangkat terhubung ke headset berkabel.
Kait ini berlangganan acara, RNDeviceInfo_headphoneWiredConnectionDidChange
, dan memperbarui bidang result
yang sesuai.
import { useIsWiredHeadphonesConnected } from 'react-native-device-info' ;
const { loading , result } = useIsWiredHeadphonesConnected ( ) ; // { loading: true, result: false}
< Text > { loading ? 'loading...' : result } < / Text > ;
Memberitahukan apakah perangkat terhubung ke headphone bluetooth.
Kait ini berlangganan acara, RNDeviceInfo_headphoneBluetoothConnectionDidChange
, dan memperbarui bidang result
yang sesuai.
import { useIsBluetoothHeadphonesConnected } from 'react-native-device-info' ;
const { loading , result } = useIsBluetoothHeadphonesConnected ( ) ; // { loading: true, result: false}
< Text > { loading ? 'loading...' : result } < / Text > ;
Mendapatkan tingkat kecerahan layar utama perangkat saat ini. Saat ini hanya iOS. Mengembalikan angka antara 0,0 dan 1,0, inklusif.
Kait ini berlangganan acara, RNDeviceInfo_brightnessDidChange
, dan memperbarui bidang brightness
yang sesuai.
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
} ) ;
=======
Jika Anda perlu memeriksa jenis perangkat dari versi asli, Anda dapat menggunakan yang berikut ini:
import com . learnium . resolver . DeviceTypeResolver
...
deviceTypeResolver = new DeviceTypeResolver ( context );
...
//Check if the device is a Tablet:
if ( deviceTypeResolver . isTablet ){
...
} else {
...
}
Saat menginstal atau menggunakan react-native-device-info
, Anda mungkin mengalami masalah berikut:
react-native-device-info
menggunakan com.google.android.gms:play-services-gcm
untuk menyediakan getInstanceId(). Hal ini dapat menimbulkan konflik saat membangun aplikasi Android.
Jika Anda menggunakan versi com.google.android.gms:play-services-gcm
yang berbeda di aplikasi, Anda dapat menentukan variabel gradle googlePlayServicesVersion
di file build.gradle
untuk memberi tahu react-native-device-info
versi apa itu seharusnya membutuhkan. Lihat contoh proyek yang disertakan di sini untuk contohnya.
Jika Anda menggunakan perpustakaan lain yang bertentangan dengan com.google.android.gms:play-services-gcm
, dan Anda yakin tahu apa yang Anda lakukan sehingga menghindari konflik versi, Anda cukup mengabaikan ketergantungan ini di file kelas Anda:
compile(project( ' :react-native-device-info ' )) {
exclude group : ' com.google.android.gms '
}
Tampaknya ada bug yang disebabkan oleh react-native link
. Anda dapat menghapus libRNDeviceInfo-tvOS.a
secara manual di Xcode -> [Your iOS build target] -> Build Phrases -> Link Binary with Libraries
.
Ini adalah log tingkat sistem yang dapat dimatikan dengan menjalankan: xcrun simctl spawn booted log config --mode "level:off" --subsystem com.apple.CoreTelephony
. Untuk membatalkan perintah, Anda dapat menjalankan: 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
berisi kode asli, dan perlu diejek. Dukungan Jest Snapshot mungkin berhasil.
Jika Anda tidak memiliki file Jest Setup yang dikonfigurasi, Anda harus menambahkan yang berikut ini ke pengaturan Jest Anda dan membuat file jest.setup.js di root proyek:
setupFiles: [ '/jest.setup.js' ] ;
Anda kemudian harus menambahkan yang berikut ini ke file pengaturan Jest Anda untuk meniru Modul Asli DeviceInfo:
import mockRNDeviceInfo from 'react-native-device-info/jest/react-native-device-info-mock' ;
jest . mock ( 'react-native-device-info' , ( ) => mockRNDeviceInfo ) ;
Lihat contoh proyek untuk informasi lebih lanjut.
Beberapa API (seperti getBatteryState) akan memberikan peringatan dalam kondisi tertentu seperti di tvOS atau emulator iOS. Hal ini tidak akan terlihat dalam produksi tetapi bahkan dalam pengembangan mungkin mengganggu. Adanya peringatan berguna karena perangkat ini tidak mengembalikan status, dan hal ini bisa mengejutkan, sehingga menyebabkan masalah dukungan github. Peringatan ini dimaksudkan untuk mendidik Anda sebagai pengembang. Jika peringatannya mengganggu, Anda dapat mencoba ini di kode Anda untuk menyembunyikannya:
import { LogBox } from 'react-native' ;
LogBox . ignoreLogs ( [ 'Battery state' ] ) ;
Lihat CHANGELOG.md.
Silakan lihat contributing guide
.
Sebagai rasa hormat kepada pengembang, perpustakaan ini dibuat kompatibel di v0.21.6 dengan react-native-dom dan react-native-web dengan menyediakan polyfill kosong untuk menghindari kerusakan build.
Hanya getUserAgent() yang akan mengembalikan nilai yang benar. Semua metode API lainnya akan mengembalikan nilai "kosong" dari tipe pengembalian yang didokumentasikan: 0
untuk angka, ''
untuk string, false
untuk boolean.