Câțiva dezvoltatori pot avea nevoie de un ID unic pentru a identifica dispozitivele Android. Cazurile de utilizare în care dezvoltatorii au nevoie de acest Unique ID sunt multiple.
De exemplu, atunci când doriți să :
- identificați un utilizator Android pentru a stoca scorurile jocurilor pe un server
- să urmăriți instalarea aplicațiilor
- să generați DRM pentru protecția împotriva copierii.
Există mai multe soluții, dar niciuna nu este perfectă. În acest tutorial, vom examina cinci soluții și vom prezenta dezavantajele acestora :
1. Numărul unic de telefonie (IMEI, MEID, ESN, IMSI)
Dacă vizați doar smartphone-urile, puteți profita de faptul că dispozitivul dispune de servicii de telefonie. astfel, puteți prelua cu ușurință un ID unic care să identifice dispozitivul.
Acest ID unic poate fi IMEI, MEID, ESN sau IMSI. Acestea pot fi definite după cum urmează :
- IMEI pentru International Mobile Equipment Identity : numărul unic de identificare a telefoanelor mobile GSM, WCDMA, precum și a unor telefoane prin satelit
- MEID pentru Mobile Equipment IDentifier : numărul unic la nivel mondial care identifică o piesă fizică a unui echipament de stație mobilă CDMA, MEID a fost creat pentru a înlocui ESN-urile (Electronic Serial Number)
- ESN pentru Electronic Serial Number : numărul unic de identificare a telefoanelor mobile CDMA
- IMSI (International Mobile Subscriber Identity) : identificarea unică asociată tuturor utilizatorilor de telefoane mobile din rețelele GSM și UMTS
Pentru a prelua ID-ul unic asociat dispozitivului dumneavoastră, puteți utiliza următorul cod :
Această soluție trebuie solicitată pentru android.permission.READ_PHONE_STATE utilizatorului dumneavoastră, ceea ce poate fi greu de justificat în urma tipului de aplicație pe care l-ați realizat.
În plus, această soluție este limitată la smartphone-uri, deoarece tabletele nu au servicii de telefonie. Un avantaj este că valoarea supraviețuiește la resetarea din fabrică a dispozitivelor.
2. Adresa MAC
De asemenea, puteți încerca să obțineți o adresă MAC de la un dispozitiv care are un hardware Wi-Fi sau Bluetooth. Dar, această soluție nu este recomandată, deoarece nu toate dispozitivele au conexiune Wi-Fi. Chiar dacă utilizatorul are o conexiune Wi-Fi, aceasta trebuie să fie activată pentru a prelua datele. În caz contrar, apelul nu raportează adresa MAC.
3. Serial Number
Dispozitivele fără servicii de telefonie, cum ar fi tabletele, trebuie să raporteze un ID unic al dispozitivului care este disponibil prin android.os.Build.SERIAL începând cu Android 2.3 Gingerbread. Unele telefoane care au servicii de telefonie pot defini, de asemenea, un număr de serie. Cum nu toate dispozitivele Android au un număr de serie, această soluție nu este fiabilă.
4. Secure Android ID
La prima pornire a unui dispozitiv, se generează și se stochează o valoare aleatorie. Această valoare este disponibilă prin Settings.Secure.ANDROID_ID . Este un număr pe 64 de biți care ar trebui să rămână constant pe toată durata de viață a unui dispozitiv. ANDROID_ID pare a fi o alegere bună pentru un identificator unic al dispozitivului, deoarece este disponibil pentru smartphone-uri și tablete. Pentru a prelua valoarea, puteți utiliza următorul cod :
String androidId = Settings.Secure.getString(getContentResolver(),
Settings.Secure.ANDROID_ID);
Cu toate acestea, valoarea se poate schimba dacă se efectuează o resetare din fabrică a dispozitivului. Există, de asemenea, o eroare cunoscută cu un telefon popular de la un producător în care fiecare instanță are același ANDROID_ID. În mod clar, soluția nu este 100% fiabilă.
5. Utilizați UUID
Cum cerința pentru majoritatea aplicațiilor este de a identifica o anumită instalație și nu un dispozitiv fizic, o soluție bună pentru a obține un id unic pentru un utilizator este de a utiliza clasa UUID. Următoarea soluție a fost prezentată de Reto Meier de la Google în cadrul unei prezentări Google I/O :
Metoda UUID.randomUUID() generează un identificator unic pentru o anumită instalație. Trebuie doar să stocați această valoare și utilizatorul va fi identificat la următoarea lansare a aplicației dumneavoastră. De asemenea, puteți încerca să asociați această soluție cu serviciul Android Backup pentru a păstra informațiile disponibile pentru utilizator chiar dacă acesta instalează aplicația dvs. pe un alt dispozitiv.
Concluzie
Identificarea unui anumit dispozitiv pe Android nu este un lucru ușor. Există multe motive întemeiate pentru a evita acest lucru. Cea mai bună soluție este probabil să identificați o anumită instalație prin utilizarea soluției UUID. Cu toate acestea, dacă doriți în mod absolut să identificați fizic un anumit dispozitiv, puteți încerca să utilizați soluția ANDROID_ID. Nu este 100% fiabilă, dar este mai bună decât alte soluții.