Información del dispositivo para React Native.
Su iOS Podfile deberá pasar a un mínimo de iOS 10. La v7 de este módulo ya no es compatible con iOS9.
Usando npm:
npm install --save react-native-device-info
o usando hilo:
yarn add react-native-device-info
Si desea utilizar el seguimiento de Install Referrer, deberá agregar esta configuración a su configuración de Proguard
-keep class com.android.installreferrer.api.** {
*;
}
Si tiene problemas con hasGms() en sus aplicaciones de lanzamiento, agregue la siguiente regla a su configuración de Proguard
-keep class com.google.android.gms.common.** {*;}
Este módulo está predeterminado en AndroidX. Debes configurar las versiones de tu biblioteca de manera similar a esta en el bloque "ext" de tu archivo 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 no necesita AndroidX, deberá utilizar el paquete jetifier en modo inverso, la documentación está disponible con ese paquete.
La vinculación en módulos nativos es una fuente frecuente de problemas para los nuevos desarrolladores nativos de reacción, lo que genera errores como "RNDeviceInfo es nulo", etc. Por esta razón, se implementó la vinculación automática y debe usarse en su proyecto.
La vinculación automática es compatible con todas las plataformas (¡incluso ventanas en React nativo >= 0.63!)
Las versiones anteriores deben realizar enlaces manuales. No se ofrece soporte para estas versiones nativas de reacción anteriores, pero puede consultar versiones anteriores de este README si lo desea. Actualice a versiones modernas de reaccionar-nativo. Utilice la herramienta upgrade-helper
en Internet si es necesario.
import DeviceInfo from 'react-native-device-info' ;
// or ES6+ destructured imports
import { getUniqueId , getManufacturer } from 'react-native-device-info' ;
Tenga en cuenta que muchas API son específicas de la plataforma. Si no hay una implementación para una plataforma, entonces los valores de retorno "predeterminados" que recibirá son "unknown"
para cadena, -1
para número y false
para booleano. Las matrices y los objetos estarán vacíos ( []
y {}
respectivamente).
La mayoría de las API devuelven una Promesa pero también tienen una API correspondiente con Sync
al final que funciona de forma sincrónica. Por ejemplo, es posible que prefieras llamar isCameraPresentSync()
durante el arranque de tu aplicación para evitar llamadas asíncronas durante las primeras partes del inicio de la aplicación.
Nota sobre getUserAgentSync
Si bien el método asincrónico getUserAgent
está disponible en ambas plataformas, getUserAgentSync
solo es compatible con Android.
La aplicación de ejemplo en este repositorio muestra un ejemplo de uso de cada API, consulte la aplicación de ejemplo si tiene preguntas y, si cree que ve un problema, asegúrese de poder reproducirlo usando la aplicación de ejemplo antes de informarlo, gracias.
Método | Tipo de devolución | iOS | Androide | ventanas | Web | visiónOS |
---|---|---|---|---|---|---|
obtenerID de Android() | Promise | ✅ | ||||
obtenerApiLevel() | Promise | ✅ | ||||
obtenerNombreAplicación() | string | ✅ | ✅ | ✅ | ✅ | |
getAvailableLocationProviders() | Promise | ✅ | ✅ | ✅ | ||
obtenerBaseOs() | Promise | ✅ | ✅ | ✅ | ||
obtenerId. de compilación() | Promise | ✅ | ✅ | ✅ | ✅ | |
obtener nivel de batería() | Promise | ✅ | ✅ | ✅ | ✅ | ✅ |
obtener cargador de arranque() | Promise | ✅ | ||||
obtenerMarca() | string | ✅ | ✅ | ✅ | ✅ | |
obtenerNúmero de compilación() | string | ✅ | ✅ | ✅ | ✅ | |
obtenerIdPaquete() | string | ✅ | ✅ | ✅ | ✅ | |
esCameraPresent() | Promise | ✅ | ✅ | ✅ | ||
obtener transportista() | Promise | ✅ | ✅ | |||
getCodename() | Promise | ✅ | ||||
obtener dispositivo() | Promise | ✅ | ||||
obtenerIdDeDispositivo() | string | ✅ | ✅ | ✅ | ✅ | |
obtener tipo de dispositivo() | string | ✅ | ✅ | ✅ | ||
obtener pantalla() | Promise | ✅ | ||||
getNombreDeDispositivo() | Promise | ✅ | ✅ | ✅ | ✅ | |
obtenerTokenDeDispositivo() | Promise | ✅ | ✅ | |||
getFirstInstallTime() | Promise | ✅ | ✅ | ✅ | ✅ | |
obtener huella digital() | Promise | ✅ | ||||
obtenerEscalaDeFuente() | Promise | ✅ | ✅ | ✅ | ||
obtener almacenamiento en disco gratuito() | Promise | ✅ | ✅ | ✅ | ✅ | ✅ |
getFreeDiskStorageOld() | Promise | ✅ | ✅ | ✅ | ✅ | ✅ |
obtenerHardware() | Promise | ✅ | ||||
obtenerHost() | Promise | ✅ | ✅ | |||
obtener nombres de host() | Promise | ✅ | ||||
obtener dirección IP() | Promise | ✅ | ✅ | ✅ | ✅ | |
obtenerIncremental() | Promise | ✅ | ||||
getInstallerPackageName() | Promise | ✅ | ✅ | ✅ | ✅ | |
getInstallReferrer() | Promise | ✅ | ✅ | ✅ | ||
getInstanciaId() | Promise | ✅ | ||||
getLastUpdateTime() | Promise | ✅ | ||||
obtenerDirecciónMac() | Promise | ✅ | ✅ | ✅ | ||
obtenerfabricante() | Promise | ✅ | ✅ | ✅ | ✅ | |
obtenerMemoriaMax() | Promise | ✅ | ✅ | ✅ | ||
obtenerModelo() | string | ✅ | ✅ | ✅ | ✅ | |
obtener estado de potencia() | Promise | ✅ | ✅ | ✅ | ✅ | ✅ |
obtenerProducto() | Promise | ✅ | ||||
obtenerPreviewSdkInt() | Promise | ✅ | ||||
getReadableVersion() | string | ✅ | ✅ | ✅ | ✅ | |
obtener número de serie() | Promise | ✅ | ✅ | |||
obtener parche de seguridad() | Promise | ✅ | ||||
obtenerTiempodeInicio() | Promise | ✅ | ✅ | ✅ | ||
getSystemAvailableFeatures() | Promise | ✅ | ||||
obtenerNombredelSistema() | string | ✅ | ✅ | ✅ | ✅ | |
getSystemVersion() | string | ✅ | ✅ | ✅ | ✅ | |
obtener etiquetas() | Promise | ✅ | ||||
obtener tipo() | Promise | ✅ | ||||
obtener capacidad de disco total() | Promise | ✅ | ✅ | ✅ | ✅ | ✅ |
getTotalDiskCapacityOld() | Promise | ✅ | ✅ | ✅ | ✅ | ✅ |
obtenerMemoriaTotal() | Promise | ✅ | ✅ | ✅ | ✅ | |
obtenerIdÚnico() | Promise | ✅ | ✅ | ✅ | ✅ | |
obtener memoria usada() | Promise | ✅ | ✅ | ✅ | ✅ | ✅ |
getUserAgent() | Promise | ✅ | ✅ | ✅ | ✅ | |
getUserAgentSync() | string | ✅ | ✅ | |||
obtenerVersión() | string | ✅ | ✅ | ✅ | ✅ | |
obtenerBrillo() | Promise | ✅ | ||||
tieneGms() | Promise | ✅ | ||||
tieneHms() | Promise | ✅ | ||||
tiene muesca() | boolean | ✅ | ✅ | ✅ | ✅ | |
tieneIslaDinámica() | boolean | ✅ | ✅ | ✅ | ✅ | |
tiene característica del sistema () | Promise | ✅ | ||||
esModoAvión() | Promise | ✅ | ✅ | |||
está cargando la batería () | Promise | ✅ | ✅ | ✅ | ✅ | ✅ |
esEmulador() | Promise | ✅ | ✅ | ✅ | ✅ | |
isKeyboardConnected() | Promise | ✅ | ||||
esPaisaje() | Promise | ✅ | ✅ | ✅ | ✅ | |
estáUbicaciónEnabled() | Promise | ✅ | ✅ | ✅ | ✅ | |
estáRatónConectado() | Promise | ✅ | ||||
estáAuricularesConectados() | Promise | ✅ | ✅ | ✅ | ||
isWiredHeadphonesConnected() | Promise | ✅ | ✅ | ✅ | ||
isBluetoothHeadphonesConnected() | Promise | ✅ | ✅ | ✅ | ||
esPinOrFingerprintSet() | Promise | ✅ | ✅ | ✅ | ✅ | |
esTableta() | boolean | ✅ | ✅ | ✅ | ✅ | |
esLowRamDevice() | boolean | ✅ | ||||
esDisplayZoomed() | boolean | ✅ | ||||
esModoTableta() | Promise | ✅ | ||||
soportado32BitAbis() | Promise | ✅ | ||||
compatible64BitAbis() | Promise | ✅ | ||||
apoyadoAbis() | Promise | ✅ | ✅ | ✅ | ✅ | |
sincronizaciónUniqueId() | Promise | ✅ | ✅ | |||
getSupportedMediaTypeList() | Promise | ✅ |
Obtiene el nivel de API.
DeviceInfo . getApiLevel ( ) . then ( ( apiLevel ) => {
// iOS: ?
// Android: 25
// Windows: ?
} ) ;
Ver niveles API
Obtiene ANDROID_ID. Consulte la documentación de la API para conocer el uso adecuado.
DeviceInfo . getAndroidId ( ) . then ( ( androidId ) => {
// androidId here
} ) ;
Obtiene el nombre de la aplicación.
let appName = DeviceInfo . getApplicationName ( ) ;
// AwesomeApp
La compilación del sistema operativo base en la que se basa el producto.
DeviceInfo . getBaseOs ( ) . then ( ( baseOs ) => {
// "Windows", "Android" etc
} ) ;
Obtiene el nivel de batería del dispositivo como un flotador comprendido entre 0 y 1.
DeviceInfo . getBatteryLevel ( ) . then ( ( batteryLevel ) => {
// 0.759999
} ) ;
Para poder obtener el nivel real de la batería, habilite el modo de monitoreo de la batería para la aplicación. Añade este código:
[UIDevice currentDevice ].batteryMonitoringEnabled = true ;
a la aplicación AppDelegate.m: didFinishLaunchingWithOptions:
Devuelve -1 en el simulador de iOS
El número de versión del gestor de arranque del sistema.
DeviceInfo . getBootloader ( ) . then ( ( bootloader ) => {
// "mw8998-002.0069.00"
} ) ;
Obtiene la marca del dispositivo.
let brand = DeviceInfo . getBrand ( ) ;
// iOS: "Apple"
// Android: "xiaomi"
// Windows: ?
Obtiene el número de compilación de la aplicación.
let buildNumber = DeviceInfo . getBuildNumber ( ) ;
// iOS: "89"
// Android: "4"
// Windows: ?
Obtiene el identificador del paquete de aplicaciones.
let bundleId = DeviceInfo . getBundleId ( ) ;
// "com.example.AwesomeApp"
Indica si el dispositivo tiene alguna cámara ahora.
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
} ) ;
- Se admite la adición/eliminación de cámara en caliente.
- Devuelve el estado de la presencia física de la cámara. Si la cámara está presente pero su aplicación no tiene permisos para usarla, isCameraPresent aún devolverá el valor verdadero.
Obtiene el nombre del operador (operador de red).
DeviceInfo . getCarrier ( ) . then ( ( carrier ) => {
// "SOFTBANK"
} ) ;
El nombre en clave de desarrollo actual, o la cadena "REL" si se trata de una versión de lanzamiento.
DeviceInfo . getCodename ( ) . then ( ( codename ) => {
// "REL"
} ) ;
El nombre del diseño industrial.
DeviceInfo . getDevice ( ) . then ( ( device ) => {
// "walleye"
} ) ;
Obtiene el ID del dispositivo.
let deviceId = DeviceInfo . getDeviceId ( ) ;
// iOS: "iPhone7,2"
// Android: "goldfish"
// Windows: "Y3R94UC#AC4"
Una cadena de ID de compilación destinada a mostrarse al usuario.
DeviceInfo . getDisplay ( ) . then ( ( display ) => {
// "OPM2.171026.006.G1"
} ) ;
Obtiene el nombre del dispositivo.
DeviceInfo . getDeviceName ( ) . then ( ( deviceName ) => {
// iOS: "Becca's iPhone 6"
// Android: ?
// Windows: ?
} ) ;
Esto solía requerir android.permission.BLUETOOTH pero la nueva implementación en v3 no lo necesita. Puede eliminarlo de su AndroidManifest.xml si lo tenía para esta API. iOS 16 y versiones posteriores requieren derechos para acceder al nombre del dispositivo definido por el usuario; de lo contrario, se devuelve un valor genérico (es decir, 'iPad', 'iPhone')
Obtiene el token del dispositivo (consulte DeviceCheck). Solo disponible para iOS 11.0+ en dispositivos reales. Esto rechazará la promesa cuando getDeviceToken no sea compatible; tenga cuidado con el manejo de excepciones.
DeviceInfo . getDeviceToken ( ) . then ( ( deviceToken ) => {
// iOS: "a2Jqsd0kanz..."
} ) ;
Obtiene la hora a la que se instaló la aplicación por primera vez, en milisegundos.
DeviceInfo . getFirstInstallTime ( ) . then ( ( firstInstallTime ) => {
// Android: 1517681764528
} ) ;
Una cadena que identifica de forma única esta compilación.
DeviceInfo . getFingerprint ( ) . then ( ( fingerprint ) => {
// "google/walleye/walleye:8.1.0/OPM2.171026.006.G1/4820017:user/release-keys"
} ) ;
Obtiene la escala de fuente del dispositivo. La escala de fuente es la relación entre la fuente actual del sistema y el tamaño de fuente "normal", por lo que si el texto normal es de 10 puntos y la fuente del sistema actualmente es de 15 puntos, la escala de fuente sería 1,5. Esto se puede usar para determinar si se han modificado las configuraciones de accesibilidad. cambiado para el dispositivo; es posible que desee volver a diseñar ciertas vistas si la escala de fuente es significativamente mayor (> 2.0)
DeviceInfo . getFontScale ( ) . then ( ( fontScale ) => {
// 1.2
} ) ;
Método que obtiene el tamaño de almacenamiento disponible, en bytes, teniendo en cuenta el cálculo de los sistemas de archivos de datos y raíz.
En iOS , este método acepta los siguientes argumentos opcionales:
'total'
: utiliza volumeAvailableCapacityKey
'important'
: utiliza volumeAvailableCapacityForImportantUsageKey
'opportunistic'
: utiliza volumeAvailableCapacityForOpportunisticUsageKey
Para obtener más detalles, consulte la documentación de Apple sobre cómo verificar la capacidad de almacenamiento del volumen.
DeviceInfo . getFreeDiskStorage ( ) . then ( ( freeDiskStorage ) => {
// Android: 17179869184
// iOS: 17179869184
} ) ;
DeviceInfo . getFreeDiskStorage ( 'important' ) . then ( ( freeDiskStorage ) => {
// iOS: 18198219342 (important storage)
} ) ;
La API utilizada por este método para Android se cambió en la versión 6.0.0. La versión anterior se mantiene a continuación como getFreeDiskStorageOld()
. En iOS, getFreeDiskStorage()
y getFreeDiskStorageOld()
devuelven el mismo valor.
Implementación anterior del método que obtiene el tamaño de almacenamiento disponible, en bytes.
DeviceInfo . getFreeDiskStorageOld ( ) . then ( ( freeDiskStorage ) => {
// Android: 17179869184
// iOS: 17179869184
} ) ;
De desarrollador.android.com:
Este método quedó obsoleto en el nivel 29 de API.
Devuelve el directorio principal de almacenamiento compartido/externo.
Nota: no se deje confundir por la palabra "externo" aquí. Este directorio se puede considerar mejor como medio/almacenamiento compartido. Es un sistema de archivos que puede contener una cantidad relativamente grande de datos y que se comparte entre todas las aplicaciones (no exige permisos). Tradicionalmente se trata de una tarjeta SD, pero también se puede implementar como almacenamiento integrado en un dispositivo distinto del almacenamiento interno protegido y se puede montar como un sistema de archivos en una computadora.
El nombre del hardware (de la línea de comando del kernel o /proc).
DeviceInfo . getHardware ( ) . then ( hardware => {
// "walleye"
} ) ;
Nombre de host
DeviceInfo . getHost ( ) . then ( ( host ) => {
// "wprd10.hot.corp.google.com"
} ) ;
Obsoleto Obtiene la dirección IP actual del dispositivo. (solo de wifi) Cambie a reaccionar-native-netinfo/netinfo o reaccionar-native-network-info
DeviceInfo . getIpAddress ( ) . then ( ( ip ) => {
// "92.168.32.44"
} ) ;
Se agregó soporte para iOS en 0.22.0
El valor interno utilizado por el control de código fuente subyacente para representar esta compilación.
DeviceInfo . getIncremental ( ) . then ( ( incremental ) => {
// "4820017"
} ) ;
El valor interno utilizado por el control de código fuente subyacente para representar esta compilación.
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"
} ) ;
Obtiene la cadena de referencia tras la instalación de la aplicación.
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"
} ) ;
Obtiene el identificador de instancia de la aplicación.
Esto intenta obtener un ID de instancia de estas fuentes, en este orden:
instanceId
clave en el archivo SharedPreferences react-native-device-info
firebaseBomVersion
o firebaseIidVersion
están definidos en gradle ext - obsoleto )googlePlayServicesIidVersion
o googlePlayServicesVersion
está definido en gradle ext - en desuso )Si está utilizando fuentes obsoletas, el ID de instancia generado se almacena en las preferencias compartidas, por lo que será estable durante esta versión principal de react-native-device-info.
En una versión futura de react-native-device-info, se eliminarán las implementaciones de Firebase IID y GMS IID, y todos los valores futuros serán el valor (si lo hay) almacenado en SharedPreferences, o un nuevo UUID aleatorio que luego se almacenará. y se utilizará para la instalación de esa aplicación en el futuro.
DeviceInfo . getInstanceId ( ) . then ( ( instanceId ) => {
// Android: da4e0245-5d6c-402a-a07c-0c5349f229e2
} ) ;
Consulte https://developers.google.com/instance-id/
Obtiene la hora a la que se actualizó la aplicación por última vez, en milisegundos.
DeviceInfo . getLastUpdateTime ( ) . then ( ( lastUpdateTime ) => {
// Android: 1517681764992
} ) ;
Obtiene la dirección MAC del adaptador de red.
DeviceInfo . getMacAddress ( ) . then ( ( mac ) => {
// "E5:12:D8:E5:69:97"
} ) ;
iOS: este método siempre devuelve "02:00:00:00:00:00" ya que la recuperación de la dirección MAC está deshabilitada desde iOS 7
Obtiene el fabricante del dispositivo.
DeviceInfo . getManufacturer ( ) . then ( ( manufacturer ) => {
// iOS: "Apple"
// Android: "Google"
// Windows: ?
} ) ;
Devuelve la cantidad máxima de memoria que la VM intentará utilizar, en bytes.
DeviceInfo . getMaxMemory ( ) . then ( ( maxMemory ) => {
// 402653183
} ) ;
Obtiene el modelo del dispositivo.
Advertencia de iOS: la comunidad mantiene la lista con los nombres de los dispositivos y podría retrasar los nuevos dispositivos. Se recomienda utilizar getDeviceId()
ya que es más confiable y siempre está actualizado con los nuevos dispositivos iOS. Aceptamos solicitudes de extracción que agregan nuevos dispositivos iOS a la lista con nombres de dispositivos.
let model = DeviceInfo . getModel ( ) ;
// iOS: ?
// Android: ?
// Windows: ?
Se ha eliminado getPhoneNumber(). Este método utiliza API de Android obsoletas. Puede utilizar reaccionar-nativo-sim-cards-manager para obtener el número de teléfono.
Obtiene el estado de energía del dispositivo, incluido el nivel de la batería, si está enchufado y si el sistema está funcionando actualmente en modo de bajo consumo. Muestra una advertencia en iOS si el monitoreo de la batería no está habilitado o si se intenta en un emulador (donde el monitoreo no es posible)
DeviceInfo . getPowerState ( ) . then ( ( state ) => {
// {
// batteryLevel: 0.759999,
// batteryState: 'unplugged',
// lowPowerMode: false,
// }
} ) ;
El nombre del producto general.
DeviceInfo . getProduct ( ) . then ( ( product ) => {
// "walleye"
} ) ;
La revisión preliminar para desarrolladores de un SDK preliminar.
DeviceInfo . getPreviewSdkInt ( ) . then ( ( previewSdkInt ) => {
// 0
} ) ;
Obtiene la versión legible por humanos de la aplicación (igual que getVersion() + '.' + getBuildNumber())
let readableVersion = DeviceInfo . getReadableVersion ( ) ;
// iOS: 1.0.1.32
// Android: 1.0.1.234
// Windows: ?
Obtiene el número de serie del dispositivo. Será "desconocido" en casi todos los casos, a menos que tengas una aplicación privilegiada y sepas lo que estás haciendo.
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 desea utilizar este método en Windows, debe agregar la capacidad smbios en su aplicación. Siga esta documentación para agregar la capacidad en su archivo de manifiesto.
El nivel de parche de seguridad visible para el usuario.
DeviceInfo . getSecurityPatch ( ) . then ( ( securityPatch ) => {
// "2018-07-05"
} ) ;
Obtiene el nombre del sistema operativo del dispositivo.
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: ?
Obtiene la hora a la que se inició el proceso de la aplicación actual, en milisegundos.
DeviceInfo . getStartupTime ( ) . then ( ( startupTime ) => {
// Android: 1517681764528
// iOS: 1517681764528
} ) ;
Obtiene la versión del sistema operativo del dispositivo.
let systemVersion = DeviceInfo . getSystemVersion ( ) ;
// iOS: "11.0"
// Android: "7.1.1"
// Windows: ?
Obtiene el número de compilación del sistema operativo.
DeviceInfo . getBuildId ( ) . then ( ( buildId ) => {
// iOS: "12A269"
// tvOS: not available
// Android: "13D15"
// Windows: not available
} ) ;
Etiquetas separadas por comas que describen la compilación.
DeviceInfo . getTags ( ) . then ( ( tags ) => {
// "release-keys, unsigned, debug",
} ) ;
El tipo de construcción.
DeviceInfo . getType ( ) . then ( ( type ) => {
// "user", "eng"
} ) ;
Método que obtiene el tamaño total de almacenamiento en disco, en bytes, teniendo en cuenta el cálculo de los sistemas de archivos de datos y raíz.
DeviceInfo . getTotalDiskCapacity ( ) . then ( ( capacity ) => {
// Android: 17179869184
// iOS: 17179869184
} ) ;
La API utilizada por este método para Android se cambió en la versión 6.0.0. La versión anterior se mantiene a continuación como getTotalDiskCapacityOld()
. En iOS, getTotalDiskCapacity()
y getTotalDiskCapacityOld()
devuelven el mismo valor.
Implementación anterior del método que obtiene el tamaño total de almacenamiento en disco, en bytes.
DeviceInfo . getTotalDiskCapacityOld ( ) . then ( ( capacity ) => {
// Android: 17179869184
// iOS: 17179869184
} ) ;
Obtiene la memoria total del dispositivo, en bytes.
DeviceInfo . getTotalMemory ( ) . then ( ( totalMemory ) => {
// 1995018240
} ) ;
Este identificador se considera información confidencial en algunas tiendas de aplicaciones (por ejemplo, Huawei o Google Play) y puede provocar que su aplicación sea eliminada o rechazada, si se utiliza sin el consentimiento del usuario o para fines no aprobados. Consulte las políticas de la tienda para obtener más información (consulte las notas a continuación).
Obtiene el ID único del dispositivo. En Android actualmente es idéntico a getAndroidId()
en este módulo. En iOS utiliza el identificador uid DeviceUID
. En Windows utiliza Windows.Security.ExchangeActiveSyncProvisioning.EasClientDeviceInformation.id
.
DeviceInfo . getUniqueId ( ) . then ( ( uniqueId ) => {
// iOS: "FCDBD8EF-62FC-4ECB-B2F5-92C9E79AC7F9"
// Android: "dd96dec43fb81c97"
// Windows: "{2cf7cb3c-da7a-d508-0d7f-696bb51185b4}"
} ) ;
- iOS: esto es
IDFV
o una cadena aleatoria si IDFV no está disponible. Una vez que se genera el UID, se almacena en iOS Keychain y NSUserDefaults. Por lo tanto, permanecerá igual incluso si elimina la aplicación o restablece IDFV. Puede considerarlo cuidadosamente como una identificación única persistente. Se puede cambiar solo en caso de que alguien anule manualmente los valores en Keychain/NSUserDefaults o si Apple cambiara las implementaciones de Keychain y NSUserDefaults. Cuidado: el IDFV se calcula utilizando su identificador de paquete y, por lo tanto, será diferente en las extensiones de la aplicación.- Android: antes de Oreo, esta identificación (ANDROID_ID) siempre será la misma una vez que configures tu teléfono.
- android: política de Google Play, consulte "identificadores de dispositivos persistentes". Huawei - Pautas de revisión de AppGallery, consulte "identificador de dispositivo permanente" y "obtención del consentimiento del usuario".
Este método está destinado a iOS.
Esto sincroniza el ID único con IDFV
o establece una nueva cadena aleatoria.
En iOS utiliza el identificador uid DeviceUID
. En otras plataformas simplemente llama getUniqueId()
en este módulo.
DeviceInfo . syncUniqueId ( ) . then ( ( uniqueId ) => {
// iOS: "FCDBD8EF-62FC-4ECB-B2F5-92C9E79AC7F9"
// Android: "dd96dec43fb81c97"
// Windows: ?
} ) ;
- Si el usuario movió o restauró datos de un dispositivo iOS a un segundo dispositivo iOS, tendrá dos dispositivos diferentes con el mismo
uniqueId
en Keychain/NSUserDefaults. El usuario puede llamarsyncUniqueId()
en un nuevo dispositivo iOS. Eso actualizará suuniqueId
deIDFV
o una cadena aleatoria.
Obtiene el uso de memoria de la aplicación, en bytes.
Nota: este método solo está destinado a depurar o crear una interfaz de usuario de gestión de procesos orientada al usuario.
DeviceInfo . getUsedMemory ( ) . then ( ( usedMemory ) => {
// 23452345
} ) ;
Este método obtiene la lista de códecs multimedia compatibles.
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"]
} ) ;
Obtiene el agente de usuario del dispositivo.
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: ?
} ) ;
Obtiene la versión de la aplicación. Tenga en cuenta que una cadena de versión tiene formato de dispositivo/SO y puede contener datos adicionales (como el número de compilación, etc.). Si desea estar seguro del formato de la versión, puede utilizar una expresión regular para obtener la parte deseada de la cadena de versión devuelta.
let version = DeviceInfo . getVersion ( ) ;
// iOS: "1.0"
// Android: "1.0" or "1.0.2-alpha.12"
// Windows: ?
Indica si el dispositivo está en modo avión.
DeviceInfo . isAirplaneMode ( ) . then ( ( airplaneModeOn ) => {
// false
} ) ;
- Esto sólo funciona si el depurador remoto está deshabilitado.
Indica si la batería se está cargando actualmente.
DeviceInfo . isBatteryCharging ( ) . then ( ( isCharging ) => {
// true or false
} ) ;
Indica si la aplicación se está ejecutando en un emulador.
DeviceInfo . isEmulator ( ) . then ( ( isEmulator ) => {
// false
} ) ;
Indica si el dispositivo tiene un teclado conectado.
let isKeyboardConnected = DeviceInfo . isKeyboardConnected ( ) ;
// true
Indica si se configuró un número PIN o una huella digital para el dispositivo.
DeviceInfo . isPinOrFingerprintSet ( ) . then ( ( isPinOrFingerprintSet ) => {
if ( ! isPinOrFingerprintSet ) {
// ...
}
} ) ;
Indica si el dispositivo es una tableta.
let isTablet = DeviceInfo . isTablet ( ) ;
// true
Indica si el dispositivo tiene poca RAM.
let isLowRamDevice = DeviceInfo . isLowRamDevice ( ) ;
// true
Indica si el usuario cambió Display Zoom a Zoomed
let isDisplayZoomed = DeviceInfo . isDisplayZoomed ( ) ;
// true
Indica si el dispositivo está en modo tableta.
let isTabletMode = DeviceInfo . isTabletMode ( ) ;
// true
Indica si el dispositivo está actualmente en modo horizontal.
DeviceInfo . isLandscape ( ) . then ( ( isLandscape ) => {
// true
} ) ;
Indica si el dispositivo tiene un mouse conectado.
let isMouseConnected = DeviceInfo . isMouseConnected ( ) ;
// true
Indica si el dispositivo es compatible con los servicios móviles de Google.
DeviceInfo . hasGms ( ) . then ( ( hasGms ) => {
// true
} ) ;
Indica si el dispositivo es compatible con los servicios móviles de Huawei.
DeviceInfo . hasHms ( ) . then ( ( hasHms ) => {
// true
} ) ;
Indica si el dispositivo tiene una muesca.
let hasNotch = DeviceInfo . hasNotch ( ) ;
// true
Indica si el dispositivo tiene una isla dinámica.
let hasDynamicIsland = DeviceInfo . hasDynamicIsland ( ) ;
// true
Devuelve el tipo de dispositivo como una cadena, que será uno de:
Handset
Tablet
Tv
Desktop
GamingConsole
Headset
unknown
let type = DeviceInfo . getDeviceType ( ) ;
// 'Handset'
Una lista ordenada de ABI de 32 bits compatibles con este dispositivo.
DeviceInfo . supported32BitAbis ( ) . then ( ( abis ) => {
// ["armeabi-v7a", "armeabi"]
} ) ;
Una lista ordenada de ABI de 64 bits compatibles con este dispositivo.
DeviceInfo . supported64BitAbis ( ) . then ( ( abis ) => {
// ["arm64-v8a"]
} ) ;
Devuelve una lista de versiones de arquitectura de procesador compatibles.
DeviceInfo . supportedAbis ( ) . then ( ( abis ) => {
// [ "arm64 v8", "Intel x86-64h Haswell", "arm64-v8a", "armeabi-v7a", "armeabi", "win_x86", "win_arm", "win_x64" ]
} ) ;
Indica si el dispositivo tiene una característica específica del sistema.
DeviceInfo . hasSystemFeature ( 'amazon.hardware.fire_tv' ) . then ( ( hasFeature ) => {
// true or false
} ) ;
Devuelve una lista de funciones del sistema disponibles en Android.
DeviceInfo . getSystemAvailableFeatures ( ) . then ( ( features ) => {
// ["android.software.backup", "android.hardware.screen.landscape", "android.hardware.wifi", ...]
} ) ;
Indica si el dispositivo tiene servicios de ubicación desactivados a nivel de dispositivo (NO relacionado con permisos específicos de la aplicación)
DeviceInfo . isLocationEnabled ( ) . then ( ( enabled ) => {
// true or false
} ) ;
Indica si el dispositivo está conectado a unos auriculares con cable o Bluetooth
DeviceInfo . isHeadphonesConnected ( ) . then ( ( enabled ) => {
// true or false
} ) ;
Indica si el dispositivo está conectado a unos auriculares con cable
DeviceInfo . isWiredHeadphonesConnected ( ) . then ( ( enabled ) => {
// true or false
} ) ;
Indica si el dispositivo está conectado a un auricular bluetooth
DeviceInfo . isBluetoothHeadphonesConnected ( ) . then ( ( enabled ) => {
// true or false
} ) ;
Devuelve un objeto de proveedores/servicios de ubicación específicos de la plataforma , con valor boolean
estén o no disponibles actualmente.
NOTA: Esta función requiere acceso al permiso de Ubicación en Android
DeviceInfo . getAvailableLocationProviders ( ) . then ( ( providers ) => {
// {
// gps: true
// network: true
// passive: true
// }
} ) ;
DeviceInfo . getAvailableLocationProviders ( ) . then ( ( providers ) => {
// {
// headingAvailable: false
// isRangingAvailable: false
// locationServicesEnabled: true
// significantLocationChangeMonitoringAvailable: true
// }
} ) ;
Obtiene el nivel de brillo actual de la pantalla principal del dispositivo. Actualmente solo iOS. Devuelve un número entre 0,0 y 1,0, inclusive.
DeviceInfo . getBrightness ( ) . then ( ( brightness ) => {
// iOS: 0.6
} ) ;
Compatible con Windows, iOS y Android (soporte web para API relacionadas con la batería/carga).
Se dispara cuando cambia el nivel de la batería; enviado no más frecuentemente que una vez por minuto.
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
} ) ;
Se dispara cuando el nivel de la batería se considera bajo (varias veces hasta que se carga)
Plataforma | Porcentaje |
---|---|
iOS | 20 |
Androide | 15 |
Web | 20 |
ventanas | 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
} ) ;
Se activa cuando el estado de la batería cambia o el dispositivo ingresa al modo de ahorro de energía, por ejemplo, cuando el dispositivo ingresa al modo de carga o se desconecta.
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,
// }
} ) ;
Obtiene la hora a la que se instaló la aplicación por primera vez, en milisegundos.
import { useFirstInstallTime } from 'react-native-device-info' ;
const { loading , result } = useFirstInstallTime ( ) ; // { loading: true, result: 1517681764528}
< Text > { loading ? 'loading...' : result } < / Text > ;
Obtiene el nombre del dispositivo.
import { useDeviceName } from 'react-native-device-info' ;
const { loading , result } = useDeviceName ( ) ; // { loading: true, result: "Becca's iPhone 6"}
< Text > { loading ? 'loading...' : result } < / Text > ;
Indica si el dispositivo tiene una característica específica del sistema.
import { useHasSystemFeature } from 'react-native-device-info' ;
const { loading , result } = useHasSystemFeature ( 'amazon.hardware.fire_tv' ) ; // { loading: true, result: false }
< Text > { loading ? 'loading...' : result } < / Text > ;
Obtenga si la aplicación se está ejecutando en un emulador.
import { useIsEmulator } from 'react-native-device-info' ;
const { loading , result } = useIsEmulator ( ) ; // { loading: true, result: false }
< Text > { loading ? 'loading...' : result } < / Text > ;
Obtiene el fabricante del dispositivo.
import { useManufacturer } from 'react-native-device-info' ;
const { loading , result } = useManufacturer ( ) ; // { loading: true, result: "Apple"}
< Text > { loading ? 'loading...' : result } < / Text > ;
Indica si el dispositivo está conectado a unos auriculares con cable o a unos auriculares bluetooth.
Este enlace se suscribe al evento RNDeviceInfo_headphoneConnectionDidChange
y actualiza el campo result
en consecuencia.
import { useIsHeadphonesConnected } from 'react-native-device-info' ;
const { loading , result } = useIsHeadphonesConnected ( ) ; // { loading: true, result: false}
< Text > { loading ? 'loading...' : result } < / Text > ;
Indica si el dispositivo está conectado a unos auriculares con cable.
Este enlace se suscribe al evento RNDeviceInfo_headphoneWiredConnectionDidChange
y actualiza el campo result
en consecuencia.
import { useIsWiredHeadphonesConnected } from 'react-native-device-info' ;
const { loading , result } = useIsWiredHeadphonesConnected ( ) ; // { loading: true, result: false}
< Text > { loading ? 'loading...' : result } < / Text > ;
Indica si el dispositivo está conectado a unos auriculares bluetooth.
Este enlace se suscribe al evento RNDeviceInfo_headphoneBluetoothConnectionDidChange
y actualiza el campo result
en consecuencia.
import { useIsBluetoothHeadphonesConnected } from 'react-native-device-info' ;
const { loading , result } = useIsBluetoothHeadphonesConnected ( ) ; // { loading: true, result: false}
< Text > { loading ? 'loading...' : result } < / Text > ;
Obtiene el nivel de brillo actual de la pantalla principal del dispositivo. Actualmente solo iOS. Devuelve un número entre 0,0 y 1,0, inclusive.
Este enlace se suscribe al evento RNDeviceInfo_brightnessDidChange
y actualiza el campo brightness
en consecuencia.
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 necesita verificar el tipo de dispositivo desde el lado nativo, puede usar lo siguiente:
import com . learnium . resolver . DeviceTypeResolver
...
deviceTypeResolver = new DeviceTypeResolver ( context );
...
//Check if the device is a Tablet:
if ( deviceTypeResolver . isTablet ){
...
} else {
...
}
Al instalar o utilizar react-native-device-info
, puede encontrar los siguientes problemas:
react-native-device-info
utiliza com.google.android.gms:play-services-gcm
para proporcionar getInstanceId(). Esto puede generar conflictos al crear la aplicación de Android.
Si está utilizando una versión diferente de com.google.android.gms:play-services-gcm
en su aplicación, puede definir la variable gradle googlePlayServicesVersion
en su archivo build.gradle
para indicarle react-native-device-info
qué versión debería requerir. Consulte el proyecto de ejemplo incluido aquí para obtener una muestra.
Si está utilizando una biblioteca diferente que entra en conflicto con com.google.android.gms:play-services-gcm
y está seguro de saber lo que está haciendo para evitar conflictos de versiones, simplemente puede ignorar esta dependencia en su archivo gradle:
compile(project( ' :react-native-device-info ' )) {
exclude group : ' com.google.android.gms '
}
Parece ser un error causado por react-native link
. Puede eliminar manualmente libRNDeviceInfo-tvOS.a
en Xcode -> [Your iOS build target] -> Build Phrases -> Link Binary with Libraries
.
Este es un registro a nivel del sistema que se puede desactivar ejecutando: xcrun simctl spawn booted log config --mode "level:off" --subsystem com.apple.CoreTelephony
. Para deshacer el comando, puede ejecutar: 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
contiene código nativo y es necesario burlarse de él. Sin embargo, la compatibilidad con Jest Snapshot puede funcionar.
Si no tiene un archivo de configuración de Jest configurado, debe agregar lo siguiente a su configuración de Jest y crear el archivo jest.setup.js en la raíz del proyecto:
setupFiles: [ '/jest.setup.js' ] ;
Luego debe agregar lo siguiente a su archivo de configuración de Jest para simular el módulo nativo DeviceInfo:
import mockRNDeviceInfo from 'react-native-device-info/jest/react-native-device-info-mock' ;
jest . mock ( 'react-native-device-info' , ( ) => mockRNDeviceInfo ) ;
Consulte el proyecto de ejemplo para obtener más información.
Algunas de las API (como getBatteryState) generarán advertencias en determinadas condiciones, como en tvOS o el emulador de iOS. Esto no será visible en producción, pero incluso en desarrollo puede resultar irritante. Es útil tener advertencias porque estos dispositivos no devuelven ningún estado, y eso puede ser sorprendente y generar problemas de soporte de github. Las advertencias tienen como objetivo educarlo como desarrollador. Si las advertencias son problemáticas, puede intentar esto en su código para suprimirlas:
import { LogBox } from 'react-native' ;
LogBox . ignoreLogs ( [ 'Battery state' ] ) ;
Consulte CHANGELOG.md.
Consulte la contributing guide
.
Como cortesía para los desarrolladores, esta biblioteca se hizo compatible en v0.21.6 con react-native-dom y react-native-web al proporcionar un polyfill vacío para evitar romper las compilaciones.
Sólo getUserAgent() devolverá un valor correcto. Todos los demás métodos API devolverán un valor "vacío" de su tipo de retorno documentado: 0
para números, ''
para cadenas, false
para booleanos.