Jotkut kehittäjät voivat tarvita yksilöllisen tunnuksen Android-laitteiden tunnistamiseksi. Käyttötapauksia, joissa kehittäjät tarvitsevat tätä yksilöllistä tunnusta, on useita.
Esimerkiksi silloin, kun haluat :
- identifioida Android-käyttäjän pelien tulosten tallentamiseksi palvelimelle
- seurata sovellusten asentamista
- tuottaa DRM:n kopiosuojausta varten.
Montaa ratkaisua on olemassa, mutta mikään ei ole täydellinen. Tässä oppaassa tarkastelemme viittä ratkaisua ja esittelemme niiden haitat :
1. Yksilöllinen puhelinnumero (IMEI, MEID, ESN, IMSI)
Jos kohteena ovat vain älypuhelimet, voit hyödyntää sitä, että laitteessa on puhelinpalvelut.
Siten voit helposti hakea laitteen yksilöivän yksilöllisen tunnuksen.
Tämä yksilöllinen tunniste voi olla IMEI, MEID, ESN tai IMSI. Ne voidaan määritellä seuraavasti :
- IMEI for International Mobile Equipment Identity : GSM- ja WCDMA-matkapuhelinten sekä joidenkin satelliittipuhelinten yksilöimiseen tarkoitettu yksilöllinen numero
- MEID for Mobile Equipment IDentifier : maailmanlaajuisesti yksilöllinen numero, jolla yksilöidään fyysinen CDMA-matkapuhelinaseman laitteisto, MEID luotiin korvaamaan ESN:t (elektroninen sarjanumero)
- ESN for Electronic Serial Number : yksilöllinen numero CDMA-matkapuhelinten tunnistamiseen
- IMSI (International Mobile Subscriber Identity) : yksilöllinen tunniste, joka liittyy kaikkiin GSM- ja UMTS-verkon matkapuhelinkäyttäjiin
Laitteeseesi liittyvän yksilöllisen tunnisteen voi hakea seuraavalla koodilla :
Tämän ratkaisun on pyydettävä androidille.permission.READ_PHONE_STATE käyttäjälle, mitä voi olla vaikea perustella tekemäsi sovelluksen tyypin jälkeen.
Tämä ratkaisu rajoittuu lisäksi älypuhelimiin, koska tableteissa ei ole puhelinpalveluja. Yhtenä etuna on, että arvo säilyy laitteiden tehdasasetusten palautuksissa.
2. MAC-osoite
Voit myös yrittää saada MAC-osoitteen laitteesta, jossa on Wi-Fi- tai Bluetooth-laitteisto. Tätä ratkaisua ei kuitenkaan suositella, koska kaikissa laitteissa ei ole Wi-Fi-yhteyttä. Vaikka käyttäjällä olisikin Wi-Fi-yhteys, se on kytkettävä päälle tietojen hakemista varten. Muuten puhelu ei ilmoita MAC-osoitetta.
3. Sarjanumero
Laitteiden, joissa ei ole puhelinpalveluita, kuten tablettien, on ilmoitettava yksilöllinen laitetunnus, joka on saatavissa android.os.Build.SERIAL kautta Android 2.3 Gingerbreadista lähtien. Jotkin puhelimet, joissa on puhelinpalvelut, voivat myös määritellä sarjanumeron. Koska kaikilla Android-laitteilla ei ole sarjanumeroa, tämä ratkaisu ei ole luotettava.
4. Secure Android ID
Laitteen ensimmäisellä käynnistyskerralla luodaan ja tallennetaan satunnainen arvo. Tämä arvo on käytettävissä Settings.Secure.ANDROID_ID -valikon kautta. Se on 64-bittinen numero, jonka pitäisi pysyä vakiona laitteen käyttöiän ajan. ANDROID_ID vaikuttaa hyvältä valinnalta laitteen yksilölliseksi tunnisteeksi, koska se on käytettävissä älypuhelimissa ja tableteissa. Voit hakea arvon käyttämällä seuraavaa koodia :
String androidId = Settings.Secure.getString(getContentResolver(),
Settings.Secure.ANDROID_ID);
Arvo voi kuitenkin muuttua, jos laitteelle tehdään tehdasasetusten palautus. Erään valmistajan suositussa luurissa on myös tunnettu vika, jossa jokaisella instanssilla on sama ANDROID_ID. On selvää, että ratkaisu ei ole 100-prosenttisen luotettava.
5. Käytä UUID-tunnusta
Koska useimpien sovellusten vaatimuksena on tunnistaa tietty asennus eikä fyysistä laitetta, hyvä ratkaisu saada käyttäjälle yksilöllinen tunnus on käyttää UUID-luokkaa. Googlen Reto Meier esitteli seuraavan ratkaisun Google I/O -esityksessä :
UUID.randomUUID()-metodi tuottaa yksilöllisen tunnisteen tietylle asennukselle. Sinun tarvitsee vain tallentaa tämä arvo ja käyttäjäsi tunnistetaan sovelluksesi seuraavassa käynnistyksessä. Voit myös yrittää yhdistää tämän ratkaisun Androidin varmuuskopiointipalveluun, jotta tiedot pysyvät käyttäjän saatavilla, vaikka hän asentaisi sovelluksesi toiselle laitteelle.
Johtopäätökset
Tietyn laitteen tunnistaminen Androidissa ei ole helppo asia. On monia hyviä syitä välttää sitä. Paras ratkaisu on luultavasti tunnistaa tietty asennus käyttämällä UUID-ratkaisua. Jos kuitenkin haluat ehdottomasti tunnistaa tietyn laitteen fyysisesti, voit yrittää käyttää ANDROID_ID-ratkaisua. Ei 100% luotettava, mutta parempi kuin muut ratkaisut.