Niestety dla swoich klientów, jest to niemożliwe. Jest no API lub cokolwiek innego do Google Play, gdzie można uzyskać czas, w którym aplikacja została kupiona.
Wiem, że istnieje android-publisher API w rzeczywistości, jednak nie oferuje żadnej funkcji, aby to sprawdzić.
Funkcje, których chcesz używać, nie są dostępne publicznie publiczna i są używane wyłącznie przez Playstore wewnętrznie!
Obejścia które można zrobić:
1. Get czas aplikacja została zainstalowana
Na pierwszym uruchomieniu można sprawdzić to i odblokuj funkcje.
Warning: Ten system może być nadużywane przez zmianę czasu na urządzeniu
long installed = context
.getPackageManager()
.getPackageInfo(context.getPackageName(), 0)
.firstInstallTime;
2. daje użytkownikom darmowe klucze
Można dać każdemu użytkownikowi kto korzysta z aplikacji atm za darmo kluczem pocztą lub powiadomieniem push
3. Odblokuj zakup InApp teraz
publikowania aktualizacji aplikacji, który otwiera zakup InApp za darmo.Po kilku tygodniach możesz wprowadzić nową wersję za niższą cenę i odblokować funkcje tak, jakby twoi obecni klienci kupili twoje rozszerzenie.
Być może uda ci się to zhakować, jeśli używasz jakiegoś stałego magazynu.
W przypadku SharedPreferences przy pierwszym uruchomieniu sprawdź jedno z preferencji, używając SharedPreferences.contains()
. Jeśli zawiera, aplikacja musi być już zainstalowana. Jeśli nie, ustaw inną preferencję, która oznacza użytkownika jako nowego i ustaw jeszcze jedną, aby nie sprawdzać za każdym razem.
To może działać tylko wtedy, gdy preferencja nie ma wartości "domyślnej", nie jestem do końca pewna, czy ustawienie wartości domyślnej w xml spowoduje oznaczenie jej jako zawartą.
Możesz zrobić coś podobnego, jeśli masz jakieś aktywa, które zostaną przeniesione na SD lub podobne jednorazowe ustawienia. Po prostu sprawdź, czy jest już zrobione, zanim zrobisz to za pierwszym razem.
Jeśli używasz SQLite DB, możesz zwiększyć wersję DB i oznaczyć jako "paid" w onUpgrade(), jeśli pochodzi z bieżącej wersji (lub wcześniejszej).
Istnieje jednak kilka pułapek. Na przykład, jeśli poprzedni płatny klient całkowicie odinstalował przed zainstalowaniem nowej wersji lub jeśli jest na nowym urządzeniu. Z tego powodu należy:
4. Zapewnienie wsparcia
W około FAQ lub części aplikacji i na pierwszym odcinku nowej wersji ustawić support adres poczty których klienci mogą korzystać, jeśli mają jakiekolwiek problemy, ponieważ nowe funkcje nie zostały dla nich odblokowane.
Mogą dostarczyć każdy dowód (rachunek) na ich zakup.
Jak powiedziałem, te pomysły są obejścia, ale ja nie znam żadnego „oficjalnego” sposób sprawdzić, aplikacja zainstalować to uaktualnienie lub wstępnej instalacji.
Najlepszym rozwiązaniem może być połączenie tych czterech elementów.
FYI: Ja otworzył funkcji Zapytanie/pomysłu w Google Cloud Connect dla prac, które można głosować: https://connect.googleforwork.com/ideas/9392 (Można głosować tylko jeśli masz płatnego Google Konto Buisiness)
Mam nadzieję, że to ci pomoże chociaż trochę.
Najdziwniejsze jest to, że jeśli udzielę wsparcia, użytkownik nie musi dostarczać dowodu zakupu. Potrzebuję tylko ich adresu e-mail konta Google; następnie mogę ręcznie wyszukać ich odbiór w sekcji Zarządzania zamówieniami w Konsoli programisty Google Play i uzyskać pełną historię tych rachunków.Potrzebuję tylko API do przeszukiwania moich zamówień pocztą e-mail, a wtedy będę miał wszystko, czego potrzebuję. A Google wyraźnie _ ma takie API, ponieważ mogę używać go ręcznie w konsoli GPS Dev. (Może uda mi się go zeskanować?) –
@DanFabulich Wiem, że istnieje takie API w istocie, ale nie jest to ** publiczne ** dostępne! Ten interfejs API https://developers.google.com/android-publisher/api-ref/purchases/voidedpurchases/list nie oferuje żadnej funkcji do sprawdzenia. Jedyną opcją jest zrobienie tego ręcznie (patrz edycja) –
@DanFabulich OFC można napisać przeszukiwacz, który przeszukuje wszystko z konsoli, ale wykonanie tego w pytaniu zniszczyłoby granice tej odpowiedzi –