2012-01-29 14 views
8

Chcę przydzielić unikalny identyfikator każdemu użytkownikowi, zaraz po zainstalowaniu aplikacji, tak aby zawsze, gdy aplikacja kontaktuje się z serwerem, wiem, z kim się kontaktuje. W tym celu pomyślałem, że przy pierwszej instalacji aplikacja kontaktuje się z serwerem i otrzymuje unikalny identyfikator. Ale nie wiem, gdzie przechowywać go na stałe, aby przy następnym uruchomieniu aplikacji wiedział, jaki jest jego identyfikator, a nie kontakt z serwerem.Unikalne ID dla każdego użytkownika w Androidzie

Przepraszam, jeśli to oczywiste pytanie, ponieważ jestem początkującym.

+1

Czy jest jakiś powód, dla którego nie wybierasz nazwy użytkownika/hasła? Jeśli użytkownik ma wiele urządzeń i/lub zastępuje swoje urządzenie z systemem Android, nie będzie już w stanie ich poznać. (nie mówiąc, że nie jest to właściwe w tym przypadku, ale co tak naprawdę jest w tym przypadku? :) –

+1

Btw, ze wszystkich duplikatów dotyczących unikalnych identyfikatorów, które wydają się być jednymi z najbardziej wiarygodnych: http: // stackoverflow.com/questions/2785485/is-there-a-unique-android-device-id, chociaż nie uwzględnia zastrzeżeń, o których wspomniałem w mojej odpowiedzi. – EboMike

+0

Chcę śledzić aktywność użytkownika i wysłać go na serwer. Tak więc, gdy klient wprowadzi ten unikalny identyfikator do mojej witryny, będzie mógł zobaczyć dzienniki powiązane z tym użytkownikiem. Dlatego nie chcę, aby miał identyfikator logowania, ponieważ aplikacja zawsze działa w tle. – Gaurav

Odpowiedz

6

To pytanie było wielokrotnie zadawane podczas przepełnienia stosu.

Krótko mówiąc: system Android zawsze obsługiwał unikatowy identyfikator. Jednak przed Androidem 2.2 identyfikator nie zawsze był identyczny na niektórych rodzajach telefonów. Ponieważ 2.2 jest obecnie dość wszechobecny, użyłbym tego identyfikatora.

Blog programisty Androida ma na ten temat numer a good article.

Jak powiedział Joachim - możesz rozważyć inne podejście. Unikatowy identyfikator Androida jest dobry i trwały w przypadku resetowania fabrycznego, ale nie w przypadku aktualizacji urządzenia. Pamiętaj też, że wiele osób ma kilka urządzeń (takich jak telefon i tablet). Zamiast tego możesz skorzystać z konta Google, AccountManager może Ci w tym pomóc.

0

Użyj SharedPreferences do przechowywania unikalnego identyfikatora.

Oto przykład:

Android SharedPreferences

Dla bardziej złożonych danych, można użyć SQLite.

+0

Mam na myśli generowanie losowego identyfikatora na serwerze przy użyciu identyfikatora urządzenia użytkownika lub innego identyfikatora, który wkrótce znajdę. Problem polegał na przechowywaniu losowego identyfikatora na urządzeniu. Tak rozwiązany problem. Dzięki. :) – Gaurav

+0

SharedPreferences nie przetrwa reinstalacji lub przywrócenia ustawień fabrycznych lub po prostu wyczyści dane aplikacji przez użytkownika. Możesz utworzyć kopię zapasową na koncie Google użytkownika, ale nadal można ją łatwo usunąć. –

0

Dla unikalnego identyfikatora można użyć interfejsu IMEI urządzenia, na którym ma zostać zainstalowana aplikacja. Aby uzyskać numer IMEI, należy uzyskać numer this link. Następnie zapisano ten numer IMEI we współdzielonej preferencji. Skorzystaj z linku Guillermo do tego. Musisz sprawdzić ten unikalny identyfikator w preferencjach podczas uruchamiania aplikacji. Za pierwszym razem zachowaj to w preferencji. Gdy następnym razem będzie sprawdzać, czy jest to identyfikator, aplikacja znajduje go w preferencji, a zatem nie ma potrzeby łączenia serwera. :)

+0

IMEI na tablecie? Powodzenia... – EboMike

+0

@EboMike Dzięki, żebym się tym zajął. –

+0

@Gaurav W przypadku tabletu tylko tablety 3G mają interfejs IMEI. Ale za pomocą linku podanego w mojej odpowiedzi można znaleźć również identyfikator urządzenia tabletu, który jest unikalny. I dla unikalnego ID można również użyć ANDROID_ID. Zobacz [http://stackoverflow.com/questions/8366013/android-imei-number-for-tablet]. Ale nie jest zbyt wiarygodne, jak na odpowiedź tego łącza. –

0

Możesz uzyskać numer IMEI urządzenia. Od wersji API 26 metoda getDeviceId() jest przestarzała. Jeśli potrzebujesz uzyskać numer IMEI urządzenia, użyj następującego:

+0

Potrzebujesz READ_PHONE_STATE uprawnień do tego ... –

Powiązane problemy