Como funciona a "Verificação de licença de mercado" do Google Play?

23

Há cerca de um mês, comprei um jogo chamado Whale Trail durante uma venda no Google Play. Hoje, quando tentei jogar o metrô, ele solicitou a verificação da licença do jogo e, ao não fazê-lo (como não havia conexão com a internet no metrô), desligou o jogo. Quando cheguei em casa, dei uma olhada na guia de permissões do jogo e vi o seguinte:

Verificação de licença de mercado

Pode verificar se você possui uma licença para este aplicativo do Market

Parece que esse é um recurso incorporado ao Google Play. Então, minha pergunta é: como essa "verificação de licença" funciona? Com que frequência os aplicativos que usam esse telefone "recurso" em casa para verificar se, de fato, não sou um pirata sujo roubando os aplicativos desses desenvolvedores?

Yi Jiang
fonte
2
Eu não sou especialista nisso, então não vou responder, mas as informações estão aqui . O rápido e sujo: o aplicativo é comprado e o arquivo .apk é licenciado para você; ele passa pela rede para verificar a licença. É possível que a rede não estivesse disponível para você naquele momento e o desenvolvedor não armazenou em cache nada ou lidou com isso.
Doozer Blake
@DoozerBlake Então a resposta é - "Tão frequentemente quanto o desenvolvedor escolhe"? Eu acho que isso é aceitável como uma resposta
Yi Jiang

Respostas:

18

Você pode escolher quando e com que frequência deseja que seu aplicativo verifique sua licença e tenha controle total sobre como ele lida com a resposta, verifica os dados de resposta assinados e aplica controles de acesso.

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

Então, sim, basicamente sempre que o desenvolvedor quiser. Eu imagino que o momento mais comum para verificar é quando o aplicativo é aberto pela primeira vez.

Seu aplicativo não consulta o servidor de licenciamento diretamente, mas chama o cliente do Google Play pelo IPC remoto para iniciar uma solicitação de licença. Na solicitação de licença:

  • Seu aplicativo fornece: seu nome do pacote, um nonce que é usado posteriormente para validar qualquer resposta do servidor e um retorno de chamada sobre o qual a resposta pode ser retornada de forma assíncrona.

  • O cliente do Google Play coleta as informações necessárias sobre o usuário e o dispositivo, como o nome de usuário principal da conta do Google, IMSI e outras informações. Em seguida, ele envia a solicitação de verificação de licença ao servidor em nome do seu aplicativo.

  • O servidor do Google Play avalia a solicitação usando todas as informações disponíveis, tentando estabelecer a identidade do usuário com um nível de confiança suficiente. O servidor verifica a identidade do usuário em relação aos registros de compra do seu aplicativo e retorna uma resposta de licença, que o cliente do Google Play retorna ao seu aplicativo pelo retorno de chamada IPC.

Tão:

  1. As informações sobre o aplicativo, o dispositivo e o usuário são transferidas para os servidores do Google.
  2. O Google verifica seu nome com a lista de pessoas que ele sabe que pagaram pelo aplicativo no Google Play. (Também pode verificar o nome do aplicativo em uma lista de aplicativos que você sabe que você baixou do Google Play)
  3. Se for possível ver que você baixou (e pagou) o aplicativo do Google Play, ele envia de volta que você possui uma licença; caso contrário, informa o aplicativo que não é.

Obviamente, tudo isso é feito online; portanto, se você estiver offline, não funcionará. Se eu estivesse escrevendo o aplicativo, eu teria um contador para permitir que a pessoa o usasse off-line três vezes ou mais antes de ter que ficar on-line para obter a verificação da licença, a fim de impedir que algo aconteça com você onde você não pode jogar desligada. Obviamente, se alguém pesquisar no arquivo em que o contador está armazenado, poderá alterar o valor de volta para 3 tentativas toda vez que o usar e nunca precisar pagar, mas isso provavelmente está além da competência técnica da maioria dos usuários.

Amendoim
fonte
o que acontece no cenário a seguir, um aplicativo pago que não implementou a biblioteca de verificação de licença em sua primeira versão, mas implementou a biblioteca de verificação de licença em sua segunda versão. Os compradores da 1ª versão serão considerados usuários autenticados quando atualizarem para a 2ª versão?
Mehul Joisar