Como recuperar uma identificação única para identificar dispositivos Android ?

Alguns desenvolvedores podem precisar de uma identificação única para identificar dispositivos Android. Use casos onde os desenvolvedores precisam desse ID único são múltiplos.

Por exemplo, quando você quiser :

  • identificar um usuário Android para armazenar pontuações de jogos em um servidor
  • instalar aplicativos de pista
  • gerar DRM para proteção contra cópia.

Existem soluções universais, mas nenhuma é perfeita. Neste tutorial, vamos examinar cinco soluções e apresentar suas desvantagens :

1. Número de Telefonia Único (IMEI, MEID, ESN, IMSI)

Se você só tem como alvo smartphones, você pode aproveitar o fato de que o dispositivo tem serviços de telefonia. Então, você pode facilmente recuperar uma identificação única identificando o dispositivo.

Esta identificação única pode ser IMEI, MEID, ESN ou IMSI. Podem ser definidos da seguinte forma :

  • IMEI for International Mobile Equipment Identity : o número único para identificar telemóveis GSM, WCDMA, bem como alguns telemóveis via satélite
  • MEID for Mobile Equipment IDentifier : o número único global que identifica uma peça física do equipamento da estação móvel CDMA, o MEID foi criado para substituir os ESNs (Electronic Serial Number)
  • ESN for Electronic Serial Number : o número único para identificar telemóveis CDMA
  • IMSI (International Mobile Subscriber Identity) : a identificação única associada a todos os utilizadores de telemóveis da rede GSM e UMTS

Para recuperar a identificação única associada ao seu dispositivo, pode utilizar o seguinte código :

Esta solução precisa de solicitar o android.permission.READ_PHONE_STATE ao seu usuário, que pode ser difícil de justificar seguindo o tipo de aplicação que você fez.

Outras vezes, esta solução é limitada aos smartphones porque os tablets não têm serviços de telefonia. Uma vantagem é que o valor sobrevive aos reset de fábrica nos dispositivos.

2. Endereço MAC

Você também pode tentar obter um endereço MAC de um dispositivo que tenha um hardware Wi-Fi ou Bluetooth. Mas, esta solução não é recomendada porque nem todo o dispositivo tem uma ligação Wi-Fi. Mesmo que o utilizador tenha uma ligação Wi-Fi, esta tem de estar ligada para recuperar os dados. Caso contrário, a chamada não informa o endereço MAC.

3. Número de série

Dispositivos sem serviços de telefonia como tablets devem informar um ID de dispositivo único que está disponível via android.os.Build.SERIAL desde Android 2.3 Gingerbread. Alguns telefones que possuem serviços de telefonia também podem definir um número de série. Como nem todos os dispositivos Android têm um número de série, esta solução não é confiável.

4. Secure Android ID

No primeiro boot de um dispositivo, um valor aleatório é gerado e armazenado. Este valor está disponível através de Settings.Secure.ANDROID_ID . É um número de 64 bits que deve permanecer constante durante o tempo de vida útil de um dispositivo. ANDROID_ID parece uma boa escolha para um identificador de dispositivo único porque está disponível para smartphones e tablets. Para recuperar o valor, você pode usar o seguinte código :

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

No entanto, o valor pode mudar se um reset de fábrica for realizado no dispositivo. Há também um bug conhecido com um aparelho popular de um fabricante onde cada instância tem o mesmo ANDROID_ID. Claramente, a solução não é 100% fiável.

5. Use UUID

Como o requisito para a maioria das aplicações é identificar uma instalação particular e não um dispositivo físico, uma boa solução para obter uma identificação única para um usuário se usar a classe UUID. A seguinte solução foi apresentada por Reto Meier do Google em uma apresentação de E/S do Google :

UUUID.randomUUUID() método gera um identificador único para uma instalação específica. Você só tem que armazenar esse valor e o seu usuário será identificado no próximo lançamento da sua aplicação. Você também pode tentar associar esta solução com o serviço Android Backup para manter as informações disponíveis para o usuário mesmo que ele instale seu aplicativo em um outro dispositivo.

Conclusion

Identificar um determinado dispositivo no Android não é uma coisa fácil. Há muitas boas razões para evitar isso. A melhor solução é provavelmente identificar uma instalação em particular usando a solução UUID. No entanto, se você quiser absolutamente identificar fisicamente um determinado dispositivo, você pode tentar usar a solução ANDROID_ID. Não 100% confiável, mas melhor do que outras soluções.

Deixe uma resposta

O seu endereço de email não será publicado.