Geräteinformationen für React Native.
Ihr iOS-Podfile muss auf mindestens iOS 10 umgestellt werden. v7 dieses Moduls unterstützt iOS9 nicht mehr.
Mit npm:
npm install --save react-native-device-info
oder mit Garn:
yarn add react-native-device-info
Wenn Sie das Install Referrer-Tracking verwenden möchten, müssen Sie diese Konfiguration zu Ihrer Proguard-Konfiguration hinzufügen
-keep class com.android.installreferrer.api.** {
*;
}
Wenn Sie Probleme mit hasGms() in Ihren Release-Apks haben, fügen Sie bitte die folgende Regel zu Ihrer Proguard-Konfiguration hinzu
-keep class com.google.android.gms.common.** {*;}
Dieses Modul ist standardmäßig AndroidX. Sie sollten Ihre Bibliotheksversionen ähnlich wie hier im „ext“-Block Ihrer android/build.gradle
Datei konfigurieren
.. .
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
}
.. .
Wenn Sie Nicht-AndroidX benötigen, müssen Sie das Jetifier-Paket im umgekehrten Modus verwenden. Die Dokumentation ist für dieses Paket verfügbar.
Das Verknüpfen in nativen Modulen ist für neue React-Native-Entwickler eine häufige Problemquelle und führt zu Fehlern wie „RNDeviceInfo ist null“ usw. Aus diesem Grund wurde das automatische Verknüpfen implementiert und sollte in Ihrem Projekt verwendet werden.
Automatische Verknüpfung wird für alle Plattformen unterstützt (auch Windows auf React Native >= 0.63!)
Frühere Versionen müssen eine manuelle Verknüpfung durchführen. Für diese früheren React-Native-Versionen wird kein Support angeboten, Sie können jedoch bei Bedarf auf ältere Versionen dieser README-Datei verweisen. Aktualisieren Sie auf moderne Versionen von React-Native. Verwenden Sie bei Bedarf upgrade-helper
im Internet.
import DeviceInfo from 'react-native-device-info' ;
// or ES6+ destructured imports
import { getUniqueId , getManufacturer } from 'react-native-device-info' ;
Beachten Sie, dass viele APIs plattformspezifisch sind. Wenn für eine Plattform keine Implementierung vorhanden ist, sind die „Standard“-Rückgabewerte, die Sie erhalten "unknown"
für Zeichenfolge, -1
für Zahl und false
für Boolescher Wert. Arrays und Objekte sind leer ( []
bzw. {}
).
Die meisten APIs geben ein Promise zurück, verfügen aber auch über eine entsprechende API mit Sync
am Ende, die synchron arbeitet. Beispielsweise könnten Sie es vorziehen, isCameraPresentSync()
während des App-Bootstraps aufzurufen, um asynchrone Aufrufe während der ersten Teile des App-Starts zu vermeiden.
Hinweis zu getUserAgentSync
Während die asynchrone Methode getUserAgent
auf beiden Plattformen verfügbar ist, wird getUserAgentSync
nur auf Android unterstützt.
Die Beispiel-App in diesem Repository zeigt eine Beispielverwendung jeder einzelnen API. Konsultieren Sie die Beispiel-App, wenn Sie Fragen haben, und wenn Sie glauben, dass ein Problem auftritt, stellen Sie sicher, dass Sie es mithilfe der Beispiel-App reproduzieren können, bevor Sie es melden. Vielen Dank.
Verfahren | Rückgabetyp | iOS | Android | Windows | Web | visionOS |
---|---|---|---|---|---|---|
getAndroidId() | Promise | ✅ | ||||
getApiLevel() | Promise | ✅ | ||||
getApplicationName() | string | ✅ | ✅ | ✅ | ✅ | |
getAvailableLocationProviders() | Promise | ✅ | ✅ | ✅ | ||
getBaseOs() | Promise | ✅ | ✅ | ✅ | ||
getBuildId() | Promise | ✅ | ✅ | ✅ | ✅ | |
getBatteryLevel() | Promise | ✅ | ✅ | ✅ | ✅ | ✅ |
getBootloader() | Promise | ✅ | ||||
getBrand() | string | ✅ | ✅ | ✅ | ✅ | |
getBuildNumber() | string | ✅ | ✅ | ✅ | ✅ | |
getBundleId() | string | ✅ | ✅ | ✅ | ✅ | |
isCameraPresent() | Promise | ✅ | ✅ | ✅ | ||
getCarrier() | Promise | ✅ | ✅ | |||
getCodename() | Promise | ✅ | ||||
getDevice() | Promise | ✅ | ||||
getDeviceId() | string | ✅ | ✅ | ✅ | ✅ | |
getDeviceType() | string | ✅ | ✅ | ✅ | ||
getDisplay() | Promise | ✅ | ||||
getDeviceName() | Promise | ✅ | ✅ | ✅ | ✅ | |
getDeviceToken() | Promise | ✅ | ✅ | |||
getFirstInstallTime() | Promise | ✅ | ✅ | ✅ | ✅ | |
getFingerprint() | Promise | ✅ | ||||
getFontScale() | Promise | ✅ | ✅ | ✅ | ||
getFreeDiskStorage() | Promise | ✅ | ✅ | ✅ | ✅ | ✅ |
getFreeDiskStorageOld() | Promise | ✅ | ✅ | ✅ | ✅ | ✅ |
getHardware() | Promise | ✅ | ||||
getHost() | Promise | ✅ | ✅ | |||
getHostNames() | Promise | ✅ | ||||
getIpAddress() | Promise | ✅ | ✅ | ✅ | ✅ | |
getInkremental() | Promise | ✅ | ||||
getInstallerPackageName() | Promise | ✅ | ✅ | ✅ | ✅ | |
getInstallReferrer() | Promise | ✅ | ✅ | ✅ | ||
getInstanceId() | Promise | ✅ | ||||
getLastUpdateTime() | Promise | ✅ | ||||
getMacAddress() | Promise | ✅ | ✅ | ✅ | ||
getManufacturer() | Promise | ✅ | ✅ | ✅ | ✅ | |
getMaxMemory() | Promise | ✅ | ✅ | ✅ | ||
getModel() | string | ✅ | ✅ | ✅ | ✅ | |
getPowerState() | Promise | ✅ | ✅ | ✅ | ✅ | ✅ |
getProduct() | Promise | ✅ | ||||
getPreviewSdkInt() | Promise | ✅ | ||||
getReadableVersion() | string | ✅ | ✅ | ✅ | ✅ | |
getSerialNumber() | Promise | ✅ | ✅ | |||
getSecurityPatch() | Promise | ✅ | ||||
getStartupTime() | Promise | ✅ | ✅ | ✅ | ||
getSystemAvailableFeatures() | Promise | ✅ | ||||
getSystemName() | 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 | ✅ | ✅ | ✅ | ✅ | |
isTablet() | boolean | ✅ | ✅ | ✅ | ✅ | |
isLowRamDevice() | boolean | ✅ | ||||
isDisplayZoomed() | boolean | ✅ | ||||
isTabletMode() | Promise | ✅ | ||||
unterstützt32BitAbis() | Promise | ✅ | ||||
unterstützt64BitAbis() | Promise | ✅ | ||||
unterstütztAbis() | Promise | ✅ | ✅ | ✅ | ✅ | |
syncUniqueId() | Promise | ✅ | ✅ | |||
getSupportedMediaTypeList() | Promise | ✅ |
Ruft die API-Ebene ab.
DeviceInfo . getApiLevel ( ) . then ( ( apiLevel ) => {
// iOS: ?
// Android: 25
// Windows: ?
} ) ;
Siehe API-Ebenen
Ruft die ANDROID_ID ab. Informationen zur geeigneten Verwendung finden Sie in der API-Dokumentation.
DeviceInfo . getAndroidId ( ) . then ( ( androidId ) => {
// androidId here
} ) ;
Ruft den Anwendungsnamen ab.
let appName = DeviceInfo . getApplicationName ( ) ;
// AwesomeApp
Der Basis-Betriebssystem-Build, auf dem das Produkt basiert.
DeviceInfo . getBaseOs ( ) . then ( ( baseOs ) => {
// "Windows", "Android" etc
} ) ;
Ruft den Batteriestand des Geräts als Float zwischen 0 und 1 ab.
DeviceInfo . getBatteryLevel ( ) . then ( ( batteryLevel ) => {
// 0.759999
} ) ;
Um den tatsächlichen Batteriestand zu erhalten, aktivieren Sie den Batterieüberwachungsmodus für die Anwendung. Fügen Sie diesen Code hinzu:
[UIDevice currentDevice ].batteryMonitoringEnabled = true ;
zu AppDelegate.m application:didFinishLaunchingWithOptions:
Gibt -1 im iOS-Simulator zurück
Die Versionsnummer des System-Bootloaders.
DeviceInfo . getBootloader ( ) . then ( ( bootloader ) => {
// "mw8998-002.0069.00"
} ) ;
Ruft die Gerätemarke ab.
let brand = DeviceInfo . getBrand ( ) ;
// iOS: "Apple"
// Android: "xiaomi"
// Windows: ?
Ruft die Buildnummer der Anwendung ab.
let buildNumber = DeviceInfo . getBuildNumber ( ) ;
// iOS: "89"
// Android: "4"
// Windows: ?
Ruft die Anwendungspaket-ID ab.
let bundleId = DeviceInfo . getBundleId ( ) ;
// "com.example.AwesomeApp"
Gibt an, ob das Gerät jetzt über eine Kamera verfügt.
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
} ) ;
- Das Hinzufügen/Entfernen einer Kamera im laufenden Betrieb wird unterstützt.
- Gibt den Status der physischen Präsenz der Kamera zurück. Wenn die Kamera vorhanden ist, Ihre App jedoch keine Berechtigungen zur Verwendung hat, gibt isCameraPresent dennoch den Wert true zurück
Ruft den Trägernamen (Netzbetreiber) ab.
DeviceInfo . getCarrier ( ) . then ( ( carrier ) => {
// "SOFTBANK"
} ) ;
Der aktuelle Entwicklungscodename oder die Zeichenfolge „REL“, wenn es sich um einen Release-Build handelt.
DeviceInfo . getCodename ( ) . then ( ( codename ) => {
// "REL"
} ) ;
Der Name des Industriedesigns.
DeviceInfo . getDevice ( ) . then ( ( device ) => {
// "walleye"
} ) ;
Ruft die Geräte-ID ab.
let deviceId = DeviceInfo . getDeviceId ( ) ;
// iOS: "iPhone7,2"
// Android: "goldfish"
// Windows: "Y3R94UC#AC4"
Eine Build-ID-Zeichenfolge, die dem Benutzer angezeigt werden soll.
DeviceInfo . getDisplay ( ) . then ( ( display ) => {
// "OPM2.171026.006.G1"
} ) ;
Ruft den Gerätenamen ab.
DeviceInfo . getDeviceName ( ) . then ( ( deviceName ) => {
// iOS: "Becca's iPhone 6"
// Android: ?
// Windows: ?
} ) ;
Früher war hierfür android.permission.BLUETOOTH erforderlich, die neue Implementierung in Version 3 benötigt es jedoch nicht. Sie können dies aus Ihrer AndroidManifest.xml entfernen, wenn Sie es für diese API hatten. iOS 16 und höher erfordern Berechtigungen für den Zugriff auf den benutzerdefinierten Gerätenamen, andernfalls wird ein generischer Wert zurückgegeben (z. B. „iPad“, „iPhone“).
Ruft das Gerätetoken ab (siehe DeviceCheck). Nur für iOS 11.0+ auf echten Geräten verfügbar. Dadurch wird das Versprechen abgelehnt, wenn getDeviceToken nicht unterstützt wird. Seien Sie vorsichtig bei der Ausnahmebehandlung.
DeviceInfo . getDeviceToken ( ) . then ( ( deviceToken ) => {
// iOS: "a2Jqsd0kanz..."
} ) ;
Ruft den Zeitpunkt der Erstinstallation der App in Millisekunden ab.
DeviceInfo . getFirstInstallTime ( ) . then ( ( firstInstallTime ) => {
// Android: 1517681764528
} ) ;
Eine Zeichenfolge, die diesen Build eindeutig identifiziert.
DeviceInfo . getFingerprint ( ) . then ( ( fingerprint ) => {
// "google/walleye/walleye:8.1.0/OPM2.171026.006.G1/4820017:user/release-keys"
} ) ;
Ruft den Schriftgrad des Geräts ab. Der Schriftgrad ist das Verhältnis der aktuellen Systemschriftart zur „normalen“ Schriftgröße. Wenn also normaler Text 10pt und die Systemschriftart derzeit 15pt beträgt, beträgt der Schriftgrad 1,5. Dies kann verwendet werden, um festzustellen, ob Einstellungen für die Barrierefreiheit vorgenommen wurden für das Gerät geändert; Möglicherweise möchten Sie bestimmte Ansichten neu gestalten, wenn der Schriftgrad deutlich größer ist (> 2,0).
DeviceInfo . getFontScale ( ) . then ( ( fontScale ) => {
// 1.2
} ) ;
Methode, die die verfügbare Speichergröße in Bytes ermittelt und dabei sowohl die Berechnung des Root- als auch des Datendateisystems berücksichtigt.
Unter iOS akzeptiert diese Methode die folgenden optionalen Argumente:
'total'
: Verwendet volumeAvailableCapacityKey
'important'
: Verwendet volumeAvailableCapacityForImportantUsageKey
'opportunistic'
: Verwendet volumeAvailableCapacityForOpportunisticUsageKey
Weitere Einzelheiten finden Sie in der Apple-Dokumentation zum Überprüfen der Volume-Speicherkapazität.
DeviceInfo . getFreeDiskStorage ( ) . then ( ( freeDiskStorage ) => {
// Android: 17179869184
// iOS: 17179869184
} ) ;
DeviceInfo . getFreeDiskStorage ( 'important' ) . then ( ( freeDiskStorage ) => {
// iOS: 18198219342 (important storage)
} ) ;
Die von dieser Methode für Android verwendete API wurde in Version 6.0.0 geändert. Die ältere Version wurde unten als getFreeDiskStorageOld()
gepflegt. Unter iOS geben getFreeDiskStorage()
und getFreeDiskStorageOld()
denselben Wert zurück.
Alte Implementierung der Methode, die die verfügbare Speichergröße in Bytes abruft.
DeviceInfo . getFreeDiskStorageOld ( ) . then ( ( freeDiskStorage ) => {
// Android: 17179869184
// iOS: 17179869184
} ) ;
Von Developer.android.com:
Diese Methode wurde in API-Level 29 veraltet.
Gibt das primäre freigegebene/externe Speicherverzeichnis zurück.
Hinweis: Lassen Sie sich hier nicht durch das Wort „extern“ verwirren. Dieses Verzeichnis kann man sich besser als Medien/gemeinsamen Speicher vorstellen. Es handelt sich um ein Dateisystem, das eine relativ große Datenmenge speichern kann und von allen Anwendungen gemeinsam genutzt wird (es erzwingt keine Berechtigungen). Traditionell handelt es sich hierbei um eine SD-Karte, sie kann jedoch auch als integrierter Speicher in einem Gerät implementiert werden, der sich vom geschützten internen Speicher unterscheidet und als Dateisystem auf einem Computer bereitgestellt werden kann.
Der Name der Hardware (von der Kernel-Befehlszeile oder /proc).
DeviceInfo . getHardware ( ) . then ( hardware => {
// "walleye"
} ) ;
Hostname
DeviceInfo . getHost ( ) . then ( ( host ) => {
// "wprd10.hot.corp.google.com"
} ) ;
Veraltet Ruft die aktuelle IP-Adresse des Geräts ab. (nur von WLAN) Wechseln Sie zu „react-native-netinfo/netinfo“ oder „react-native-network-info“.
DeviceInfo . getIpAddress ( ) . then ( ( ip ) => {
// "92.168.32.44"
} ) ;
Unterstützung für iOS wurde in 0.22.0 hinzugefügt
Der interne Wert, der von der zugrunde liegenden Quellcodeverwaltung zur Darstellung dieses Builds verwendet wird.
DeviceInfo . getIncremental ( ) . then ( ( incremental ) => {
// "4820017"
} ) ;
Der interne Wert, der von der zugrunde liegenden Quellcodeverwaltung zur Darstellung dieses Builds verwendet wird.
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"
} ) ;
Ruft die Referrerzeichenfolge bei der Anwendungsinstallation ab.
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"
} ) ;
Ruft die Anwendungsinstanz-ID ab.
Dadurch wird versucht, eine Instanz-ID aus diesen Quellen in dieser Reihenfolge abzurufen:
instanceId
in der SharedPreferences-Datei react-native-device-info
firebaseBomVersion
oder firebaseIidVersion
in gradle ext definiert ist – veraltet )googlePlayServicesIidVersion
oder googlePlayServicesVersion
in gradle ext definiert ist – veraltet )Wenn Sie die veralteten Quellen verwenden, wird die generierte Instanz-ID in den gemeinsamen Einstellungen gespeichert, sodass sie während dieser Hauptversion von React-Native-Device-Info stabil bleibt.
In einer zukünftigen Version von „react-native-device-info“ werden die Firebase IID- und GMS IID-Implementierungen entfernt und alle zukünftigen Werte werden der in SharedPreferences gespeicherte Wert (falls vorhanden) oder eine neue zufällige UUID sein, die dann gespeichert wird und für die zukünftige Installation dieser App verwendet werden.
DeviceInfo . getInstanceId ( ) . then ( ( instanceId ) => {
// Android: da4e0245-5d6c-402a-a07c-0c5349f229e2
} ) ;
Siehe https://developers.google.com/instance-id/
Ruft den Zeitpunkt der letzten Aktualisierung der App in Millisekunden ab.
DeviceInfo . getLastUpdateTime ( ) . then ( ( lastUpdateTime ) => {
// Android: 1517681764992
} ) ;
Ruft die MAC-Adresse des Netzwerkadapters ab.
DeviceInfo . getMacAddress ( ) . then ( ( mac ) => {
// "E5:12:D8:E5:69:97"
} ) ;
iOS: Diese Methode gibt immer „02:00:00:00:00:00“ zurück, da das Abrufen der MAC-Adresse seit iOS 7 deaktiviert ist
Ruft den Gerätehersteller ab.
DeviceInfo . getManufacturer ( ) . then ( ( manufacturer ) => {
// iOS: "Apple"
// Android: "Google"
// Windows: ?
} ) ;
Gibt die maximale Speichermenge in Bytes zurück, die die VM zu verwenden versucht.
DeviceInfo . getMaxMemory ( ) . then ( ( maxMemory ) => {
// 402653183
} ) ;
Ruft das Gerätemodell ab.
iOS-Warnung: Die Liste mit Gerätenamen wird von der Community verwaltet und kann bei neuen Geräten zu Verzögerungen führen. Es wird empfohlen, getDeviceId()
zu verwenden, da es zuverlässiger und bei neuen iOS-Geräten immer auf dem neuesten Stand ist. Wir akzeptieren Pull-Anfragen, die der Liste neue iOS-Geräte mit Gerätenamen hinzufügen.
let model = DeviceInfo . getModel ( ) ;
// iOS: ?
// Android: ?
// Windows: ?
getPhoneNumber() wurde entfernt. Diese Methode verwendet veraltete Android-APIs. Sie können den React-Native-Sim-Cards-Manager verwenden, um die Telefonnummer abzurufen.
Ruft den Energiestatus des Geräts ab, einschließlich des Akkustands, ob es angeschlossen ist und ob das System derzeit im Energiesparmodus arbeitet. Zeigt unter iOS eine Warnung an, wenn die Batterieüberwachung nicht aktiviert ist oder wenn es auf einem Emulator versucht wird (wo die Überwachung nicht möglich ist).
DeviceInfo . getPowerState ( ) . then ( ( state ) => {
// {
// batteryLevel: 0.759999,
// batteryState: 'unplugged',
// lowPowerMode: false,
// }
} ) ;
Der Name des Gesamtprodukts.
DeviceInfo . getProduct ( ) . then ( ( product ) => {
// "walleye"
} ) ;
Die Entwicklervorschau-Revision eines Vorabversions-SDKs.
DeviceInfo . getPreviewSdkInt ( ) . then ( ( previewSdkInt ) => {
// 0
} ) ;
Ruft die für Menschen lesbare Version der Anwendung ab (identisch mit getVersion() + '.' + getBuildNumber())
let readableVersion = DeviceInfo . getReadableVersion ( ) ;
// iOS: 1.0.1.32
// Android: 1.0.1.234
// Windows: ?
Ruft die Seriennummer des Geräts ab. Wird in fast allen Fällen „unbekannt“ sein, es sei denn, Sie haben eine privilegierte App und wissen, was Sie tun.
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")
} ) ;
Wenn Sie diese Methode unter Windows verwenden möchten, müssen Sie Ihrer Anwendung die SMBIOS-Funktion hinzufügen. Bitte befolgen Sie diese Dokumentation, um die Funktion in Ihrer Manifestdatei hinzuzufügen.
Die für den Benutzer sichtbare Sicherheitspatch-Stufe.
DeviceInfo . getSecurityPatch ( ) . then ( ( securityPatch ) => {
// "2018-07-05"
} ) ;
Ruft den Betriebssystemnamen des Geräts ab.
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: ?
Ruft den Zeitpunkt in Millisekunden ab, zu dem der aktuelle App-Prozess gestartet wurde.
DeviceInfo . getStartupTime ( ) . then ( ( startupTime ) => {
// Android: 1517681764528
// iOS: 1517681764528
} ) ;
Ruft die Betriebssystemversion des Geräts ab.
let systemVersion = DeviceInfo . getSystemVersion ( ) ;
// iOS: "11.0"
// Android: "7.1.1"
// Windows: ?
Ruft die Build-Nummer des Betriebssystems ab.
DeviceInfo . getBuildId ( ) . then ( ( buildId ) => {
// iOS: "12A269"
// tvOS: not available
// Android: "13D15"
// Windows: not available
} ) ;
Durch Kommas getrennte Tags, die den Build beschreiben.
DeviceInfo . getTags ( ) . then ( ( tags ) => {
// "release-keys, unsigned, debug",
} ) ;
Die Art des Builds.
DeviceInfo . getType ( ) . then ( ( type ) => {
// "user", "eng"
} ) ;
Methode, die die volle Festplattenspeichergröße in Bytes ermittelt und dabei sowohl die Berechnung des Root- als auch des Datendateisystems berücksichtigt.
DeviceInfo . getTotalDiskCapacity ( ) . then ( ( capacity ) => {
// Android: 17179869184
// iOS: 17179869184
} ) ;
Die von dieser Methode für Android verwendete API wurde in Version 6.0.0 geändert. Die ältere Version wurde unten als getTotalDiskCapacityOld()
gepflegt. Unter iOS geben getTotalDiskCapacity()
und getTotalDiskCapacityOld()
denselben Wert zurück.
Alte Implementierung der Methode, die die volle Festplattenspeichergröße in Bytes ermittelt.
DeviceInfo . getTotalDiskCapacityOld ( ) . then ( ( capacity ) => {
// Android: 17179869184
// iOS: 17179869184
} ) ;
Ruft den Gesamtspeicher des Geräts in Bytes ab.
DeviceInfo . getTotalMemory ( ) . then ( ( totalMemory ) => {
// 1995018240
} ) ;
Diese Kennung gilt in einigen App-Stores (z. B. Huawei oder Google Play) als vertrauliche Information und kann dazu führen, dass Ihre App entfernt oder abgelehnt wird, wenn sie ohne Zustimmung des Benutzers oder für nicht genehmigte Zwecke verwendet wird. Weitere Informationen finden Sie in den Shop-Richtlinien (siehe Hinweise unten).
Ruft die eindeutige Geräte-ID ab. Unter Android ist es derzeit identisch mit getAndroidId()
in diesem Modul. Unter iOS wird die UID-ID DeviceUID
verwendet. Unter Windows wird Windows.Security.ExchangeActiveSyncProvisioning.EasClientDeviceInformation.id
verwendet.
DeviceInfo . getUniqueId ( ) . then ( ( uniqueId ) => {
// iOS: "FCDBD8EF-62FC-4ECB-B2F5-92C9E79AC7F9"
// Android: "dd96dec43fb81c97"
// Windows: "{2cf7cb3c-da7a-d508-0d7f-696bb51185b4}"
} ) ;
- iOS: Dies ist
IDFV
oder eine zufällige Zeichenfolge, wenn IDFV nicht verfügbar ist. Sobald die UID generiert wurde, wird sie im iOS-Schlüsselbund und in NSUserDefaults gespeichert. Es bleibt also gleich, auch wenn Sie die App löschen oder IDFV zurücksetzen. Sie können es sorgfältig als dauerhafte eindeutige ID betrachten. Es kann nur geändert werden, wenn jemand Werte in „Keychain/NSUserDefaults“ manuell überschreibt oder wenn Apple die Implementierungen von „Keychain“ und „NSUserDefaults“ ändern würde. Achtung: Der IDFV wird anhand Ihrer Bundle-ID berechnet und unterscheidet sich daher bei App-Erweiterungen.- Android: Vor Oreo ist diese ID (ANDROID_ID) immer dieselbe, sobald Sie Ihr Telefon einrichten.
- Android: Google Play-Richtlinie, siehe „Persistente Gerätekennungen“. Huawei – AppGallery-Überprüfungsrichtlinien siehe „permanente Gerätekennung“ und „Einholung der Benutzereinwilligung“.
Diese Methode ist für iOS gedacht.
Dadurch wird uniqueId mit IDFV
synchronisiert oder eine neue Zufallszeichenfolge festgelegt.
Unter iOS wird die UID-ID DeviceUID
verwendet. Auf anderen Plattformen wird in diesem Modul einfach getUniqueId()
aufgerufen.
DeviceInfo . syncUniqueId ( ) . then ( ( uniqueId ) => {
// iOS: "FCDBD8EF-62FC-4ECB-B2F5-92C9E79AC7F9"
// Android: "dd96dec43fb81c97"
// Windows: ?
} ) ;
- Wenn der Benutzer Daten von einem iOS-Gerät auf ein zweites iOS-Gerät verschoben oder wiederhergestellt hat, verfügt er über zwei verschiedene Geräte mit derselben
uniqueId
in Schlüsselbund/NSUserDefaults. Der Benutzer kannsyncUniqueId()
auf einem neuen iOS-Gerät aufrufen. Dadurch wird seineuniqueId
vonIDFV
oder einer zufälligen Zeichenfolge aktualisiert.
Ruft die Speichernutzung der App in Bytes ab.
Hinweis: Diese Methode ist nur zum Debuggen oder Erstellen einer benutzerorientierten Prozessmanagement-Benutzeroberfläche gedacht.
DeviceInfo . getUsedMemory ( ) . then ( ( usedMemory ) => {
// 23452345
} ) ;
Diese Methode ruft die Liste der unterstützten Mediencodecs ab.
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"]
} ) ;
Ruft den Benutzeragenten des Geräts ab.
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: ?
} ) ;
Ruft die Anwendungsversion ab. Berücksichtigen Sie, dass eine Versionszeichenfolge geräte-/betriebssystemformatiert ist und zusätzliche Daten (z. B. Build-Nummer usw.) enthalten kann. Wenn Sie das Versionsformat genau kennen möchten, können Sie einen regulären Ausdruck verwenden, um den gewünschten Teil der zurückgegebenen Versionszeichenfolge abzurufen.
let version = DeviceInfo . getVersion ( ) ;
// iOS: "1.0"
// Android: "1.0" or "1.0.2-alpha.12"
// Windows: ?
Zeigt an, ob sich das Gerät im Flugzeugmodus befindet.
DeviceInfo . isAirplaneMode ( ) . then ( ( airplaneModeOn ) => {
// false
} ) ;
- Dies funktioniert nur, wenn der Remote-Debugger deaktiviert ist.
Zeigt an, ob der Akku gerade geladen wird.
DeviceInfo . isBatteryCharging ( ) . then ( ( isCharging ) => {
// true or false
} ) ;
Gibt an, ob die Anwendung in einem Emulator ausgeführt wird.
DeviceInfo . isEmulator ( ) . then ( ( isEmulator ) => {
// false
} ) ;
Gibt an, ob an das Gerät eine Tastatur angeschlossen ist.
let isKeyboardConnected = DeviceInfo . isKeyboardConnected ( ) ;
// true
Gibt an, ob für das Gerät eine PIN-Nummer oder ein Fingerabdruck festgelegt wurde.
DeviceInfo . isPinOrFingerprintSet ( ) . then ( ( isPinOrFingerprintSet ) => {
if ( ! isPinOrFingerprintSet ) {
// ...
}
} ) ;
Gibt an, ob es sich bei dem Gerät um ein Tablet handelt.
let isTablet = DeviceInfo . isTablet ( ) ;
// true
Gibt an, ob das Gerät über wenig RAM verfügt.
let isLowRamDevice = DeviceInfo . isLowRamDevice ( ) ;
// true
Gibt an, ob der Benutzer den Anzeigezoom auf „Gezoomt“ geändert hat
let isDisplayZoomed = DeviceInfo . isDisplayZoomed ( ) ;
// true
Gibt an, ob sich das Gerät im Tablet-Modus befindet.
let isTabletMode = DeviceInfo . isTabletMode ( ) ;
// true
Gibt an, ob sich das Gerät derzeit im Querformat befindet.
DeviceInfo . isLandscape ( ) . then ( ( isLandscape ) => {
// true
} ) ;
Gibt an, ob an das Gerät eine Maus angeschlossen ist.
let isMouseConnected = DeviceInfo . isMouseConnected ( ) ;
// true
Gibt an, ob das Gerät Google Mobile Services unterstützt.
DeviceInfo . hasGms ( ) . then ( ( hasGms ) => {
// true
} ) ;
Gibt an, ob das Gerät Huawei Mobile Services unterstützt.
DeviceInfo . hasHms ( ) . then ( ( hasHms ) => {
// true
} ) ;
Zeigt an, ob das Gerät eine Kerbe hat.
let hasNotch = DeviceInfo . hasNotch ( ) ;
// true
Gibt an, ob das Gerät über eine dynamische Insel verfügt.
let hasDynamicIsland = DeviceInfo . hasDynamicIsland ( ) ;
// true
Gibt den Typ des Geräts als String zurück, der einer der folgenden sein wird:
Handset
Tablet
Tv
Desktop
GamingConsole
Headset
unknown
let type = DeviceInfo . getDeviceType ( ) ;
// 'Handset'
Eine geordnete Liste der von diesem Gerät unterstützten 32-Bit-ABIs.
DeviceInfo . supported32BitAbis ( ) . then ( ( abis ) => {
// ["armeabi-v7a", "armeabi"]
} ) ;
Eine geordnete Liste der von diesem Gerät unterstützten 64-Bit-ABIs.
DeviceInfo . supported64BitAbis ( ) . then ( ( abis ) => {
// ["arm64-v8a"]
} ) ;
Gibt eine Liste der unterstützten Prozessorarchitekturversionen zurück
DeviceInfo . supportedAbis ( ) . then ( ( abis ) => {
// [ "arm64 v8", "Intel x86-64h Haswell", "arm64-v8a", "armeabi-v7a", "armeabi", "win_x86", "win_arm", "win_x64" ]
} ) ;
Gibt an, ob das Gerät über eine bestimmte Systemfunktion verfügt.
DeviceInfo . hasSystemFeature ( 'amazon.hardware.fire_tv' ) . then ( ( hasFeature ) => {
// true or false
} ) ;
Gibt eine Liste der verfügbaren Systemfunktionen auf Android zurück.
DeviceInfo . getSystemAvailableFeatures ( ) . then ( ( features ) => {
// ["android.software.backup", "android.hardware.screen.landscape", "android.hardware.wifi", ...]
} ) ;
Gibt an, ob auf dem Gerät Ortungsdienste auf Geräteebene deaktiviert sind (NICHT im Zusammenhang mit App-spezifischen Berechtigungen)
DeviceInfo . isLocationEnabled ( ) . then ( ( enabled ) => {
// true or false
} ) ;
Gibt an, ob das Gerät mit einem kabelgebundenen Headset oder einem Bluetooth-Kopfhörer verbunden ist
DeviceInfo . isHeadphonesConnected ( ) . then ( ( enabled ) => {
// true or false
} ) ;
Gibt an, ob das Gerät mit einem kabelgebundenen Headset verbunden ist
DeviceInfo . isWiredHeadphonesConnected ( ) . then ( ( enabled ) => {
// true or false
} ) ;
Gibt an, ob das Gerät mit einem Bluetooth-Headset verbunden ist
DeviceInfo . isBluetoothHeadphonesConnected ( ) . then ( ( enabled ) => {
// true or false
} ) ;
Gibt ein Objekt plattformspezifischer Standortanbieter/-dienste mit boolean
Wert zurück, unabhängig davon, ob sie derzeit verfügbar sind oder nicht.
HINWEIS: Diese Funktion erfordert Zugriff auf die Standortberechtigung auf Android
DeviceInfo . getAvailableLocationProviders ( ) . then ( ( providers ) => {
// {
// gps: true
// network: true
// passive: true
// }
} ) ;
DeviceInfo . getAvailableLocationProviders ( ) . then ( ( providers ) => {
// {
// headingAvailable: false
// isRangingAvailable: false
// locationServicesEnabled: true
// significantLocationChangeMonitoringAvailable: true
// }
} ) ;
Ruft die aktuelle Helligkeitsstufe des Hauptbildschirms des Geräts ab. Derzeit nur iOS. Gibt eine Zahl zwischen 0,0 und 1,0 (einschließlich) zurück.
DeviceInfo . getBrightness ( ) . then ( ( brightness ) => {
// iOS: 0.6
} ) ;
Unterstützt in Windows, iOS und Android (Webunterstützung für Akku-/Lade-bezogene APIs).
Wird ausgelöst, wenn sich der Batteriestand ändert; nicht häufiger als einmal pro Minute gesendet werden.
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
} ) ;
Wird ausgelöst, wenn der Akkustand als niedrig gilt (mehrmals, bis er aufgeladen ist)
Plattform | Prozentsatz |
---|---|
iOS | 20 |
Android | 15 |
Web | 20 |
Windows | 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
} ) ;
Wird ausgelöst, wenn sich der Akkustatus ändert oder das Gerät in den Energiesparmodus wechselt, beispielsweise wenn das Gerät in den Lademodus wechselt oder vom Stromnetz getrennt wird.
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,
// }
} ) ;
Ruft den Zeitpunkt der Erstinstallation der App in Millisekunden ab.
import { useFirstInstallTime } from 'react-native-device-info' ;
const { loading , result } = useFirstInstallTime ( ) ; // { loading: true, result: 1517681764528}
< Text > { loading ? 'loading...' : result } < / Text > ;
Ruft den Gerätenamen ab.
import { useDeviceName } from 'react-native-device-info' ;
const { loading , result } = useDeviceName ( ) ; // { loading: true, result: "Becca's iPhone 6"}
< Text > { loading ? 'loading...' : result } < / Text > ;
Gibt an, ob das Gerät über eine bestimmte Systemfunktion verfügt.
import { useHasSystemFeature } from 'react-native-device-info' ;
const { loading , result } = useHasSystemFeature ( 'amazon.hardware.fire_tv' ) ; // { loading: true, result: false }
< Text > { loading ? 'loading...' : result } < / Text > ;
Ermitteln Sie, ob die Anwendung in einem Emulator ausgeführt wird.
import { useIsEmulator } from 'react-native-device-info' ;
const { loading , result } = useIsEmulator ( ) ; // { loading: true, result: false }
< Text > { loading ? 'loading...' : result } < / Text > ;
Ruft den Gerätehersteller ab.
import { useManufacturer } from 'react-native-device-info' ;
const { loading , result } = useManufacturer ( ) ; // { loading: true, result: "Apple"}
< Text > { loading ? 'loading...' : result } < / Text > ;
Gibt an, ob das Gerät mit einem kabelgebundenen Headset oder einem Bluetooth-Kopfhörer verbunden ist.
Dieser Hook abonniert das Ereignis RNDeviceInfo_headphoneConnectionDidChange
und aktualisiert das result
entsprechend.
import { useIsHeadphonesConnected } from 'react-native-device-info' ;
const { loading , result } = useIsHeadphonesConnected ( ) ; // { loading: true, result: false}
< Text > { loading ? 'loading...' : result } < / Text > ;
Gibt an, ob das Gerät mit einem kabelgebundenen Headset verbunden ist.
Dieser Hook abonniert das Ereignis RNDeviceInfo_headphoneWiredConnectionDidChange
und aktualisiert das result
entsprechend.
import { useIsWiredHeadphonesConnected } from 'react-native-device-info' ;
const { loading , result } = useIsWiredHeadphonesConnected ( ) ; // { loading: true, result: false}
< Text > { loading ? 'loading...' : result } < / Text > ;
Zeigt an, ob das Gerät mit Bluetooth-Kopfhörern verbunden ist.
Dieser Hook abonniert das Ereignis RNDeviceInfo_headphoneBluetoothConnectionDidChange
und aktualisiert das result
entsprechend.
import { useIsBluetoothHeadphonesConnected } from 'react-native-device-info' ;
const { loading , result } = useIsBluetoothHeadphonesConnected ( ) ; // { loading: true, result: false}
< Text > { loading ? 'loading...' : result } < / Text > ;
Ruft die aktuelle Helligkeitsstufe des Hauptbildschirms des Geräts ab. Derzeit nur iOS. Gibt eine Zahl zwischen 0,0 und 1,0 (einschließlich) zurück.
Dieser Hook abonniert das Ereignis RNDeviceInfo_brightnessDidChange
und aktualisiert das brightness
entsprechend.
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
} ) ;
=======
Wenn Sie den Gerätetyp von der nativen Seite aus überprüfen müssen, können Sie Folgendes verwenden:
import com . learnium . resolver . DeviceTypeResolver
...
deviceTypeResolver = new DeviceTypeResolver ( context );
...
//Check if the device is a Tablet:
if ( deviceTypeResolver . isTablet ){
...
} else {
...
}
Bei der Installation oder Verwendung react-native-device-info
können folgende Probleme auftreten:
react-native-device-info
verwendet com.google.android.gms:play-services-gcm
um getInstanceId() bereitzustellen. Dies kann zu Konflikten beim Erstellen der Android-Anwendung führen.
Wenn Sie in Ihrer App eine andere Version von com.google.android.gms:play-services-gcm
verwenden, können Sie die Gradle-Variable googlePlayServicesVersion
in Ihrer build.gradle
Datei definieren, um react-native-device-info
mitzuteilen, welche Version es sollte erfordern. Ein Beispiel finden Sie im hier enthaltenen Beispielprojekt.
Wenn Sie eine andere Bibliothek verwenden, die mit com.google.android.gms:play-services-gcm
in Konflikt steht, und Sie sicher sind, dass Sie wissen, was Sie tun, um Versionskonflikte zu vermeiden, können Sie diese Abhängigkeit einfach ignorieren Ihre Gradle-Datei:
compile(project( ' :react-native-device-info ' )) {
exclude group : ' com.google.android.gms '
}
Scheint ein Fehler zu sein, der durch react-native link
verursacht wird. Sie können libRNDeviceInfo-tvOS.a
manuell in Xcode -> [Your iOS build target] -> Build Phrases -> Link Binary with Libraries
löschen.
Dies ist ein Protokoll auf Systemebene, das durch Ausführen von xcrun simctl spawn booted log config --mode "level:off" --subsystem com.apple.CoreTelephony
deaktiviert werden kann. Um den Befehl rückgängig zu machen, können Sie Folgendes ausführen: 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
enthält nativen Code und muss verspottet werden. Die Jest Snapshot-Unterstützung funktioniert jedoch möglicherweise.
Wenn Sie keine Jest-Setup-Datei konfiguriert haben, sollten Sie Folgendes zu Ihren Jest-Einstellungen hinzufügen und die Datei jest.setup.js im Projektstammverzeichnis erstellen:
setupFiles: [ '/jest.setup.js' ] ;
Anschließend sollten Sie Ihrer Jest-Setup-Datei Folgendes hinzufügen, um das DeviceInfo Native-Modul zu simulieren:
import mockRNDeviceInfo from 'react-native-device-info/jest/react-native-device-info-mock' ;
jest . mock ( 'react-native-device-info' , ( ) => mockRNDeviceInfo ) ;
Weitere Informationen finden Sie im Beispielprojekt.
Einige der APIs (wie getBatteryState) geben unter bestimmten Bedingungen Warnungen aus, z. B. unter tvOS oder dem iOS-Emulator. Dies wird in der Produktion nicht sichtbar sein, aber selbst in der Entwicklung kann es irritierend sein. Es ist nützlich, Warnungen zu haben, da diese Geräte keinen Status zurückgeben. Dies kann überraschend sein und zu Problemen mit der Github-Unterstützung führen. Die Warnungen sollen Sie als Entwickler informieren. Wenn die Warnungen störend sind, können Sie in Ihrem Code Folgendes versuchen, um sie zu unterdrücken:
import { LogBox } from 'react-native' ;
LogBox . ignoreLogs ( [ 'Battery state' ] ) ;
Siehe CHANGELOG.md.
Bitte beachten Sie den contributing guide
.
Als Gefälligkeit für Entwickler wurde diese Bibliothek in Version 0.21.6 mit React-Native-Dom und React-Native-Web kompatibel gemacht, indem ein leeres Polyfill bereitgestellt wurde, um zu verhindern, dass Builds beschädigt werden.
Nur getUserAgent() gibt einen korrekten Wert zurück. Alle anderen API-Methoden geben einen „leeren“ Wert ihres dokumentierten Rückgabetyps zurück: 0
für Zahlen, ''
für Zeichenfolgen, false
für boolesche Werte.