Jak działa funkcja „Kontrola licencji rynkowej” w Google Play?

23

Około miesiąca temu kupiłem grę o nazwie Whale Trail podczas sprzedaży w Google Play. Dzisiaj, kiedy próbowałem zagrać w grę w metrze, poprosiłem o sprawdzenie licencji gry, a nie robiąc tego (ponieważ nie było połączenia z Internetem w metrze), zamknąłem grę. Kiedy wróciłem do domu, spojrzałem na kartę uprawnień do gry i zobaczyłem to:

Kontrola licencji rynkowej

Może sprawdzić, czy masz licencję na tę aplikację z usługi Market

Wygląda na to, że jest to funkcja wbudowana w Google Play. Więc moje pytanie brzmi: jak działa to „sprawdzenie licencji”? Jak często aplikacje używające tej „funkcji” dzwonią do domu, aby sprawdzić, czy rzeczywiście nie jestem brudnym piratem kradnącym aplikacje tych programistów?

Yi Jiang
źródło
2
Nie jestem w tym ekspertem, więc nie zamierzam odpowiadać, ale informacje są tutaj . Szybka i brudna: aplikacja jest kupiona, a plik .apk jest licencjonowany, przechodzi przez sieć, aby sprawdzić licencję. Możliwe, że sieć nie była wówczas dostępna, a programista niczego nie buforował ani nie obsługiwał.
Doozer Blake
@DoozerBlake Więc odpowiedź brzmi - „Tak często, jak wybiera deweloper”? Myślę, że jest to do przyjęcia jako odpowiedź
Yi Jiang

Odpowiedzi:

18

Możesz wybrać, kiedy i jak często aplikacja ma sprawdzać licencję, i masz pełną kontrolę nad tym, jak obsługuje odpowiedź, weryfikuje podpisane dane odpowiedzi i egzekwuje kontrolę dostępu.

Od http://developer.android.com/guide/market/licensing/overview.html

Tak, w zasadzie za każdym razem, gdy programista tego chce. Wyobrażam sobie, że najczęstszym czasem sprawdzania jest, kiedy aplikacja jest otwierana po raz pierwszy.

Twoja aplikacja nie wysyła kwerendy bezpośrednio do serwera licencyjnego, ale zamiast tego wywołuje klienta Google Play za pośrednictwem zdalnego IPC w celu zainicjowania żądania licencji. We wniosku o licencję:

  • Aplikacja zapewnia: nazwę pakietu, numer jednorazowy, który jest później używany do sprawdzania poprawności dowolnej odpowiedzi z serwera, oraz wywołanie zwrotne, w którym odpowiedź może zostać zwrócona asynchronicznie.

  • Klient Google Play zbiera niezbędne informacje o użytkowniku i urządzeniu, takie jak nazwa użytkownika głównego konta Google urządzenia, IMSI i inne informacje. Następnie wysyła żądanie sprawdzenia licencji do serwera w imieniu Twojej aplikacji.

  • Serwer Google Play ocenia żądanie, wykorzystując wszystkie dostępne informacje, próbując ustalić tożsamość użytkownika z wystarczającym poziomem zaufania. Serwer następnie sprawdza tożsamość użytkownika w oparciu o rekordy zakupu dla Twojej aplikacji i zwraca odpowiedź licencyjną, którą klient Google Play zwraca do Twojej aplikacji przez wywołanie zwrotne IPC.

Więc:

  1. Informacje o aplikacji, urządzeniu i użytkowniku trafiają na serwery Google.
  2. Następnie Google sprawdza Twoje imię i nazwisko na liście osób, które według niej zapłacą za aplikację w Google Play. (Może także sprawdzić nazwę aplikacji na liście aplikacji, o których wie, że pobrałeś z Google Play)
  3. Jeśli okaże się, że pobrałeś (i zapłaciłeś) aplikację z Google Play, to ona odsyła, że ​​masz licencję, jeśli nie, oznacza to, że nie.

Oczywiście wszystko to odbywa się online, więc jeśli jesteś offline, to nie zadziała. Gdybym pisał aplikację, miałbym licznik, który pozwalałby osobie na korzystanie z niej 3 razy w trybie offline, zanim musiałbym przejść do trybu online w celu sprawdzenia licencji w celu powstrzymania tego, co się dzieje, w miejscu, w którym nie można grać offline. Oczywiście, jeśli ktoś zagłębi się w plik, w którym jest przechowywany licznik, może zmienić wartość z powrotem na 3 próby za każdym razem, gdy go użyje i nigdy nie będzie musiał płacić, ale to prawdopodobnie przekracza techniczne kompetencje większości użytkowników.

Arachid
źródło
co dzieje się w następującym scenariuszu: aplikacja płatna, która nie wdrożyła biblioteki sprawdzania licencji w swojej pierwszej wersji, ale zaimplementowała bibliotekę sprawdzania licencji w swojej drugiej wersji. Czy kupujący 1. wersji zostaną uznani za uwierzytelnionych użytkowników, gdy dokonają aktualizacji do 2. wersji?
Mehul Joisar