Niektóre aplikacje na Androida pamiętają, czy zostały wcześniej zainstalowane na tym samym urządzeniu. Załóżmy, że odinstalowałeś aplikację rok temu. Po upływie roku, jeśli ponownie zainstalujesz tę samą aplikację, będzie ona mogła rozpoznać, że była wcześniej instalowana na tym samym telefonie.
Tej techniki używają aplikacje online, aby trwale zakazać użytkownikom ponownego tworzenia nowego konta, jeśli raz zablokowano im możliwość korzystania z usługi. Gdy tacy użytkownicy utworzą nowe konto, instalując aplikację później, aplikacje te będą w stanie wykryć swoją „pierwszą obecność” i wysłać te informacje na serwery, aby użytkownik mógł zostać ponownie zbanowany.
Jak to robią, nawet po wyczyszczeniu danych i całkowitym odinstalowaniu? Oznacza to, że przechowują gdzieś w telefonie jakiś plik, który nie jest usuwany po odinstalowaniu. Jak mogę wyłączyć to wykrywanie?
źródło
Do app creators have rights?
Właściwie to na moim telefonie nie. Mogę pozwolić im uruchomić kod i przechowywać dane na moim telefonie, ale nie mają do tego prawa i zastrzegam sobie prawo do cofnięcia obu uprawnień według własnego uznania.Odpowiedzi:
Istnieje wiele sposobów identyfikacji unikalnego urządzenia lub jego użytkownika:
ANDROID_ID
(unikalne dla nowej instalacji) : ta metoda jest prosta, ale wymaga dostępu do Internetu, przynajmniej przy pierwszym użyciu. Nie jest bardzo nachalny i nie utrzymuje się w przypadku przywrócenia ustawień fabrycznych. Jest również unikalny dla każdego użytkownika. Zobacz te informacje .ANDROID_ID
podejście, ale wymaga wyraźnego pozwolenia (Android 6.0+) na dostęp. Aplikacje korzystające z ekosystemu kont Google (np. Najlepsze wyniki i osiągnięcia w grach) mogą w ten sposób śledzić określonego użytkownika i uzyskiwać więcej informacji niż tylko to, czy aplikacja została zainstalowana, czy nie.2, 3 i 4 wymagają połączenia sieciowego i serwera po stronie dewelopera.
źródło
strace
narzędzie, którego można użyć do śledzenia wszystkich wywołań systemowych. Musisz więc uruchomić aplikację za pomocąstrace
i sprawdzić wszystkie wywołania systemowe związane z plikami na urządzeniu, a zauważysz wszystkie pliki odczytane / sprawdzone przez aplikację. Pewnie: prawdopodobnie dość trudne do zrobienia na smartfonie, ale zdecydowanie możliwe .Nie jest podłączony do pamięci, ale do chmury. Tak pamięta, nawet jeśli usunąłeś swoje dane. Aby to wyłączyć, przejdź do aplikacji ustawień urządzenia, dotknij kont google w obszarze osobistym (dotknij konta, jeśli chcesz mieć wiele kont), a następnie wyłącz aplikacje, których nie chcesz automatycznie synchronizować.
źródło
Odpowiedź GiantTree obejmuje to najlepiej, ale jest jeszcze jeden punkt do przemyślenia. Byłby to oczywiście „ ciemny wzorzec ”, ale identyfikacja ta może być również dokonana poprzez pobranie odcisków palców pewnych danych użytkownika - może to być postrzegane jako wariant w pierwszym punkcie („zachowaj plik”), ale byłoby trudniejsze do wykrycia i mniej wygodne unikać.
Jak duża jest to odporność, zależy od wybranych danych. Najbardziej oczywistą metodą byłoby sprawdzenie danych kontaktowych i użycie jakiejś formy odcisku palca; alternatywą może być użycie znaczników czasu zdjęć i innych metadanych. Oczywiście zmiany te zmieniają się w czasie, więc niezależnie od zastosowanej metody, po modyfikacji nadal musiałaby dać ścisłą odpowiedź (tak więc różni się ona od tradycyjnej funkcji skrótu). Nie ma też gwarancji, że użytkownik nie wyczyści danych śledzonych, ale w wielu przypadkach ludzie wolą tego nie robić.
Możesz spojrzeć na odciski palców przeglądarki, aby dowiedzieć się, jak to działa, nawet jeśli będzie nieco inaczej, ponieważ sprzęt telefoniczny jest zwykle bardziej jednolity niż sprzęt komputerowy. To powiedziawszy, dodanie niektórych szczegółów telefonu może nieco zawęzić odcisk palca.
Tam, gdzie to podejście się psuje, dotyczy to w szczególności sytuacji, gdy użytkownik zamienia telefon i zabiera swoje dane ze sobą na nowy telefon - w tym przypadku (chyba że dane telefonu trafią do odcisku palca) nowy telefon może zostać wykryty jako już zainstalowany, jak zadane pytanie. Wydaje się jednak dość prawdopodobne, że w scenariuszu, w którym aplikacja próbuje zablokować użytkownika, może to być pożądany rezultat (zamiast banowania samego telefonu)
Uwaga: w żaden sposób nie mówię, że jest to poprawne lub „dobre” jako sposób działania, jeśli piszesz aplikacje, ale rozsądne wydaje się omawianie tego, ponieważ tylko poprzez dyskusję ludzie dowiedzą się, czy są wystarczająco zaniepokojony, aby coś z tym zrobić i co to może być.
źródło
Istnieje klasa SharedPreferences - https://developer.android.com/reference/android/content/SharedPreferences.html - której niektóre aplikacje używają do przechowywania danych preferencji. Te dane nie są usuwane po odinstalowaniu aplikacji. Jeśli aplikacja zostanie później ponownie zainstalowana, wszystkie wcześniej zapisane klucze SharedPreferences są nadal dla niej dostępne.
źródło
SharedPreferences
są faktycznie usuwane po odinstalowaniu aplikacji. Programiści mogą skonfigurować kopie zapasowe, ale domyślnie są one usuwane po odinstalowaniu. (Źródło: Jako programista odinstalowuję swoje aplikacje, aby wyczyścić preferencje. Zobacz także: stackoverflow.com/a/9815641/1438733 )Jest jeszcze jedna możliwość - użycie trwałych plików cookie z bardzo dużym „czasem wygaśnięcia”. Myślę, że w ten sposób wiele aplikacji tego samego programisty tradycyjnie udostępniało poświadczenia, gdy przechowywane poświadczenia za pośrednictwem funkcji kont nie były tak otwarte / znane publicznie.
źródło