¡Hola a todos! Si necesita crear un identificador de dispositivo Android único y estable para usar dentro de una aplicación, probablemente haya notado el caos que está presente en la documentación y en las respuestas de stackoverflow . Echemos un vistazo a cómo abordar este desafío en 2020. En esta breve descripción general, dónde obtener un identificador que se resista a reinstalar su aplicación y qué dificultades pueden surgir en el futuro. ¡Vamos!
Por qué es necesaria la identificación
Recientemente, las discusiones sobre la privacidad de los datos de los usuarios están ganando popularidad. Quizás esto se deba a los crecientes ingresos de los gigantes publicitarios. Quizás debajo de estas discusiones haya una preocupación por los monopolios que identifican a los usuarios y sus dispositivos. Entonces, Apple, luchando contra la vigilancia y limitando a todos los desarrolladores a usar IDFA, al mismo tiempo no lo limita a sí mismo . Lo que se puede decir con seguridad: el proceso de identificación de un usuario de una aplicación para desarrolladores se ha vuelto más complicado.
Las tareas basadas en la identificación incluyen: análisis de devoluciones, personalización de contenido y anuncios y prevención de fraudes.
Entre estos últimos, hay varios problemas urgentes:
Cuentas compartidas en servicios con suscripciones pagas o contenido pago único. Imagínense cuánto pierden servicios como Netflix o Coursera por el hecho de que los usuarios tienen una cuenta para varias personas.
Robo de cuenta.
Ambos problemas conducen a la pérdida de ingresos o de reputación. La confiabilidad de su solución depende directamente de la confiabilidad de la identificación del dispositivo.
Métodos básicos de identificación
Usar identificadores de hardware
Método obsoleto y actualmente inviable. Google ha hecho un buen trabajo al bloquear el acceso a ellos, ya que no cambian incluso después de un restablecimiento de fábrica. Entre esos identificadores:
IMEI
IMSI
Dirección MAC
. , , Play Market. , . .
, : , .
UUID
cookie: , ( SharedPreferences), . , cookie — . .
- . — . (app instance ID).
,
ANDROID_ID. , , , . Android 8.0 , — . ( ).
, . ( ) Google . , , ( 2020 ).
:
<uses-permission android:name="com.google.android.providers.gsf.permission.READGSERVICES" />
:
public static String getGsfAndroidId(Context context) {
String params[] = { ID_KEY };
Cursor c = context.getContentResolver().query(URI, null, null, params,
null);
if (!c.moveToFirst() || c.getColumnCount() < 2)
return null;
try {
return Long.toHexString(Long.parseLong(c.getString(1)));
} catch (NumberFormatException e) {
return null;
}
}
: ContentProvider-a, Google. , Google . , .. Play Market.
. , , Xposed, ANDROID_ID, GSF_ID. , .
(fingerprint)
device-fingerprinting , . — FingerprintJS — 13 GitHub. cookie.
( ).
- Android-. 4 . Samsung? , 600 . Samsung , Android 9? 150 . , ? , , . 25000 . , . — , . , .
Android, , , , , .
, . .
— ( ANDROID_ID), . — .
— . , . , , . — , .
, .
, . ? , . .
— . , . , . , android-arsenal, , .
Android-device-identification — . , , , ANDROID_ID, Build. , 2 , . , , .
Fingerprint-android — . 2 : getDeviceId getFingerprint. GSF_ID ANDROID_ID, , , . getFingerprint — . . , Kotlin, .
, , ANDROID_ID GSF_ID. Android, , .
Si tiene preguntas o adiciones, compártalas en los comentarios. Y eso es todo, ¡gracias por tu atención!