Hoe haal ik een Unieke ID op om Android-toestellen te identificeren?

Sommige ontwikkelaars kunnen een Unieke ID nodig hebben om Android-toestellen te identificeren. Er zijn veel gevallen waarin ontwikkelaars deze Unieke ID nodig hebben.

Bijv. wanneer u :

  • een Android-gebruiker wilt identificeren om gamescores op te slaan op een server
  • de installatie van apps wilt volgen
  • DRM wilt genereren voor kopieerbeveiliging.

Er bestaan verschillende oplossingen, maar geen enkele is perfect. In deze tutorial, gaan we vijf oplossingen te onderzoeken en hun nadelen te presenteren :

1. Uniek telefoonnummer (IMEI, MEID, ESN, IMSI)

Als u zich alleen op smartphones richt, kunt u profiteren van het feit dat het apparaat telefoondiensten heeft. U kunt dus eenvoudig een unieke ID achterhalen die het apparaat identificeert.

Deze unieke ID kan IMEI, MEID, ESN of IMSI zijn. Ze kunnen als volgt worden gedefinieerd:

  • IMEI voor International Mobile Equipment Identity : het unieke nummer voor het identificeren van GSM, WCDMA mobiele telefoons en sommige satelliettelefoons
  • MEID voor Mobile Equipment IDentifier : het wereldwijd unieke nummer voor het identificeren van een fysiek stuk CDMA mobiele station apparatuur, de MEID werd opgericht ter vervanging van ESNs (Electronic Serial Number)
  • ESN voor Electronic Serial Number : het unieke nummer om CDMA mobiele telefoons te identificeren
  • IMSI (International Mobile Subscriber Identity) : de unieke identificatie geassocieerd met alle GSM en UMTS netwerk mobiele telefoon gebruikers

Om de unieke ID geassocieerd met uw toestel op te halen, kunt u gebruik maken van de volgende code :

Deze oplossing heeft een verzoek nodig voor android.permission.READ_PHONE_STATE aan uw gebruiker, wat moeilijk te rechtvaardigen kan zijn na het type toepassing dat u hebt gemaakt.

Daarnaast is deze oplossing beperkt tot smartphones omdat tablets geen telefoondiensten hebben. Een voordeel is dat de waarde overleeft tot fabrieksresets op apparaten.

2. MAC-adres

U kunt ook proberen om een MAC-adres te krijgen van een apparaat met een Wi-Fi- of Bluetooth-hardware. Maar deze oplossing is niet aan te raden omdat niet alle apparaten een Wi-Fi verbinding hebben. Zelfs als de gebruiker een Wi-Fi verbinding heeft, moet deze ingeschakeld zijn om de gegevens op te halen. Anders rapporteert de oproep niet het MAC-adres.

3. Serienummer

Devices zonder telefoondiensten zoals tablets moeten een unieke apparaat-ID rapporteren die beschikbaar is via android.os.Build.SERIAL sinds Android 2.3 Gingerbread. Sommige telefoons met telefoondiensten kunnen ook een serienummer definiëren. Aangezien niet alle Android-toestellen een serienummer hebben, is deze oplossing niet betrouwbaar.

4. Secure Android ID

Bij de eerste keer opstarten van een toestel wordt een willekeurige waarde gegenereerd en opgeslagen. Deze waarde is beschikbaar via Settings.Secure.ANDROID_ID . Het is een 64-bit nummer dat constant moet blijven gedurende de levensduur van een apparaat. ANDROID_ID lijkt een goede keuze voor een unieke apparaat-identificatie omdat het beschikbaar is voor smartphones en tablets. Om de waarde op te halen, kunt u de volgende code gebruiken :

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

De waarde kan echter veranderen als er een fabrieksreset wordt uitgevoerd op het apparaat. Er is ook een bekende bug met een populaire handset van een fabrikant waar elke instantie dezelfde ANDROID_ID heeft. Het is duidelijk dat de oplossing niet 100% betrouwbaar is.

5. Gebruik UUID

Omdat de meeste toepassingen een bepaalde installatie moeten identificeren en niet een fysiek apparaat, is het gebruik van de UUID klasse een goede oplossing om een unieke id voor een gebruiker te krijgen. De volgende oplossing is gepresenteerd door Reto Meier van Google in een Google I/O presentatie :

UUID.randomUUID() methode genereert een unieke identifier voor een specifieke installatie. Je hoeft alleen maar die waarde op te slaan en je gebruiker zal worden geïdentificeerd bij de volgende start van je applicatie. U kunt ook proberen om deze oplossing te koppelen met Android Backup service om de informatie beschikbaar te houden voor de gebruiker, zelfs als hij uw applicatie installeert op een ander apparaat.

Conclusie

Het identificeren van een bepaald apparaat op Android is geen gemakkelijke zaak. Er zijn veel goede redenen om dat te vermijden. De beste oplossing is waarschijnlijk om een bepaalde installatie te identificeren met behulp van een UUID-oplossing. Echter, als u absoluut een bepaald apparaat fysiek wilt identificeren, kunt u proberen om de ANDROID_ID oplossing te gebruiken. Niet 100% betrouwbaar, maar beter dan andere oplossingen.

Geef een antwoord

Het e-mailadres wordt niet gepubliceerd.