1. Prepare o produto e licencie
Comece com uma licença bloqueada por nó e um recurso de exportação comum. Adicione o uso medido somente depois que o fluxo de autorização básico funcionar.
A cota conta as ativações atuais e retorna ao liberá-las. Licenças comuns continuam contando offline; licenças flutuantes também devolvem a cota quando a concessão expira.
- Copie o ID do produto em Console > Produtos. Abra as chaves públicas de assinatura do mesmo produto e insira todos os pares ID da chave/chave pública no código de inicialização, substituindo YOUR_PRODUCT_ID, YOUR_KEY_ID e YOUR_PUBLIC_KEY. A integração rápida pode gerar esse código. Não é necessário um arquivo de configuração; o SDK usa https://www.licentivo.com por padrão.
- Em Integração rápida, crie ou selecione um produto. Habilite um recurso denominado exportação em sua política e prepare uma licença de teste.
2. Instale o SDK
Instale o SDK 0.11.6 com o comando abaixo no seu projeto ou adicione a dependência de compilação. O gerenciador de pacotes obtém o SDK; não é preciso baixar e extrair código-fonte nem configurar caminhos locais.
gem install licentivo-sdk --version 0.11.63. Proteja uma exportação real
Inicialize o SDK ao iniciar ou ativar seu software. Leia a chave do cliente no formulário e passe o ID do produto e as chaves confiáveis. Mantenha o cliente até o encerramento. Coloque RunFeature na operação real e substitua a exportação pela sua função.
# frozen_string_literal: true
require 'licentivo'
# BEGIN LICENTIVO PRODUCT
# Copy Product ID and all key ID/public key pairs from Console > Products > Signing public keys.
PRODUCT_ID = 'YOUR_PRODUCT_ID'
TRUSTED_KEYS = {'YOUR_KEY_ID' => 'YOUR_PUBLIC_KEY'}.freeze
# END LICENTIVO PRODUCT
def setting(name, fallback)
value = ENV[name]
value.nil? || value.empty? ? fallback : value
end
def export_report(path)
# Replace this write with your existing export operation.
File.write(path, "A report generated by the licensed application.\n")
end
begin
# A GUI supplies the activation input. Later starts use an empty key.
Licentivo::Client.open_product(
PRODUCT_ID, TRUSTED_KEYS,
setting('LICENTIVO_LICENSE_KEY', '')
) do |client|
feature = setting('LICENTIVO_FEATURE', 'export')
path = setting('LICENTIVO_OUTPUT', 'licensed-report.txt')
if setting('LICENTIVO_METERED', '0') == '1'
client.run_metered_feature(feature, 1, setting('LICENTIVO_OPERATION_ID', '')) { export_report(path) }
else
client.run_feature(feature) { export_report(path) }
end
puts "License OK: #{feature} is available\nExport completed: #{path}"
end # Real app: keep the owning block/client alive until shutdown.
rescue StandardError => error
warn error.message
exit 2
end
4. Mantenha o cliente ativo até o desligamento
Este exemplo de linha de comando executa uma operação e sai. Em um aplicativo de desktop, abra um cliente na inicialização, invoque o retorno de chamada do recurso da ação de exportação e feche o cliente somente quando o aplicativo for encerrado.
Após a ativação, iniciações posteriores podem deixar LICENTIVO_LICENSE_KEY vazio e restaurar a credencial privada no mesmo usuário e local de cache. Mantenha essa credencial no diretório application-data do usuário. O fechamento interrompe os heartbeats e devolve os assentos flutuantes; a saída normal não deve desativar um dispositivo bloqueado por nó.
O acesso off-line está disponível somente quando a política permitir e a concessão assinada permanecer válida. Um recurso expirado ou negado deve permanecer bloqueado. As operações medidas requerem uma conexão de rede.
O bloco open_with_license pertence ao cliente. Mantenha o loop do aplicativo dentro de seu tempo de vida e invoque run_feature para cada ação protegida. Não feche o cliente dentro de um retorno de chamada comercial. As exceções Ruby se propagam depois que SDK trata a operação com falha.
5. Execute e verifique o resultado
Copie o ID do produto em Console > Produtos. Abra as chaves públicas de assinatura do mesmo produto e insira todos os pares ID da chave/chave pública no código de inicialização, substituindo YOUR_PRODUCT_ID, YOUR_KEY_ID e YOUR_PUBLIC_KEY. A integração rápida pode gerar esse código. Não é necessário um arquivo de configuração; o SDK usa https://www.licentivo.com por padrão.
- Confirme se uma licença válida com acesso de exportação cria licensed-report.txt.
- Limpe LICENTIVO_LICENSE_KEY e execute novamente usando a mesma conta de usuário: a credencial salva deve ser restaurada.
- Defina LICENTIVO_FEATURE como um recurso ausente da licença e LICENTIVO_OUTPUT como um novo nome de arquivo. O programa deve reportar uma negação sem criar esse arquivo.
- Teste uma reinicialização offline apenas com uma concessão assinada permitida e não expirada. Não ignore uma verificação de recurso com falha após um erro de atualização em segundo plano.
$env:LICENTIVO_LICENSE_KEY = 'YOUR_LICENSE_KEY'
ruby main.rbLICENTIVO_LICENSE_KEY=YOUR_LICENSE_KEY ruby main.rbProblemas comuns de integração
Confira o ID do produto, todos os pares ID da chave/chave pública e a licença do cliente. As chaves públicas pertencem ao produto; licenças e credenciais de dispositivos são separadas. Não distribua chaves de teste ou API Keys de gerenciamento.
Recurso negado, limite de dispositivo atingido ou licença expirada: inspecione a licença e a política no console e mostre o erro SDK ao cliente. Uma autorização com falha não deve chamar a função de exportação.
RunFeature verifica o acesso ao recurso; a variante medida reserva e liquida o uso configurado. Use um ID de operação estável por trabalho comercial real e inspecione seu resultado durável antes de recuperar um trabalho interrompido.
Não é possível carregar o licentivo: verifique se a instalação do gem e a execução do programa utilizam o mesmo ambiente Ruby. Para uma compilação de origem no Windows, defina LICENTIVO_CURL_ROOT e disponibilize a libcurl DLL correspondente em PATH.