Como identificar dispositivos Android corretamente

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:





  1. 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.





  2. 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

  1. 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:





  1. IMEI





  2. IMSI





  3. Endereço MAC





. , , Play Market. , . . 





, : , .





  1. UUID

cookie: , ( SharedPreferences), . , cookie — . . 





- . — . (app instance ID). 





  1. ,

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. , . 





O aplicativo Device ID Changer em conjunto com o Xposed permite que você altere quase qualquer identificador.  Versão gratuita - apenas ANDROID_ID
Device ID Changer Xposed . — ANDROID_ID
  1. (fingerprint)  

device-fingerprinting , . — FingerprintJS — 13 GitHub. cookie. 





( ).





- Android-. 4 . Samsung? , 600 . Samsung , Android 9? 150 . , ? , , . 25000 . , . — , . , . 





Android, , , , , . 





, . .





— (   ANDROID_ID), . — . 





— . , . , , . — , . 





, .





, . ? ,   . .  





— . , . , . , android-arsenal, , .





  1. Android-device-identification — . , , , ANDROID_ID, Build. , 2 , . , , .





  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! 












All Articles