Visão geral do licenciamento

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

A verificação começa quando o app envia uma solicitação para um serviço hospedado pelo app cliente do Google Play. Depois disso, o app do Google Play envia uma solicitação ao servidor de licenciamento e recebe o resultado. O app do Google Play envia o resultado para seu app, 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 app inicia uma verificação de licença na License Verification Library 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 app 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 app e o usuário. Seu app 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 app, o SDK do Android disponibiliza o download de um conjunto de fontes de bibliotecas que podem ser incluídas no projeto do app: o pacote Google Market Licensing. A License Verification Library (LVL, na sigla em inglês) pode ser adicionada ao app. É ela que gerencia todas as comunicações com o serviço de licenciamento do Google Play. Com a LVL adicionada, o app 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 app 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 app 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 app.
  • O servidor do Google Play avalia a solicitação usando todas as informações disponíveis, tentando estabelecer a identidade do usuário para 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 app e retorna uma resposta de licença, que o cliente do Google Play retorna ao app por meio do callback da IPC.

Você pode escolher quando e com que frequência quer que o app 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 app 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 app e expõe a chave pública na página Serviços e APIs do app no Play Console. É necessário copiar a chave pública do Play Console e incorporá-la ao código-fonte do app. O servidor retém a chave privada internamente e a usa para assinar as respostas de licença nos apps publicados com a conta em questão.

Quando o app 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 app detecte respostas que foram adulteradas ou passaram por spoofing.

License Verification Library

O SDK do Android fornece o download de um pacote chamado Google Market Licensing, que inclui a License Verification Library (LVL, na sigla em inglês). A LVL simplifica muito o processo de adição do licenciamento ao app e ajuda a garantir uma implementação mais segura e robusta do seu app. A LVL fornece classes internas que processam 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 app 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 app. 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, por exemplo, os de rede.
LicenseCheckerCallback
A implementação gerencia o acesso ao app com base no resultado do processamento 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 app (se ele não tiver a licença).

Para ajudar você com os primeiros passos com uma Policy, a LVL oferece duas opções completas de implementações da Policy, 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 app enquanto o dispositivo está off-line (por exemplo, quando o usuário está em um avião). Para a maioria dos apps, o uso de ServerManagedPolicy é altamente recomendado.
StrictPolicy
Uma Policy restritiva que não armazena dados de resposta em cache e permite o acesso ao app 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 app de exemplo que mostra como a biblioteca deve ser integrada ao app e como o app 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 apps. Um ambiente de teste completo também está disponível no SDK. Assim, é possível desenvolver e testar a implementação do licenciamento nos apps antes de publicá-los, mesmo que você não tenha 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 apps publicados no Google Play. O serviço não foi projetado para permitir o controle do acesso a apps 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 app:

  • Um app 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 mais recente.
  • 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 app quando não há conexão de rede.
  • A segurança dos controles de licenciamento de app depende basicamente do 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 processamento da licença dependem de você. Seguir as práticas recomendadas nos documentos descritos a seguir pode ajudar a garantir que a implementação seja segura.
  • Adicionar o licenciamento a um app 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 sem custo financeiro, mas só faça isso se usar o serviço para fornecer arquivos de expansão de APK.

Substituição da Proteção contra cópias

O Google Play Licenciamento é um mecanismo flexível e seguro para controlar o acesso aos seus apps. 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 apps.

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