Adquirir Licença de App – Instruções
Pré-requisitos
- AndroidPIT App Center 1.5 ou superior
- Android versão 1.6 ou superior
- AndroidPIT Licensing Library
- Android License Verification Library (LVL)
- Eclipse Android Development Tools (ADT)
Você já está usando LVL?
Se você já está usando o Android License Verification Library, implementar a AndroidPIT Licensing Library será muito fácil.
1.
Faça o download do AndroidPIT Licensing Library e adicione-o ao seu projeto.
2.
Altere as seguintes duas definições de variáveis de
private LicenseCheckerCallback mLicenseCheckerCallback;
|
para
private IAndroidPitLicenseCheckerCallback mLicenseCheckerCallback;
|
3.
Altere a criação do verificador de
mChecker = new LicenseChecker(
|
para
mChecker = new AndroidPitLicenseChecker(
|
4.
Altere a definição de seu listador (exemplo)
class MyLicenseCheckerCallback implements LicenseCheckerCallback
|
para
class MyLicenseCheckerCallback implements IAndroidPitLicenseCheckerCallback
|
5.
Altere o tipo de errorCode parâmetro no applicationError método de
public void applicationError(ApplicationErrorCode errorCode)
|
para
public void applicationError(AndroidPitLicenseCheckCode errorCode)
|
e expanda o controle de erros com os códigos de resposta do AndroidPIT (ver abaixo).
Isso é tudo! A chamada do verificador e o allow() e dontAllow() o método de implementações de devolução de chamada não precisam ser alterados.
No Quick Run
O AndroidPIT Licensing Library é muito similar ao Android License Verification Library (LVL) do Google. Para o usar o AndroidPIT Licensing Library, adicione o Android License Verification Library (LVL) e o AndroidPIT Licensing Library ao seu projeto. Em seu método onCreate(), crie um instância de AndroidPitLicenseChecker e forneça uma instância de uma classe que implemente a interface IAndroidPitLicenseCheckerCallback. Adicionalmente, você solicita uma chave de licença, a qual nós providenciaremos para você em seu perfil de desenvolvedor no website do AndroidPIT. Um exemplo de uma atividade deve se parecer com isso:
import android.app.Activity;
|
Em complemento à verificação de uma licença válida em AndroidPIT, você pode facilmente permitir o AndroidPIT Licensing verificar no Android Market, também. Para fazê-lo, adapte o construtor de chamada do AndroidPitLicenseChecker para conseguir tanto a política do Google com a chave pública do Google. Para todos os outros passos de configuração do LVL, por favor, consulte a documentação LVL.
/**
|
En Detail
O sistema de Licensing do AndroidPIT está baseado na Android License Verification Library (LVL) criada pelo Google. Ele proporciona a capacidade de verificar a validade dos apps que foram comprados através do App Center do AndroidPIT. Um requisito também é a conexão ao servidor de licença do AndroidPIT através da Internet. Ademais, o usuário final necessita ter uma conta válida no AndroidPIT.
Com a ajuda do AndroidPIT Licensing Library, seu aplicativo será verificado através do App Center se o usuário final está em possessão de uma licença válida para executar o app. A verificação de validade acontece toda vez que uma aplicação inicia-se, mas o mais cedo uma vez por dia ou quando existe disponível uma conexão internet. Nesse meio tempo um valor em cache é retornado a partir do último pedido (leve em conta que o período de tempo em que o cache é válido pode mudar a qualquer momento).
Passo a passo
Este guia passo a passo é baseado no fato de que você está usando o Eclipse ADT. Caso você esteja usando outras ferramentas de desenvolvimento, você talvez será solicitado a fazer mais alguns passos.
Faça o download da AndroidPIT Licensing Library e da Android License Verification Library (LVL) e adicione-as como projetos do Eclipse. Para usar a AndroidPIT Licensing Library, é requerida, pelo menos, a versão 4 do Android API, a qual foi criada com o Android 1.6. Crie uma nova aplicação Android e adicione o androidpit-licensing-lib em preferências em android como uma biblioteca dependente ao projeto da aplicação. Por favor, verifique se a biblioteca aponta corretamente para a Android License Verification Library (LVL).
Meu projeto mostra símbolos não resolvidos ou não consigo compilar meu app.
Por favor, verifique os caminhos para o Google LVL e para a AndroidPIT Licensing Library em Preferências em seu Projeto Android. Eles devem corresponder aos caminhos no seu sistema de arquivos.
As configurações para a AndroidPIT Licensing Library devem parecer com isso, correspondendo aos seus caminhos:
Como eu faço para instalar a verificação de licença em meu código?
Para permitir que a Licensing Library verifique se uma licença é valida no App Center do AndroidPIt, instancie no método onCreate() de sua atividade uma instância da classe MyLicenseCheckerCallback. O construtor espera uma instância do contexto que normalmente é a atividade em si. O código resultante deve ser assim:
mLicenseCheckerCallback = new MyLicenseCheckerCallback();
|
Ademais, o contrutor requer informações sobre o nome do pacote de seu app e a chave pública de codificação base64, os quais nós providenciamos para você em seu perfil de desenvolvedor no AndroidPIT.
Como sou notificado pelo servidor de licença?
A licença é verificada chamando checkAccess() na instância AndroidPitLicenseChecker. O método requer um objeto de callback que implemente a interface IAndroidPitLicenseCheckerCallback. Fica a seu critério implementar esta classe e preenchê-la com um código que corresponda às suas necessidades. O método allow() será chamado dentro da Licensing Library para notificá-lo sobre a validação com sucesso da licença do usuário. Em outro caso, dontAllow() é chamado. Adicionalmente, o método applicationError() informa-lhe sobre erros que possam acontecer durante a verificação da licença. Você tem total controle de ações que podem acontecer nesses três métodos.
class MyLicenseCheckerCallback implements IAndroidPitLicenseCheckerCallback
|
Como faço para verificar adicionalmente uma licença no Android Market?
Em complemento à verificação contra nosso sistema de licensing, nós providenciamos uma integração de fácil uso da Android License Verification Library (LVL) do Google. Para integrá-la, basta adicionar sua política de LVL e a chave pública ao construtor de nosso AndroidPitLicenseChecker. A verificação de licença acontecerá dentro do código da biblioteca de licença. Se a verificação de licença contra o Google tiver sucesso, você será diretamente notificado pelo objeto callback através do método allow() que você escreveu alguns minutos atrás. Respostas negativas resultarão em uma solicitação adicional aos servidores do AndroidPIT Licensing. Somente no caso destas chamadas falharem é que você receberá uma resposta negativa da Licensing Library.
Este exemplo vai orientá-lo para o exemplo do Google API.
mChecker = new AndroidPitLicenseChecker(
|
Como faço para testar diferentes mensagens de erro do servidor de licenças?
Na página da licença de seu perfil de desenvolvedor do AndroidPIT, você pode definir um código de resposta que será enviado para o servidor de licenças. Isto é útil se você quiser testar se uma aplicação responde corretamente às mensagens de erro de nosso servidor de licenças. Para realizar isso, apenas selecione o valor apropriado na lista abaixo. Em seguida, o servidor de licença sempre responderá com o código de resposta selecionado se você está logado com sua conta de desenvolvedor em seu dispositivo de teste.
Como faço para desabilitar o armazenamento no cache do resultado do App Center?
O App Center armazena o resultado da última solicitação por pelo menos um dia ou até que o dispositivo móvel consiga contactar nosso servidor de licenças através da Internet. Para desabilitar esse armazenamento no cache, você pode habilitar o modo debug no verificador de licença. Para fazê-lo, digite o comando setDebug(true). Isto irá desabilitar o cache de todas os pedidos enviados ao App Center. Não se esqueça de desligar o modo debug antes de publicar seu app.
O que acontece se o usuário não estiver logado no App Center?
Se nenhuma credencial ou credenciais inválidas forem armazenadas no App Center, a biblioteca exibirá um caixa de diálogo pedindo o e-mail e a senha do usuário do AndroidPIT.
Como eu posso me assegurar que o pedido de licença chega no servidor de licenças?
A AndroidPIT Licensing Library contém a classe AndroidPitSignedLicenseChecker. Esta classe fornece a possibilidade de verificar se um pedido chegou ao servidor de licença ou não. Para assegurar-se de que o servidor de licenças inicia a resposta de licença usando a chave privada do desenvolvedor do app. A biblioteca valida os dados recebidos com uma assinatura usando o AndroidPitLicenseingResponseValidator e comparando o envio do Salt no pedido com o Salt encontrado nos dados da resposta. Por favor, considere que este mecanismo não fornece qualquer cache do status da licença. Qualquer resposta deve ser calculada no servidor de licença pelo pedido de dados dado. Caso o usuário não tenha qualquer conexão com o servidor de licenças, a biblioteca responde com o seguinte: ERROR_NOT_CONNECTED.
Um exemplo de uso do AndroidPitSignedLicenseChecker é semelhante a isto:
AndroidPitSignedLicenseChecker mChecker;
|
Posso fornecer meu próprio validador de licença? Eu quero verificar a validade de resposta pessoalmente.
Sim, isso é possível. Por favor, implemente a Interface ILicensingResponseValidator e forneça uma instância da classe implementadora ao AndroidPitSignedLicenseChecker. Esta classe terá que implementar dois métodos. O getSalt() tem que retornar um integer, o qual será usado com um Salta na validação da verificação da licença. Este Salt deve ser armazenado durante o pedido para poder verificar contra o Salt de retorno na resposta se esta verificação é desejada. O método checkResponse() deve validar a resposta de dados e retornar um AndroidPitLicenseCheckCode.NOT_LICENSED em caso de falha. Se a validação ocorrer com sucesso, o código de resposta do servidor tem que ser retornado. Como um modelo de implementação, você pode consultar AndroidPitLicensingResponseValidator da AndroidPIT Licensing Library.
Meu projeto não encontra a enumeração de.androidpit.AndroidPitLicenseCheckError.
A enumeração foi renomeada para de.androidpit.AndroidPitLicenseCheckCode.
Como faço para criar uma PublicKey baseada em uma cadeia Base64?
Como você pode ter percebido, nós fornecemos uma chave pública como uma cadeia codificada em Base64. Com o fim de verificar a assinatura da resposta de dados, você será solicitado a converter essa cadeia (string) em um objeto PublicKey. O código seguinte mostrará a você como realizar isso.
/**
|
AndroidPIT Licensing Library
Se você estiver usando o antigo licenciamento da biblioteca Android Market (Package com.android.vending.licensing), use a seguinte versão de licenciamento da biblioteca AndroidPIT:
AndroidPIT Licensing Library Version 1.3
Se usa a nova biblioteca Google Play (Package com.google.android.vending.licensing), use a seguinte versão de licenciamento da biblioteca AndroidPIT:
AndroidPIT Licensing Library Version 2.0
- Meu projeto mostra símbolos não resolvidos ou não consigo compilar meu app.
- Como eu faço para instalar a verificação de licença em meu código?
- Como sou notificado pelo servidor de licença?
- Como faço para verificar adicionalmente uma licença no Android Market?
- Como faço para testar diferentes mensagens de erro do servidor de licenças?
- Como faço para desabilitar o armazenamento no cache do resultado do App Center?
- O que acontece se o usuário não estiver logado no App Center?
- Como eu posso me assegurar que o pedido de licença chega no servidor de licenças?
- Posso fornecer meu próprio validador de licença? Eu quero verificar a validade de resposta pessoalmente.
- Meu projeto não encontra a enumeração de.androidpit.AndroidPitLicenseCheckError.
- Como faço para criar uma PublicKey baseada em uma cadeia Base64?