Jak pobrać Unikalny identyfikator w celu identyfikacji urządzeń z systemem Android ?

Niektórzy programiści mogą potrzebować Unikalnego identyfikatora w celu identyfikacji urządzeń z systemem Android. Przypadki użycia, w których programiści potrzebują tego Unique ID są liczne.

Na przykład, gdy chcesz :

  • identyfikować użytkownika Androida do przechowywania wyników gier na serwerze
  • śledzić instalację aplikacji
  • generować DRM do ochrony przed kopiowaniem.

Istnieją różne rozwiązania, ale żadne nie jest idealne. W tym poradniku, zamierzamy zbadać pięć rozwiązań i przedstawić ich wady :

1. Unikalny numer telefoniczny (IMEI, MEID, ESN, IMSI)

Jeśli celujesz tylko w smartfony, możesz skorzystać z faktu, że urządzenia te mają usługi telefoniczne.Możesz więc łatwo pobrać unikalny identyfikator identyfikujący urządzenie.

Tym unikalnym identyfikatorem może być IMEI, MEID, ESN lub IMSI. Można je zdefiniować w następujący sposób :

  • IMEI dla International Mobile Equipment Identity : unikalny numer identyfikujący telefony komórkowe GSM, WCDMA, a także niektóre telefony satelitarne
  • MEID dla Mobile Equipment IDentifier : globalnie unikalny numer identyfikujący fizyczny element wyposażenia stacji komórkowej CDMA, MEID został stworzony, aby zastąpić ESN (Electronic Serial Number)
  • ESN dla Electronic Serial Number : unikalny numer identyfikujący telefony komórkowe CDMA
  • IMSI (International Mobile Subscriber Identity) : unikalna identyfikacja związana ze wszystkimi użytkownikami telefonów komórkowych sieci GSM i UMTS

Aby odzyskać unikalny identyfikator przypisany do Twojego urządzenia, możesz użyć następującego kodu :

To rozwiązanie wymaga żądania android.permission.READ_PHONE_STATE do swojego użytkownika, co może być trudne do uzasadnienia po typie aplikacji, którą zrobiłeś.

Co więcej, to rozwiązanie jest ograniczone do smartfonów, ponieważ tablety nie mają usług telefonicznych. Jedną z zalet jest to, że wartość przetrwa do resetu fabrycznego na urządzeniach.

2. Adres MAC

Możesz również spróbować uzyskać adres MAC z urządzenia posiadającego sprzęt Wi-Fi lub Bluetooth. Jednak to rozwiązanie nie jest zalecane, ponieważ nie wszystkie urządzenia mają połączenie Wi-Fi. Nawet jeśli użytkownik posiada połączenie Wi-Fi, musi być ono włączone, aby pobrać dane. W przeciwnym razie połączenie nie zgłosi adresu MAC.

3. Numer seryjny

Urządzenia bez usług telefonii, takie jak tablety, muszą zgłosić unikalny identyfikator urządzenia, który jest dostępny za pośrednictwem android.os.Build.SERIAL od Android 2.3 Gingerbread. Niektóre telefony posiadające usługi telefonii mogą również zdefiniować numer seryjny. Ponieważ nie wszystkie urządzenia z systemem Android mają numer seryjny, to rozwiązanie nie jest niezawodne.

4. Secure Android ID

Przy pierwszym uruchomieniu urządzenia, losowo generowana i przechowywana jest wartość. Wartość ta jest dostępna poprzez Settings.Secure.ANDROID_ID . Jest to 64-bitowa liczba, która powinna pozostać niezmienna przez cały okres użytkowania urządzenia. ANDROID_ID wydaje się być dobrym wyborem na unikalny identyfikator urządzenia, ponieważ jest dostępny dla smartfonów i tabletów. Aby odzyskać wartość, możesz użyć następującego kodu :

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

Jednakże wartość może się zmienić, jeśli na urządzeniu zostanie przeprowadzony reset fabryczny. Znany jest również błąd z popularną słuchawką od producenta, gdzie każda instancja ma ten sam ANDROID_ID. Najwyraźniej rozwiązanie to nie jest w 100% niezawodne.

5. Użyj UUID

Jako że wymaganiem dla większości aplikacji jest identyfikacja konkretnej instalacji, a nie fizycznego urządzenia, dobrym rozwiązaniem na uzyskanie unikalnego id dla użytkownika jest użycie klasy UUID. Następujące rozwiązanie zostało przedstawione przez Reto Meier z Google w prezentacji Google I/O :

Metoda UUID.randomUUID() generuje unikalny identyfikator dla konkretnej instalacji. Musisz tylko przechowywać tę wartość, a twój użytkownik będzie zidentyfikowany przy następnym uruchomieniu twojej aplikacji. Możesz również spróbować powiązać to rozwiązanie z usługą Android Backup, aby zachować informacje dostępne dla użytkownika, nawet jeśli zainstaluje on twoją aplikację na innym urządzeniu.

Wniosek

Identyfikacja konkretnego urządzenia w systemie Android nie jest rzeczą łatwą. Istnieje wiele powodów, aby tego uniknąć. Najlepszym rozwiązaniem jest prawdopodobnie zidentyfikowanie konkretnej instalacji za pomocą rozwiązania UUID. Jeśli jednak chcesz absolutnie zidentyfikować konkretne urządzenie fizycznie, możesz spróbować użyć rozwiązania ANDROID_ID. Nie jest ono w 100% niezawodne, ale lepsze niż inne rozwiązania.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.