Informations sur le périphérique pour React Native.
Votre Podfile iOS devra passer à un iOS 10 minimum. La v7 de ce module ne prend plus en charge iOS9.
Utilisation de npm :
npm install --save react-native-device-info
ou en utilisant du fil :
yarn add react-native-device-info
Si vous souhaitez utiliser le suivi des référents d'installation, vous devrez ajouter cette configuration à votre configuration Proguard.
-keep class com.android.installreferrer.api.** {
*;
}
Si vous rencontrez des problèmes avec hasGms() sur vos versions apk, veuillez ajouter la règle suivante à votre configuration Proguard
-keep class com.google.android.gms.common.** {*;}
Ce module est par défaut AndroidX, vous devez configurer les versions de votre bibliothèque de manière similaire à celle-ci dans le bloc "ext" de votre fichier android/build.gradle
.. .
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
}
.. .
Si vous avez besoin d'un logiciel non AndroidX, vous devrez utiliser le package jetifier en mode inverse, documentation disponible avec ce package.
La liaison dans les modules natifs est une source fréquente de problèmes pour les nouveaux développeurs natifs de réaction, entraînant des erreurs telles que "RNDeviceInfo is null", etc. Pour cette raison, la liaison automatique a été implémentée et doit être utilisée dans votre projet.
La liaison automatique est prise en charge pour toutes les plates-formes (même Windows sur React natif >= 0,63 !)
Les versions précédentes doivent effectuer une liaison manuelle. Aucune prise en charge n'est offerte pour ces versions natives de réaction précédentes, mais vous pouvez vous référer aux anciennes versions de ce README si vous le souhaitez. Passez aux versions modernes de React-Native. Utilisez l'outil upgrade-helper
sur Internet si nécessaire.
import DeviceInfo from 'react-native-device-info' ;
// or ES6+ destructured imports
import { getUniqueId , getManufacturer } from 'react-native-device-info' ;
Notez que de nombreuses API sont spécifiques à la plateforme. S'il n'y a pas d'implémentation pour une plate-forme, alors les valeurs de retour « par défaut » que vous recevrez sont "unknown"
pour la chaîne, -1
pour le nombre et false
pour le booléen. Les tableaux et les objets seront vides ( []
et {}
respectivement).
La plupart des API renvoient une promesse mais ont également une API correspondante avec Sync
à l'extrémité qui fonctionne de manière synchrone. Par exemple, vous préférerez peut-être appeler isCameraPresentSync()
lors du démarrage de votre application pour éviter les appels asynchrones pendant les premières parties du démarrage de l'application.
Remarque sur getUserAgentSync
Bien que la méthode asynchrone getUserAgent
soit disponible sur les deux plateformes, getUserAgentSync
n'est prise en charge que sur Android.
L'exemple d'application dans ce référentiel montre un exemple d'utilisation de chaque API, consultez l'exemple d'application si vous avez des questions, et si vous pensez voir un problème, assurez-vous de pouvoir le reproduire à l'aide de l'exemple d'application avant de le signaler, merci.
Méthode | Type de retour | IOS | Androïde | Fenêtres | Web | visionOS |
---|---|---|---|---|---|---|
obtenirAndroidId() | Promise | ✅ | ||||
getApiLevel() | Promise | ✅ | ||||
getApplicationName() | string | ✅ | ✅ | ✅ | ✅ | |
getAvailableLocationProviders() | Promise | ✅ | ✅ | ✅ | ||
getBaseOs() | Promise | ✅ | ✅ | ✅ | ||
getBuildId() | Promise | ✅ | ✅ | ✅ | ✅ | |
getBatteryLevel() | Promise | ✅ | ✅ | ✅ | ✅ | ✅ |
getBootloader() | Promise | ✅ | ||||
getBrand() | string | ✅ | ✅ | ✅ | ✅ | |
getBuildNumber() | string | ✅ | ✅ | ✅ | ✅ | |
getBundleId() | string | ✅ | ✅ | ✅ | ✅ | |
estCameraPresent() | Promise | ✅ | ✅ | ✅ | ||
getCarrier() | Promise | ✅ | ✅ | |||
getCodename() | Promise | ✅ | ||||
getDevice() | Promise | ✅ | ||||
getDeviceId() | string | ✅ | ✅ | ✅ | ✅ | |
getDeviceType() | string | ✅ | ✅ | ✅ | ||
getDisplay() | Promise | ✅ | ||||
getDeviceName() | Promise | ✅ | ✅ | ✅ | ✅ | |
getDeviceToken() | Promise | ✅ | ✅ | |||
getFirstInstallTime() | Promise | ✅ | ✅ | ✅ | ✅ | |
obtenir une empreinte digitale() | Promise | ✅ | ||||
getFontScale() | Promise | ✅ | ✅ | ✅ | ||
getFreeDiskStorage() | Promise | ✅ | ✅ | ✅ | ✅ | ✅ |
getFreeDiskStorageOld() | Promise | ✅ | ✅ | ✅ | ✅ | ✅ |
getMatériel() | Promise | ✅ | ||||
getHost() | Promise | ✅ | ✅ | |||
getHostNames() | Promise | ✅ | ||||
getIpAddress() | Promise | ✅ | ✅ | ✅ | ✅ | |
getIncremental() | Promise | ✅ | ||||
getInstallerPackageName() | Promise | ✅ | ✅ | ✅ | ✅ | |
getInstallReferrer() | Promise | ✅ | ✅ | ✅ | ||
getInstanceId() | Promise | ✅ | ||||
getLastUpdateTime() | Promise | ✅ | ||||
getMacAddress() | Promise | ✅ | ✅ | ✅ | ||
getFabricant() | Promise | ✅ | ✅ | ✅ | ✅ | |
getMaxMemory() | Promise | ✅ | ✅ | ✅ | ||
getModèle() | string | ✅ | ✅ | ✅ | ✅ | |
obtenirPowerState() | Promise | ✅ | ✅ | ✅ | ✅ | ✅ |
obtenirProduit() | Promise | ✅ | ||||
getPreviewSdkInt() | Promise | ✅ | ||||
getReadableVersion() | string | ✅ | ✅ | ✅ | ✅ | |
getSerialNumber() | Promise | ✅ | ✅ | |||
getSecurityPatch() | Promise | ✅ | ||||
getStartupTime() | Promise | ✅ | ✅ | ✅ | ||
getSystemAvailableFeatures() | Promise | ✅ | ||||
getNomSystème() | string | ✅ | ✅ | ✅ | ✅ | |
getSystemVersion() | string | ✅ | ✅ | ✅ | ✅ | |
obtenirTags() | Promise | ✅ | ||||
getType() | Promise | ✅ | ||||
getTotalDiskCapacity() | Promise | ✅ | ✅ | ✅ | ✅ | ✅ |
getTotalDiskCapacityOld() | Promise | ✅ | ✅ | ✅ | ✅ | ✅ |
getTotalMemory() | Promise | ✅ | ✅ | ✅ | ✅ | |
getUniqueId() | Promise | ✅ | ✅ | ✅ | ✅ | |
getUsedMemory() | Promise | ✅ | ✅ | ✅ | ✅ | ✅ |
getUserAgent() | Promise | ✅ | ✅ | ✅ | ✅ | |
getUserAgentSync() | string | ✅ | ✅ | |||
obtenirVersion() | string | ✅ | ✅ | ✅ | ✅ | |
getBrightness() | Promise | ✅ | ||||
aGms() | Promise | ✅ | ||||
hasHms() | Promise | ✅ | ||||
aNotch() | boolean | ✅ | ✅ | ✅ | ✅ | |
hasDynamicIsland() | boolean | ✅ | ✅ | ✅ | ✅ | |
hasSystemFeature() | Promise | ✅ | ||||
estAirplaneMode() | Promise | ✅ | ✅ | |||
estBatteryCharging() | Promise | ✅ | ✅ | ✅ | ✅ | ✅ |
estEmulator() | Promise | ✅ | ✅ | ✅ | ✅ | |
estClavierConnecté() | Promise | ✅ | ||||
estPaysage() | Promise | ✅ | ✅ | ✅ | ✅ | |
isLocationEnabled() | Promise | ✅ | ✅ | ✅ | ✅ | |
estMouseConnected() | Promise | ✅ | ||||
estHeadphonesConnected() | Promise | ✅ | ✅ | ✅ | ||
isWiredHeadphonesConnected() | Promise | ✅ | ✅ | ✅ | ||
estBluetoothHeadphonesConnected() | Promise | ✅ | ✅ | ✅ | ||
isPinOrFingerprintSet() | Promise | ✅ | ✅ | ✅ | ✅ | |
estTablette() | boolean | ✅ | ✅ | ✅ | ✅ | |
estLowRamDevice() | boolean | ✅ | ||||
isDisplayZoomed() | boolean | ✅ | ||||
estTabletMode() | Promise | ✅ | ||||
pris en charge32BitAbis() | Promise | ✅ | ||||
pris en charge64BitAbis() | Promise | ✅ | ||||
pris en chargeAbis() | Promise | ✅ | ✅ | ✅ | ✅ | |
syncUniqueId() | Promise | ✅ | ✅ | |||
getSupportedMediaTypeList() | Promise | ✅ |
Obtient le niveau de l'API.
DeviceInfo . getApiLevel ( ) . then ( ( apiLevel ) => {
// iOS: ?
// Android: 25
// Windows: ?
} ) ;
Voir les niveaux d'API
Obtient l'ANDROID_ID. Consultez la documentation de l'API pour une utilisation appropriée.
DeviceInfo . getAndroidId ( ) . then ( ( androidId ) => {
// androidId here
} ) ;
Obtient le nom de l'application.
let appName = DeviceInfo . getApplicationName ( ) ;
// AwesomeApp
La version de base du système d'exploitation sur laquelle le produit est basé.
DeviceInfo . getBaseOs ( ) . then ( ( baseOs ) => {
// "Windows", "Android" etc
} ) ;
Obtient le niveau de batterie de l'appareil sous forme de flotteur compris entre 0 et 1.
DeviceInfo . getBatteryLevel ( ) . then ( ( batteryLevel ) => {
// 0.759999
} ) ;
Pour pouvoir obtenir le niveau réel de la batterie, activez le mode de surveillance de la batterie pour l'application. Ajoutez ce code :
[UIDevice currentDevice ].batteryMonitoringEnabled = true ;
à l'application AppDelegate.m : didFinishLaunchingWithOptions :
Renvoie -1 sur le simulateur iOS
Le numéro de version du chargeur de démarrage du système.
DeviceInfo . getBootloader ( ) . then ( ( bootloader ) => {
// "mw8998-002.0069.00"
} ) ;
Obtient la marque de l’appareil.
let brand = DeviceInfo . getBrand ( ) ;
// iOS: "Apple"
// Android: "xiaomi"
// Windows: ?
Obtient le numéro de build de l’application.
let buildNumber = DeviceInfo . getBuildNumber ( ) ;
// iOS: "89"
// Android: "4"
// Windows: ?
Obtient l’identifiant du bundle d’applications.
let bundleId = DeviceInfo . getBundleId ( ) ;
// "com.example.AwesomeApp"
Indique si l'appareil dispose désormais d'une caméra.
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
} ) ;
- L'ajout/suppression à chaud de la caméra est pris en charge.
- Renvoie l'état de présence physique de la caméra. Si la caméra est présente mais que votre application n'est pas autorisée à l'utiliser, isCameraPresent renverra toujours le vrai
Obtient le nom de l'opérateur (opérateur réseau).
DeviceInfo . getCarrier ( ) . then ( ( carrier ) => {
// "SOFTBANK"
} ) ;
Le nom de code de développement actuel, ou la chaîne « REL » s'il s'agit d'une version release.
DeviceInfo . getCodename ( ) . then ( ( codename ) => {
// "REL"
} ) ;
Le nom du dessin industriel.
DeviceInfo . getDevice ( ) . then ( ( device ) => {
// "walleye"
} ) ;
Obtient l'ID de l'appareil.
let deviceId = DeviceInfo . getDeviceId ( ) ;
// iOS: "iPhone7,2"
// Android: "goldfish"
// Windows: "Y3R94UC#AC4"
Une chaîne d'ID de build destinée à être affichée à l'utilisateur.
DeviceInfo . getDisplay ( ) . then ( ( display ) => {
// "OPM2.171026.006.G1"
} ) ;
Obtient le nom du périphérique.
DeviceInfo . getDeviceName ( ) . then ( ( deviceName ) => {
// iOS: "Becca's iPhone 6"
// Android: ?
// Windows: ?
} ) ;
Auparavant, cela nécessitait android.permission.BLUETOOTH, mais la nouvelle implémentation dans la v3 n'en a pas besoin. Vous pouvez le supprimer de votre AndroidManifest.xml si vous l'aviez pour cette API. iOS 16 et versions ultérieures nécessitent des droits pour accéder au nom de l'appareil défini par l'utilisateur, sinon une valeur générique est renvoyée (par exemple, « iPad », « iPhone »).
Obtient le jeton de périphérique (voir DeviceCheck). Uniquement disponible pour iOS 11.0+ sur les appareils réels. Cela rejettera la promesse lorsque getDeviceToken n'est pas pris en charge, soyez prudent avec la gestion des exceptions.
DeviceInfo . getDeviceToken ( ) . then ( ( deviceToken ) => {
// iOS: "a2Jqsd0kanz..."
} ) ;
Obtient l'heure à laquelle l'application a été installée pour la première fois, en millisecondes.
DeviceInfo . getFirstInstallTime ( ) . then ( ( firstInstallTime ) => {
// Android: 1517681764528
} ) ;
Chaîne qui identifie de manière unique cette build.
DeviceInfo . getFingerprint ( ) . then ( ( fingerprint ) => {
// "google/walleye/walleye:8.1.0/OPM2.171026.006.G1/4820017:user/release-keys"
} ) ;
Obtient l’échelle de police du périphérique. L'échelle de police est le rapport entre la police système actuelle et la taille de police « normale », donc si le texte normal est de 10 pt et que la police système est actuellement de 15 pt, l'échelle de police serait de 1,5. Cela peut être utilisé pour déterminer si les paramètres d'accessibilité ont été modifié pour l'appareil ; vous souhaiterez peut-être réorganiser certaines vues si l'échelle de police est nettement plus grande (> 2,0).
DeviceInfo . getFontScale ( ) . then ( ( fontScale ) => {
// 1.2
} ) ;
Méthode qui obtient la taille de stockage disponible, en octets, en tenant compte du calcul des systèmes de fichiers racine et de données.
Sur iOS , cette méthode accepte les arguments facultatifs suivants :
'total'
: utilise volumeAvailableCapacityKey
'important'
: utilise volumeAvailableCapacityForImportantUsageKey
'opportunistic'
: utilise volumeAvailableCapacityForOpportunisticUsageKey
Pour plus de détails, reportez-vous à la documentation Apple sur la vérification de la capacité de stockage du volume.
DeviceInfo . getFreeDiskStorage ( ) . then ( ( freeDiskStorage ) => {
// Android: 17179869184
// iOS: 17179869184
} ) ;
DeviceInfo . getFreeDiskStorage ( 'important' ) . then ( ( freeDiskStorage ) => {
// iOS: 18198219342 (important storage)
} ) ;
L'API utilisée par cette méthode pour Android a été modifiée dans la version 6.0.0. L'ancienne version a été maintenue ci-dessous sous le nom getFreeDiskStorageOld()
. Sur iOS, getFreeDiskStorage()
et getFreeDiskStorageOld()
renvoient la même valeur.
Ancienne implémentation de la méthode qui obtient la taille de stockage disponible, en octets.
DeviceInfo . getFreeDiskStorageOld ( ) . then ( ( freeDiskStorage ) => {
// Android: 17179869184
// iOS: 17179869184
} ) ;
Depuis développeur.android.com :
Cette méthode est obsolète au niveau d'API 29.
Renvoie le répertoire de stockage principal partagé/externe.
Remarque : ne soyez pas dérouté par le mot « externe » ici. Ce répertoire peut mieux être considéré comme un support/stockage partagé. Il s'agit d'un système de fichiers pouvant contenir une quantité relativement importante de données et partagé entre toutes les applications (n'appliquant pas les autorisations). Il s'agit traditionnellement d'une carte SD, mais elle peut également être implémentée en tant que stockage intégré dans un périphérique distinct du stockage interne protégé et peut être montée en tant que système de fichiers sur un ordinateur.
Le nom du matériel (à partir de la ligne de commande du noyau ou /proc).
DeviceInfo . getHardware ( ) . then ( hardware => {
// "walleye"
} ) ;
Nom d'hôte
DeviceInfo . getHost ( ) . then ( ( host ) => {
// "wprd10.hot.corp.google.com"
} ) ;
Obsolète Obtient l’adresse IP actuelle de l’appareil. (du wifi uniquement) Basculez vers réagir-native-netinfo/netinfo ou réagir-native-network-info
DeviceInfo . getIpAddress ( ) . then ( ( ip ) => {
// "92.168.32.44"
} ) ;
La prise en charge d'iOS a été ajoutée dans la version 0.22.0
La valeur interne utilisée par le contrôle de code source sous-jacent pour représenter cette build.
DeviceInfo . getIncremental ( ) . then ( ( incremental ) => {
// "4820017"
} ) ;
La valeur interne utilisée par le contrôle de code source sous-jacent pour représenter cette build.
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"
} ) ;
Obtient la chaîne de référence lors de l'installation de l'application.
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"
} ) ;
Obtient l'ID de l'instance d'application.
Cela tente d'obtenir un ID d'instance à partir de ces sources, dans cet ordre :
instanceId
dans le fichier SharedPreferences react-native-device-info
firebaseBomVersion
ou firebaseIidVersion
est défini dans gradle ext - obsolète )googlePlayServicesIidVersion
ou googlePlayServicesVersion
est défini dans gradle ext - obsolète )Si vous utilisez les sources obsolètes, l'ID d'instance généré est stocké dans les préférences partagées afin qu'il soit stable pendant cette version majeure de réagissez-native-device-info.
Dans une future version de React-native-device-info, les implémentations Firebase IID et GMS IID seront supprimées, et toutes les valeurs futures seront la valeur (le cas échéant) stockée dans SharedPreferences, ou un nouvel UUID aléatoire qui sera ensuite stocké. et utilisé pour l'installation de cette application à l'avenir.
DeviceInfo . getInstanceId ( ) . then ( ( instanceId ) => {
// Android: da4e0245-5d6c-402a-a07c-0c5349f229e2
} ) ;
Voir https://developers.google.com/instance-id/
Obtient l'heure à laquelle l'application a été mise à jour pour la dernière fois, en millisecondes.
DeviceInfo . getLastUpdateTime ( ) . then ( ( lastUpdateTime ) => {
// Android: 1517681764992
} ) ;
Obtient l’adresse MAC de la carte réseau.
DeviceInfo . getMacAddress ( ) . then ( ( mac ) => {
// "E5:12:D8:E5:69:97"
} ) ;
iOS : Cette méthode renvoie toujours "02:00:00:00:00:00" car la récupération de l'adresse MAC est désactivée depuis iOS 7
Obtient le fabricant de l’appareil.
DeviceInfo . getManufacturer ( ) . then ( ( manufacturer ) => {
// iOS: "Apple"
// Android: "Google"
// Windows: ?
} ) ;
Renvoie la quantité maximale de mémoire que la VM tentera d'utiliser, en octets.
DeviceInfo . getMaxMemory ( ) . then ( ( maxMemory ) => {
// 402653183
} ) ;
Obtient le modèle de l'appareil.
Avertissement iOS : la liste des noms d'appareils est maintenue par la communauté et peut être en retard sur les nouveaux appareils. Il est recommandé d'utiliser getDeviceId()
car il est plus fiable et toujours à jour avec les nouveaux appareils iOS. Nous acceptons les demandes d'extraction qui ajoutent de nouveaux appareils iOS à la liste avec les noms d'appareils.
let model = DeviceInfo . getModel ( ) ;
// iOS: ?
// Android: ?
// Windows: ?
Le getPhoneNumber() a été supprimé. Cette méthode utilise des API Android obsolètes. Vous pouvez utiliser React-Native-Sim-Cards-Manager pour obtenir le numéro de téléphone.
Obtient l'état d'alimentation de l'appareil, y compris le niveau de la batterie, s'il est branché et si le système fonctionne actuellement en mode faible consommation. Affiche un avertissement sur iOS si la surveillance de la batterie n'est pas activée ou si elle est tentée sur un émulateur (où la surveillance n'est pas possible)
DeviceInfo . getPowerState ( ) . then ( ( state ) => {
// {
// batteryLevel: 0.759999,
// batteryState: 'unplugged',
// lowPowerMode: false,
// }
} ) ;
Le nom du produit global.
DeviceInfo . getProduct ( ) . then ( ( product ) => {
// "walleye"
} ) ;
Révision d'aperçu pour les développeurs d'un SDK préliminaire.
DeviceInfo . getPreviewSdkInt ( ) . then ( ( previewSdkInt ) => {
// 0
} ) ;
Obtient la version lisible de l'application (identique à getVersion() + '.' + getBuildNumber())
let readableVersion = DeviceInfo . getReadableVersion ( ) ;
// iOS: 1.0.1.32
// Android: 1.0.1.234
// Windows: ?
Obtient le numéro de série du périphérique. Sera « inconnu » dans presque tous les cas, sauf si vous disposez d'une application privilégiée et que vous savez ce que vous faites.
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")
} ) ;
Si vous souhaitez utiliser cette méthode sous Windows, vous devez ajouter la fonctionnalité smbios dans votre application. Veuillez suivre cette documentation pour ajouter la fonctionnalité dans votre fichier manifeste.
Le niveau de correctif de sécurité visible par l'utilisateur.
DeviceInfo . getSecurityPatch ( ) . then ( ( securityPatch ) => {
// "2018-07-05"
} ) ;
Obtient le nom du système d’exploitation du périphérique.
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: ?
Obtient l'heure à laquelle le processus d'application actuel a été démarré, en millisecondes.
DeviceInfo . getStartupTime ( ) . then ( ( startupTime ) => {
// Android: 1517681764528
// iOS: 1517681764528
} ) ;
Obtient la version du système d’exploitation de l’appareil.
let systemVersion = DeviceInfo . getSystemVersion ( ) ;
// iOS: "11.0"
// Android: "7.1.1"
// Windows: ?
Obtient le numéro de build du système d’exploitation.
DeviceInfo . getBuildId ( ) . then ( ( buildId ) => {
// iOS: "12A269"
// tvOS: not available
// Android: "13D15"
// Windows: not available
} ) ;
Balises séparées par des virgules décrivant la build.
DeviceInfo . getTags ( ) . then ( ( tags ) => {
// "release-keys, unsigned, debug",
} ) ;
Le type de construction.
DeviceInfo . getType ( ) . then ( ( type ) => {
// "user", "eng"
} ) ;
Méthode qui obtient la taille totale du stockage sur disque, en octets, en tenant compte du calcul des systèmes de fichiers racine et de données.
DeviceInfo . getTotalDiskCapacity ( ) . then ( ( capacity ) => {
// Android: 17179869184
// iOS: 17179869184
} ) ;
L'API utilisée par cette méthode pour Android a été modifiée dans la version 6.0.0. L'ancienne version a été conservée ci-dessous sous le nom getTotalDiskCapacityOld()
. Sur iOS, getTotalDiskCapacity()
et getTotalDiskCapacityOld()
renvoient la même valeur.
Ancienne implémentation de la méthode qui obtient la taille totale du stockage sur disque, en octets.
DeviceInfo . getTotalDiskCapacityOld ( ) . then ( ( capacity ) => {
// Android: 17179869184
// iOS: 17179869184
} ) ;
Obtient la mémoire totale de l'appareil, en octets.
DeviceInfo . getTotalMemory ( ) . then ( ( totalMemory ) => {
// 1995018240
} ) ;
Cet identifiant est considéré comme une information sensible dans certains magasins d'applications (par exemple Huawei ou Google Play) et peut entraîner la suppression ou le rejet de votre application si elle est utilisée sans le consentement de l'utilisateur ou à des fins non approuvées. Reportez-vous aux politiques du magasin pour plus d'informations (voir les notes ci-dessous).
Obtient l’ID unique de l’appareil. Sur Android, il est actuellement identique à getAndroidId()
dans ce module. Sur iOS, il utilise l'identifiant uid DeviceUID
. Sous Windows, il utilise Windows.Security.ExchangeActiveSyncProvisioning.EasClientDeviceInformation.id
.
DeviceInfo . getUniqueId ( ) . then ( ( uniqueId ) => {
// iOS: "FCDBD8EF-62FC-4ECB-B2F5-92C9E79AC7F9"
// Android: "dd96dec43fb81c97"
// Windows: "{2cf7cb3c-da7a-d508-0d7f-696bb51185b4}"
} ) ;
- iOS : il s'agit
IDFV
ou d'une chaîne aléatoire si IDFV n'est pas disponible. Une fois l'UID généré, il est stocké dans le trousseau iOS et NSUserDefaults. Cela restera donc le même même si vous supprimez l’application ou réinitialisez IDFV. Vous pouvez soigneusement le considérer comme un identifiant unique persistant. Il ne peut être modifié que si quelqu'un remplace manuellement les valeurs dans Trousseau/NSUserDefaults ou si Apple modifie les implémentations de Trousseau et NSUserDefaults. Attention : L'IDFV est calculé à l'aide de votre identifiant de bundle et sera donc différent dans les extensions d'application.- Android : avant Oreo, cet identifiant (ANDROID_ID) sera toujours le même une fois que vous aurez configuré votre téléphone.
- Android : politique de Google Play, voir « Identifiants d'appareil persistants ». Huawei - Les directives d'examen de l'AppGallery voient « Identifiant permanent de l'appareil » et « Obtention du consentement de l'utilisateur ».
Cette méthode est destinée à iOS.
Cela synchronise uniqueId avec IDFV
ou définit une nouvelle chaîne aléatoire.
Sur iOS, il utilise l'identifiant uid DeviceUID
. Sur d'autres plates-formes, il suffit d'appeler getUniqueId()
dans ce module.
DeviceInfo . syncUniqueId ( ) . then ( ( uniqueId ) => {
// iOS: "FCDBD8EF-62FC-4ECB-B2F5-92C9E79AC7F9"
// Android: "dd96dec43fb81c97"
// Windows: ?
} ) ;
- Si l'utilisateur a déplacé ou restauré des données d'un appareil iOS vers un deuxième appareil iOS, il aura alors deux appareils différents avec le même
uniqueId
dans Trousseau/NSUserDefaults. L'utilisateur peut appelersyncUniqueId()
sur un nouvel appareil iOS. Cela mettra à jour sonuniqueId
à partir d'IDFV
ou d'une chaîne aléatoire.
Obtient l'utilisation de la mémoire de l'application, en octets.
Remarque : cette méthode est uniquement destinée au débogage ou à la création d'une interface utilisateur de gestion de processus orientée utilisateur.
DeviceInfo . getUsedMemory ( ) . then ( ( usedMemory ) => {
// 23452345
} ) ;
Cette méthode obtient la liste des codecs multimédias pris en charge.
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"]
} ) ;
Obtient l’agent utilisateur du périphérique.
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: ?
} ) ;
Obtient la version de l'application. Tenez compte du fait qu'une chaîne de version est formatée sur l'appareil/le système d'exploitation et peut contenir des données supplémentaires (telles que le numéro de build, etc.). Si vous voulez être sûr du format de la version, vous pouvez utiliser une expression régulière pour obtenir la partie souhaitée de la chaîne de version renvoyée.
let version = DeviceInfo . getVersion ( ) ;
// iOS: "1.0"
// Android: "1.0" or "1.0.2-alpha.12"
// Windows: ?
Indique si l'appareil est en mode avion.
DeviceInfo . isAirplaneMode ( ) . then ( ( airplaneModeOn ) => {
// false
} ) ;
- Cela ne fonctionne que si le débogueur distant est désactivé.
Indique si la batterie est actuellement en charge.
DeviceInfo . isBatteryCharging ( ) . then ( ( isCharging ) => {
// true or false
} ) ;
Indique si l'application s'exécute dans un émulateur.
DeviceInfo . isEmulator ( ) . then ( ( isEmulator ) => {
// false
} ) ;
Indique si l'appareil a un clavier connecté.
let isKeyboardConnected = DeviceInfo . isKeyboardConnected ( ) ;
// true
Indique si un code PIN ou une empreinte digitale a été défini pour l'appareil.
DeviceInfo . isPinOrFingerprintSet ( ) . then ( ( isPinOrFingerprintSet ) => {
if ( ! isPinOrFingerprintSet ) {
// ...
}
} ) ;
Indique si l'appareil est une tablette.
let isTablet = DeviceInfo . isTablet ( ) ;
// true
Indique si l'appareil a peu de RAM.
let isLowRamDevice = DeviceInfo . isLowRamDevice ( ) ;
// true
Indique si l'utilisateur a modifié le zoom d'affichage en zoomé
let isDisplayZoomed = DeviceInfo . isDisplayZoomed ( ) ;
// true
Indique si l'appareil est en mode tablette.
let isTabletMode = DeviceInfo . isTabletMode ( ) ;
// true
Indique si l'appareil est actuellement en mode paysage.
DeviceInfo . isLandscape ( ) . then ( ( isLandscape ) => {
// true
} ) ;
Indique si l'appareil a une souris connectée.
let isMouseConnected = DeviceInfo . isMouseConnected ( ) ;
// true
Indique si l'appareil prend en charge les services mobiles Google.
DeviceInfo . hasGms ( ) . then ( ( hasGms ) => {
// true
} ) ;
Indique si l'appareil prend en charge les services mobiles Huawei.
DeviceInfo . hasHms ( ) . then ( ( hasHms ) => {
// true
} ) ;
Indique si l'appareil a une encoche.
let hasNotch = DeviceInfo . hasNotch ( ) ;
// true
Indique si l'appareil dispose d'un îlot dynamique.
let hasDynamicIsland = DeviceInfo . hasDynamicIsland ( ) ;
// true
Renvoie le type du périphérique sous forme de chaîne, qui sera l'une des suivantes :
Handset
Tablet
Tv
Desktop
GamingConsole
Headset
unknown
let type = DeviceInfo . getDeviceType ( ) ;
// 'Handset'
Une liste ordonnée des ABI 32 bits pris en charge par cet appareil.
DeviceInfo . supported32BitAbis ( ) . then ( ( abis ) => {
// ["armeabi-v7a", "armeabi"]
} ) ;
Une liste ordonnée des ABI 64 bits pris en charge par cet appareil.
DeviceInfo . supported64BitAbis ( ) . then ( ( abis ) => {
// ["arm64-v8a"]
} ) ;
Renvoie une liste des versions d'architecture de processeur prises en charge
DeviceInfo . supportedAbis ( ) . then ( ( abis ) => {
// [ "arm64 v8", "Intel x86-64h Haswell", "arm64-v8a", "armeabi-v7a", "armeabi", "win_x86", "win_arm", "win_x64" ]
} ) ;
Indique si l'appareil dispose d'une fonctionnalité système spécifique.
DeviceInfo . hasSystemFeature ( 'amazon.hardware.fire_tv' ) . then ( ( hasFeature ) => {
// true or false
} ) ;
Renvoie une liste des fonctionnalités système disponibles sur Android.
DeviceInfo . getSystemAvailableFeatures ( ) . then ( ( features ) => {
// ["android.software.backup", "android.hardware.screen.landscape", "android.hardware.wifi", ...]
} ) ;
Indique si les services de localisation sont désactivés au niveau de l'appareil (NON lié aux autorisations spécifiques à l'application)
DeviceInfo . isLocationEnabled ( ) . then ( ( enabled ) => {
// true or false
} ) ;
Indique si l'appareil est connecté à un casque filaire ou à un casque Bluetooth
DeviceInfo . isHeadphonesConnected ( ) . then ( ( enabled ) => {
// true or false
} ) ;
Indique si l'appareil est connecté à un casque filaire
DeviceInfo . isWiredHeadphonesConnected ( ) . then ( ( enabled ) => {
// true or false
} ) ;
Indique si l'appareil est connecté au casque Bluetooth
DeviceInfo . isBluetoothHeadphonesConnected ( ) . then ( ( enabled ) => {
// true or false
} ) ;
Renvoie un objet de fournisseurs/services de localisation spécifiques à la plate-forme , avec une valeur boolean
qu'ils soient actuellement disponibles ou non.
REMARQUE : Cette fonction nécessite l'accès à l'autorisation de localisation sur Android
DeviceInfo . getAvailableLocationProviders ( ) . then ( ( providers ) => {
// {
// gps: true
// network: true
// passive: true
// }
} ) ;
DeviceInfo . getAvailableLocationProviders ( ) . then ( ( providers ) => {
// {
// headingAvailable: false
// isRangingAvailable: false
// locationServicesEnabled: true
// significantLocationChangeMonitoringAvailable: true
// }
} ) ;
Obtient le niveau de luminosité actuel de l’écran principal de l’appareil. Actuellement iOS uniquement. Renvoie un nombre compris entre 0,0 et 1,0 inclus.
DeviceInfo . getBrightness ( ) . then ( ( brightness ) => {
// iOS: 0.6
} ) ;
Pris en charge sous Windows, iOS et Android (prise en charge Web des API liées à la batterie/à la charge).
Déclenché lorsque le niveau de la batterie change ; envoyé pas plus d’une fois par minute.
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
} ) ;
Déclenché lorsque le niveau de la batterie est considéré comme faible (plusieurs fois jusqu'à ce qu'il soit chargé)
Plate-forme | Pourcentage |
---|---|
IOS | 20 |
Androïde | 15 |
Web | 20 |
Fenêtres | 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
} ) ;
Déclenché lorsque l'état de la batterie change ou que l'appareil entre en mode d'économie d'énergie, par exemple lorsque l'appareil entre en mode de charge ou est débranché.
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,
// }
} ) ;
Obtient l'heure à laquelle l'application a été installée pour la première fois, en millisecondes.
import { useFirstInstallTime } from 'react-native-device-info' ;
const { loading , result } = useFirstInstallTime ( ) ; // { loading: true, result: 1517681764528}
< Text > { loading ? 'loading...' : result } < / Text > ;
Obtient le nom du périphérique.
import { useDeviceName } from 'react-native-device-info' ;
const { loading , result } = useDeviceName ( ) ; // { loading: true, result: "Becca's iPhone 6"}
< Text > { loading ? 'loading...' : result } < / Text > ;
Indique si l'appareil dispose d'une fonctionnalité système spécifique.
import { useHasSystemFeature } from 'react-native-device-info' ;
const { loading , result } = useHasSystemFeature ( 'amazon.hardware.fire_tv' ) ; // { loading: true, result: false }
< Text > { loading ? 'loading...' : result } < / Text > ;
Déterminez si l'application s'exécute dans un émulateur.
import { useIsEmulator } from 'react-native-device-info' ;
const { loading , result } = useIsEmulator ( ) ; // { loading: true, result: false }
< Text > { loading ? 'loading...' : result } < / Text > ;
Obtient le fabricant de l’appareil.
import { useManufacturer } from 'react-native-device-info' ;
const { loading , result } = useManufacturer ( ) ; // { loading: true, result: "Apple"}
< Text > { loading ? 'loading...' : result } < / Text > ;
Indique si l'appareil est connecté à un casque filaire ou à un casque Bluetooth.
Ce hook s'abonne à l'événement RNDeviceInfo_headphoneConnectionDidChange
et met à jour le champ result
en conséquence.
import { useIsHeadphonesConnected } from 'react-native-device-info' ;
const { loading , result } = useIsHeadphonesConnected ( ) ; // { loading: true, result: false}
< Text > { loading ? 'loading...' : result } < / Text > ;
Indique si l'appareil est connecté à un casque filaire.
Ce hook s'abonne à l'événement, RNDeviceInfo_headphoneWiredConnectionDidChange
, et met à jour le champ result
en conséquence.
import { useIsWiredHeadphonesConnected } from 'react-native-device-info' ;
const { loading , result } = useIsWiredHeadphonesConnected ( ) ; // { loading: true, result: false}
< Text > { loading ? 'loading...' : result } < / Text > ;
Indique si l'appareil est connecté à des écouteurs Bluetooth.
Ce hook s'abonne à l'événement, RNDeviceInfo_headphoneBluetoothConnectionDidChange
, et met à jour le champ result
en conséquence.
import { useIsBluetoothHeadphonesConnected } from 'react-native-device-info' ;
const { loading , result } = useIsBluetoothHeadphonesConnected ( ) ; // { loading: true, result: false}
< Text > { loading ? 'loading...' : result } < / Text > ;
Obtient le niveau de luminosité actuel de l’écran principal de l’appareil. Actuellement iOS uniquement. Renvoie un nombre compris entre 0,0 et 1,0 inclus.
Ce hook s'abonne à l'événement RNDeviceInfo_brightnessDidChange
et met à jour le champ brightness
en conséquence.
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
} ) ;
=======
Si vous devez vérifier le type de périphérique du côté natif, vous pouvez utiliser ce qui suit :
import com . learnium . resolver . DeviceTypeResolver
...
deviceTypeResolver = new DeviceTypeResolver ( context );
...
//Check if the device is a Tablet:
if ( deviceTypeResolver . isTablet ){
...
} else {
...
}
Lors de l'installation ou de l'utilisation react-native-device-info
, vous pouvez rencontrer les problèmes suivants :
react-native-device-info
utilise com.google.android.gms:play-services-gcm
pour fournir getInstanceId(). Cela peut entraîner des conflits lors de la création de l'application Android.
Si vous utilisez une version différente de com.google.android.gms:play-services-gcm
dans votre application, vous pouvez définir la variable gradle googlePlayServicesVersion
dans votre fichier build.gradle
pour indiquer react-native-device-info
quelle version cela devrait exiger. Voir l'exemple de projet inclus ici pour un échantillon.
Si vous utilisez une autre bibliothèque qui entre en conflit avec com.google.android.gms:play-services-gcm
et que vous êtes certain de savoir ce que vous faites afin d'éviter les conflits de version, vous pouvez simplement ignorer cette dépendance dans votre fichier gradué :
compile(project( ' :react-native-device-info ' )) {
exclude group : ' com.google.android.gms '
}
Il semble que ce soit un bug causé par react-native link
. Vous pouvez supprimer manuellement libRNDeviceInfo-tvOS.a
dans Xcode -> [Your iOS build target] -> Build Phrases -> Link Binary with Libraries
.
Il s'agit d'un journal au niveau du système qui peut être désactivé en exécutant : xcrun simctl spawn booted log config --mode "level:off" --subsystem com.apple.CoreTelephony
. Pour annuler la commande, vous pouvez exécuter : 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
contient du code natif et doit être moqué. La prise en charge de Jest Snapshot peut cependant fonctionner.
Si vous n'avez pas configuré de fichier d'installation Jest, vous devez ajouter les éléments suivants à vos paramètres Jest et créer le fichier jest.setup.js à la racine du projet :
setupFiles: [ '/jest.setup.js' ] ;
Vous devez ensuite ajouter ce qui suit à votre fichier d'installation Jest pour simuler le module natif DeviceInfo :
import mockRNDeviceInfo from 'react-native-device-info/jest/react-native-device-info-mock' ;
jest . mock ( 'react-native-device-info' , ( ) => mockRNDeviceInfo ) ;
Consultez l’exemple de projet pour plus d’informations.
Certaines API (comme getBatteryState) émettent des avertissements dans certaines conditions, comme sur tvOS ou l'émulateur iOS. Cela ne sera pas visible en production mais même en développement cela peut être irritant. Il est utile d'avoir les avertissements car ces appareils ne renvoient aucun état, ce qui peut être surprenant, entraînant des problèmes de support de github. Les avertissements sont destinés à vous former en tant que développeur. Si les avertissements vous gênent, vous pouvez essayer ceci dans votre code pour les supprimer :
import { LogBox } from 'react-native' ;
LogBox . ignoreLogs ( [ 'Battery state' ] ) ;
Voir le CHANGELOG.md.
Veuillez consulter le contributing guide
.
Par courtoisie envers les développeurs, cette bibliothèque a été rendue compatible dans la v0.21.6 avec React-native-dom et React-native-web en fournissant un polyfill vide afin d'éviter de casser les builds.
Seul getUserAgent() renverra une valeur correcte. Toutes les autres méthodes API renverront une valeur « vide » de son type de retour documenté : 0
pour les nombres, ''
pour les chaînes, false
pour les booléens.