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.
![](https://developer.android.com/static/images/google/play/licensing/licensing_arch.png?authuser=5&hl=pt)
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 deServerManagedPolicy
é 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.