Como proteger corretamente um aplicativo que usa compras no aplicativo e banco de dados local

Atualmente estou desenvolvendo um jogo de quebra-cabeça para Android e gostaria de ter os seguintes recursos quando concluído:

Gratuito para jogar (com suporte de anúncios), para que seja necessária uma conexão ativa com a Internet (não é possível reproduzir se não for possível exibir anúncios)Opção de compra no aplicativo para remover anúncios e verificação de conectividadeCompras no aplicativo para conteúdo adicional

No entanto, percebo que há muitas perguntas que resultam das minhas necessidades ...

É uma boa ideia ter uma única versão e oferecer a opção de remover anúncios por meio de uma compra no aplicativo, em vez de ter duas versões do jogo na Play Store? Talvez seja melhor ter dois aplicativos separados, mas como eu poderia compartilhar dados entre os dois? por exemplo. Se um usuário comprar conteúdo adicional na versão gratuita e decidir comprar a versão sem anúncios, eu gostaria que o conteúdo que ele comprasse na versão gratuita também estivesse disponível em sua versão paga.

Quais são as melhores práticas para garantir que o jogo não pode ser "hackeado" para obter o conteúdo adicional livremente? Entendo que o novo conteúdo não deve ser incluído no aplicativo original e ser baixado separadamente depois que a compra é feita, mas o que posso fazer para evitar que um usuário que tenha comprado algum conteúdo não possa redistribuí-lo livremente? Afinal, "baixar conteúdo adicional" é simplesmente entrar em contato com um servidor para obter dados e adicioná-los ao banco de dados local.

A única maneira que vejo para implementar a versão 'sem anúncios e jogar offline' (sem ter duas versões distintas na Play Store) é atualizar um campo simples no banco de dados local, mas isso não parece ser uma solução inteligente, porque O usuário experiente em tecnologia pode simplesmente mudar este bit sozinho para desbloquear a versão sem anúncios. Qual é a melhor maneira de evitar isso?

Obrigado!

p.s. Bem, as respostas não estão fluindo ... Aumente esta questão para mais visibilidade se você quiser que ela seja respondida!

questionAnswers(1)

yourAnswerToTheQuestion