Visão geral do licenciamento

O Google Play Licensing é um serviço baseado em rede que permite que um aplicativo consulte um servidor confiável de licenciamento do Google Play para determinar se o usuário atual do dispositivo tem a licença do aplicativo. O serviço de licenciamento é baseado na capacidade do servidor de licenciamento do Google Play de determinar se um usuário está licenciado para usar um determinado aplicativo. No Google Play, um usuário é considerado licenciado se for um comprador registrado do aplicativo.

A verificação começa quando o aplicativo envia uma solicitação para um serviço hospedado pelo aplicativo cliente do Google Play. Depois disso, o aplicativo Google Play envia uma solicitação ao servidor de licenciamento e recebe o resultado. O aplicativo Google Play envia o resultado para seu aplicativo, o que pode permitir ou impedir o uso.

Observação: se uma versão de um app estiver em faixas de teste fechadas ou abertas, todos os usuários autorizados a fazer o download e instalar o app serão considerados usuários licenciados. Para saber mais, consulte Usar faixas de teste para receber feedback antecipado dos usuários.

Figura 1. O aplicativo inicia uma verificação de licença na biblioteca License Verification e no cliente do Google Play, que gerencia a comunicação com o servidor do Google Play.

Observação: antes, era possível testar um aplicativo fazendo upload de uma versão de "rascunho" não publicada. Essa funcionalidade não está mais disponível. Em vez disso, é necessário publicar o app nas faixas de teste fechadas ou abertas. Para saber mais, consulte Aplicativos de rascunho não são mais compatíveis.

Para identificar corretamente o usuário e determinar o status da licença, o servidor precisa de informações sobre o aplicativo e o usuário. Seu aplicativo e o cliente do Google Play trabalham juntos para reunir as informações, que são passadas para o servidor.

Para ajudar a adicionar o licenciamento ao aplicativo, o SDK do Android disponibiliza o download de um conjunto de fontes de bibliotecas que podem ser incluídas no projeto do aplicativo: o pacote Google Market Licensing. A biblioteca License Verification (LVL, na sigla em inglês) é uma biblioteca que pode ser adicionada ao aplicativo e que gerencia todas as comunicações com o serviço de licenciamento do Google Play. Com a LVL adicionada, o aplicativo pode determinar o status de licenciamento do usuário atual simplesmente chamando um método e implementando um callback que receba a resposta de status.

O aplicativo não consulta o servidor de licenciamento diretamente, mas chama o cliente do Google Play por IPC remota para iniciar uma solicitação de licença. O que acontece na solicitação de licença:

  • Seu aplicativo fornece o nome do pacote, um valor de uso único usado posteriormente para validar a resposta do servidor e um callback em que 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, o IMSI e outros dados. Em seguida, ele envia a solicitação de verificação de licença ao servidor em nome do 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. Em seguida, o servidor verifica a identidade do usuário em relação aos registros de compra do aplicativo e retorna uma resposta de licença, que o cliente do Google Play retorna ao aplicativo por meio do callback de IPC.

Você pode escolher quando e com que frequência quer que o aplicativo verifique a licença. Além disso, você tem controle total sobre como ele gerencia a resposta, verifica os dados de resposta assinados e aplica os controles de acesso.

Durante uma verificação de licença, o aplicativo não gerencia conexões de rede nem usa APIs relacionadas a licenciamento na plataforma Android.

As respostas de licenças são seguras

Para garantir a integridade de cada consulta de licença, o servidor assina os dados de resposta usando um par de chaves RSA compartilhado exclusivamente entre você e o servidor do Google Play.

O serviço de licenciamento gera um único par de chaves para cada aplicativo e expõe a chave pública na página Serviços e APIs do aplicativo no Play Console. É necessário copiar a chave pública do Play Console e incorporá-la ao código-fonte do aplicativo. O servidor retém a chave privada internamente e a usa para assinar as respostas de licença nos aplicativos publicados com a conta em questão.

Quando o aplicativo recebe uma resposta assinada, ele usa a chave pública incorporada para verificar os dados. Com o uso da criptografia da chave pública no serviço de licenciamento, é possível que o aplicativo detecte respostas que foram adulteradas ou passaram por spoofing.

Biblioteca Licensing Verification

O SDK do Android fornece o download de um pacote chamado Google Market Licensing, que inclui a biblioteca License Verification (LVL, na sigla em inglês). A LVL simplifica muito o processo de adição do licenciamento ao aplicativo e ajuda a garantir uma implementação mais segura e robusta. A LVL fornece classes internas que gerenciam a maioria das operações padrão de uma consulta de licença, como entrar em contato com o cliente do Google Play para iniciar uma solicitação de licença e verificar e validar as respostas. Ela também expõe interfaces que permitem que você insira facilmente códigos personalizados para definir a política de licenciamento e gerenciar o acesso conforme necessário. As principais interfaces da LVL são:

Policy
A implementação determina se o acesso ao aplicativo será permitido com base na resposta de licença recebida do servidor e em outros dados disponíveis, como de um servidor de back-end associado ao aplicativo. Se necessário, a implementação pode avaliar os vários campos da resposta da licença e aplicar outras restrições. Ela também permite gerenciar o processamento de verificações de licença que resultam em erros, como erros de rede.
LicenseCheckerCallback
A implementação gerencia o acesso ao aplicativo com base no resultado do gerenciamento feito pelo objeto Policy na resposta de licença. Ela pode gerenciar o acesso de qualquer maneira necessária, incluindo a exibição do resultado da licença na IU ou o direcionamento do usuário à compra do aplicativo (se ele não for licenciado).

Para ajudar você a dar os primeiros passos com uma Policy, a LVL oferece duas opções completas de implementações de , que podem ser usadas sem modificação ou adaptadas às suas necessidades:

ServerManagedPolicy
Uma Policy flexível que usa configurações fornecidas pelo servidor de licenciamento para gerenciar o cache de resposta e o acesso ao aplicativo enquanto o dispositivo está off-line (como quando o usuário está em um avião). Para a maioria dos aplicativos, o uso de ServerManagedPolicy é altamente recomendado.
StrictPolicy
Uma Policy restritiva que não armazena dados de resposta em cache e permite o acesso ao aplicativo somente quando o servidor retorna uma resposta licenciada.

A LVL está disponível para download como um pacote do SDK do Android. O pacote inclui a LVL e um aplicativo de exemplo que mostra como a biblioteca deve ser integrada ao aplicativo e como o aplicativo deve gerenciar os dados de resposta, a interação com a IU e as condições de erro.

As fontes da LVL são fornecidas como um projeto de biblioteca do Android, o que significa que você pode manter um único conjunto de fontes e compartilhá-lo em vários aplicativos. Um ambiente de teste completo também está disponível no SDK. Assim, você pode desenvolver e testar a implementação do licenciamento nos aplicativos antes de publicá-los mesmo se não tiver acesso a um dispositivo físico.

Requisitos e limitações

O Google Play Licensing foi criado para permitir que você aplique controles de licença aos aplicativos publicados no Google Play. O serviço não foi projetado para permitir o controle do acesso a aplicativos que não são publicados no Google Play ou que são executados em dispositivos que não oferecem o cliente do Google Play.

Veja alguns pontos que precisam ser considerados ao implementar o licenciamento no aplicativo:

  • Um aplicativo só poderá usar o serviço se o cliente do Google Play estiver instalado em um dispositivo host com o Android 1.5 (API de nível 3) ou uma versão posterior.
  • Para concluir uma verificação de licença, o servidor de licenciamento precisa estar acessível pela rede. Você pode implementar comportamentos de armazenamento em cache de licenças para gerenciar o acesso ao aplicativo quando não houver conexão de rede.
  • A segurança dos controles de licenciamento de aplicativo depende basicamente do próprio design da implementação. O serviço oferece os componentes básicos que permitem verificar com segurança o licenciamento, mas a aplicação e o controle da licença dependem de você. Seguir as práticas recomendadas nos documentos a seguir pode ajudar a garantir que a implementação seja segura.
  • Adicionar o licenciamento a um aplicativo não afeta o funcionamento dele em um dispositivo que não oferece o Google Play.
  • Você pode implementar os controles de licenciamento em um app gratuito, mas só faça isso se usar o serviço para fornecer arquivos de expansão do APK.

Substituição para proteção contra cópia

O Google Play Licensing é um mecanismo flexível e seguro para controlar o acesso aos seus aplicativos. Ele substitui o mecanismo de proteção contra cópias (indisponível) que era oferecido pelo Google Play e oferece maior potencial de distribuição para seus aplicativos.

Com o licenciamento, é possível migrar para um modelo baseado em licença que pode ser aplicado em todos os dispositivos com acesso ao Google Play. O acesso não está vinculado às características do dispositivo host, mas ao seu aplicativo disponível no Google Play (por meio da chave pública do app) e à política de licenciamento definida por você. O aplicativo pode ser instalado e gerenciado em qualquer dispositivo em qualquer armazenamento, incluindo um cartão SD.

Embora nenhum mecanismo de licença possa impedir completamente todos os usos não autorizados, o serviço de licenciamento permite controlar o acesso para a maioria dos tipos de uso normal em todos os dispositivos compatíveis, bloqueados ou desbloqueados.

Para começar a adicionar o licenciamento ao seu aplicativo, acesse Configurar para o licenciamento.