Olá a todos! Se você precisar criar um identificador de dispositivo Android único e estável para uso dentro de um aplicativo, provavelmente notou o caos que está presente na documentação e nas respostas sobre stackoverflow . Vamos dar uma olhada em como enfrentar esse desafio em 2020. Nesta breve visão geral, onde obter um identificador que seja resistente à reinstalação de seu aplicativo e quais dificuldades podem ocorrer no futuro. Ir!
Por que a identificação é necessária
Recentemente, as discussões sobre a privacidade dos dados do usuário têm ganhado popularidade rapidamente. Talvez isso se deva à receita crescente dos gigantes da publicidade. Talvez por trás dessas discussões esteja uma preocupação com os monopólios que identificam os usuários e seus dispositivos. Portanto, a Apple, lutando contra a vigilância e restringindo todos os desenvolvedores de usar o IDFA, ao mesmo tempo não se limita a si mesma . O que pode ser dito com certeza: o processo de identificação de um usuário de um aplicativo para desenvolvedores ficou mais complicado.
As tarefas baseadas em identificação incluem análise de retorno, personalização de conteúdo e publicidade e prevenção de fraude.
Entre estes últimos, existem vários problemas urgentes:
Contas compartilhadas em serviços com assinaturas pagas ou conteúdo pago exclusivo. Imagine o quanto serviços como Netflix ou Coursera estão perdendo quando os usuários têm uma conta para várias pessoas.
Roubo de conta.
Ambos os problemas levam à perda de receita ou perda de reputação. A confiabilidade de sua solução depende diretamente da confiabilidade da identificação do dispositivo.
Métodos básicos de identificação
Usando identificadores de hardware
Método desatualizado e atualmente inviável. O Google fez um bom trabalho bloqueando o acesso a eles, pois eles não mudam mesmo após uma redefinição de fábrica. Entre esses identificadores:
IMEI
IMSI
Endereço 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, , .
Se você tiver perguntas ou acréscimos, compartilhe-os nos comentários. E isso é tudo, obrigado pela atenção!