¿Cómo recuperar un ID único para identificar dispositivos Android?

Algunos desarrolladores pueden necesitar un ID único para identificar dispositivos Android. Los casos de uso en los que los desarrolladores necesitan este ID Único son múltiples.

Por ejemplo, cuando se quiere :

  • identificar a un usuario de Android para almacenar las puntuaciones de los juegos en un servidor
  • hacer un seguimiento de la instalación de las aplicaciones
  • generar DRM para la protección anticopia.

Existen varias soluciones pero ninguna es perfecta. En este tutorial, vamos a examinar cinco soluciones y presentar sus desventajas :

1. Número único de telefonía (IMEI, MEID, ESN, IMSI)

Si sólo tiene como objetivo los teléfonos inteligentes, puede aprovechar el hecho de que el dispositivo tiene servicios de telefonía.Así, puede recuperar fácilmente un ID único que identifique el dispositivo.

Este ID único puede ser IMEI, MEID, ESN o IMSI. Pueden definirse de la siguiente manera :

  • IMEI para Identidad Internacional de Equipo Móvil : el número único para identificar los teléfonos móviles GSM, WCDMA así como algunos teléfonos por satélite
  • MEID para Identificador de Equipo Móvil : el número único global que identifica una pieza física de equipo de estación móvil CDMA, el MEID fue creado para reemplazar los ESN (Número de Serie Electrónico)
  • ESN para Número de Serie Electrónico : el número único para identificar los teléfonos móviles CDMA
  • IMSI (International Mobile Subscriber Identity) : la identificación única asociada a todos los usuarios de teléfonos móviles de las redes GSM y UMTS

Para recuperar el ID único asociado a su dispositivo, puede utilizar el siguiente código :

Esta solución necesita solicitar para android.permission.READ_PHONE_STATE a tu usuario lo cual puede ser difícil de justificar siguiendo el tipo de aplicación que has hecho.

Además, esta solución está limitada a smartphones porque las tablets no tienen servicios de telefonía. Una ventaja es que el valor sobrevive a los reinicios de fábrica de los dispositivos.

2. Dirección MAC

También puedes intentar obtener una dirección MAC de un dispositivo que tenga un hardware Wi-Fi o Bluetooth. Pero, esta solución no es recomendable porque no todos los dispositivos tienen conexión Wi-Fi. Incluso si el usuario tiene una conexión Wi-Fi, ésta debe estar encendida para recuperar los datos. De lo contrario, la llamada no informa de la dirección MAC.

3. Número de serie

Los dispositivos sin servicios de telefonía como las tabletas deben informar de un ID de dispositivo único que está disponible a través de android.os.Build.SERIAL desde Android 2.3 Gingerbread. Algunos teléfonos que tienen servicios de telefonía también pueden definir un número de serie. Como no todos los dispositivos Android tienen un número de serie, esta solución no es fiable.

4. Secure Android ID

En el primer arranque de un dispositivo, se genera y almacena un valor aleatorio. Este valor está disponible a través de Settings.Secure.ANDROID_ID . Es un número de 64 bits que debe permanecer constante durante la vida de un dispositivo. ANDROID_ID parece una buena opción para un identificador único del dispositivo porque está disponible para los teléfonos inteligentes y las tabletas. Para recuperar el valor, puede utilizar el siguiente código :

String androidId = Settings.Secure.getString(getContentResolver(),
Settings.Secure.ANDROID_ID);

Sin embargo, el valor puede cambiar si se realiza un restablecimiento de fábrica en el dispositivo. También hay un error conocido con un teléfono popular de un fabricante en el que todas las instancias tienen el mismo ANDROID_ID. Evidentemente, la solución no es 100% fiable.

5. Usar UUID

Como el requisito para la mayoría de las aplicaciones es identificar una instalación particular y no un dispositivo físico, una buena solución para obtener un id único para un usuario es usar la clase UUID. La siguiente solución ha sido presentada por Reto Meier de Google en una presentación de Google I/O :

El métodoUUID.randomUUID() genera un identificador único para una instalación específica. Sólo tienes que almacenar ese valor y tu usuario será identificado en el próximo lanzamiento de tu aplicación. También puedes intentar asociar esta solución con el servicio Android Backup para mantener la información disponible para el usuario incluso si instala tu aplicación en otro dispositivo.

Conclusión

Identificar un dispositivo concreto en Android no es algo fácil. Hay muchas buenas razones para evitarlo. La mejor solución es probablemente para identificar una instalación particular mediante el uso de UUID solución. Sin embargo, si usted quiere absolutamente identificar un dispositivo en particular físicamente, usted puede tratar de utilizar la solución ANDROID_ID. No es 100% fiable pero es mejor que otras soluciones.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.