Jak poprawnie zabezpieczyć aplikację korzystającą z zakupów w aplikacji i lokalnej bazy danych

Obecnie pracuję nad grą logiczną na Androida i po ukończeniu chciałbym mieć następujące funkcje:

Bezpłatne odtwarzanie (obsługiwane reklamy), więc wymagane jest aktywne połączenie internetowe (nie można odtworzyć, jeśli nie można wyświetlić reklam)Opcja zakupu w aplikacji do usuwania reklam i sprawdzania łącznościZakupy w aplikacji dla dodatkowych treści

Jednak zdaję sobie sprawę, że wiele pytań wynika z moich wymagań ...

Czy dobrym pomysłem jest posiadanie pojedynczej wersji i oferowanie opcji usuwania reklam za pomocą zakupu w aplikacji, a nie 2 wersji gry w Sklepie Play? Być może lepszym pomysłem jest posiadanie 2 oddzielnych aplikacji, ale w jaki sposób mogę udostępniać dane między 2? na przykład jeśli użytkownik kupi dodatkową zawartość w bezpłatnej wersji, a następnie zdecyduje się na zakup wersji bez reklam, chciałbym, aby treść, którą kupił w bezpłatnej wersji, była również dostępna w jego wersji płatnej.

Jakie są najlepsze praktyki, aby zagwarantować, że gra nie może zostać „zhakowana”, aby swobodnie uzyskać dodatkową zawartość? Rozumiem, że nowa zawartość nie powinna być dołączana do oryginalnej aplikacji i pobierana oddzielnie po dokonaniu zakupu, ale co mogę zrobić, aby uniemożliwić użytkownikowi, który kupił jakąś treść, swobodne rozpowszechnianie? W końcu „pobieranie dodatkowej zawartości” polega po prostu na kontaktowaniu się z serwerem w celu uzyskania danych, a następnie dodania ich do lokalnej bazy danych.

Jedynym sposobem, aby zobaczyć implementację wersji „bez reklam i odtwarzania offline” (bez posiadania 2 wersji odrębnych w sklepie Play), jest aktualizacja prostego pola w lokalnej bazie danych, ale nie wydaje się to sprytnym rozwiązaniem, ponieważ wtedy zaawansowany technicznie użytkownik może po prostu sam przełączyć ten bit, aby odblokować wersję bez reklam, jaki jest najlepszy sposób, aby temu zapobiec?

Dzięki!

p.s. Cóż, odpowiedzi nie leją ... Podnieś to pytanie, aby uzyskać lepszą widoczność, jeśli chcesz, aby odpowiedział

questionAnswers(1)

yourAnswerToTheQuestion