1. Preparare il prodotto e la licenza
Inizia con una licenza con nodo bloccato e una normale funzionalità di esportazione. Aggiungi l'utilizzo misurato solo dopo il funzionamento del flusso di autorizzazione di base.
La quota conta le attivazioni correnti e viene restituita al rilascio. Le licenze ordinarie contano anche offline; quelle flottanti restituiscono la quota anche alla scadenza del lease.
- Copia l’ID prodotto da Console > Prodotti. Apri le chiavi pubbliche di firma dello stesso prodotto e inserisci tutte le coppie ID chiave/chiave pubblica nel codice di inizializzazione, sostituendo YOUR_PRODUCT_ID, YOUR_KEY_ID e YOUR_PUBLIC_KEY. L’integrazione rapida può generare il codice. Non serve un file di configurazione; l’SDK usa https://www.licentivo.com per impostazione predefinita.
- In Integrazione rapida, crea o seleziona un prodotto. Abilita una funzionalità denominata esportazione nella sua policy e prepara una licenza di prova.
2. Installare SDK
Installa SDK 0.11.6 eseguendo il comando seguente nel tuo progetto o aggiungendo la dipendenza di compilazione. Il gestore di pacchetti scarica SDK; non servono archivi sorgente, estrazione manuale o percorsi locali.
gem install licentivo-sdk --version 0.11.63. Tutelare un'esportazione reale
Inizializza l’SDK all’avvio o nel gestore di attivazione della tua applicazione. Leggi la chiave cliente dal modulo e passa ID prodotto e chiavi attendibili. Mantieni il client fino alla chiusura. Inserisci RunFeature nell’operazione reale e sostituisci l’esportazione con la tua funzione.
# 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. Mantenere il client attivo fino all'arresto
Questo esempio di riga di comando esegue un'operazione e termina. In un'applicazione desktop, apri un client all'avvio, richiama la funzione di callback dall'azione di esportazione e chiudi il client solo alla chiusura dell'applicazione.
Dopo l'attivazione, gli avvii successivi possono lasciare vuoto LICENTIVO_LICENSE_KEY e ripristinare la credenziale privata con lo stesso utente e percorso cache. Conserva le credenziali nella directory application-data dell'utente. La chiusura ferma i heartbeat e restituisce i posti fluttuanti; l'uscita normale non dovrebbe disattivare un dispositivo con nodo bloccato.
L'accesso offline è disponibile solo quando la policy lo consente e la concessione firmata rimane valida. Una funzionalità scaduta o negata deve rimanere bloccata. Le operazioni a consumo richiedono una connessione di rete.
Il blocco open_with_license possiede il client. Mantieni il ciclo dell'applicazione entro la sua durata e richiama run_feature per ogni azione protetta. Non chiudere il client dall'interno di una callback aziendale. Le eccezioni Ruby si propagano dopo che SDK ha gestito l'operazione non riuscita.
5. Esegui e verifica il risultato
Copia l’ID prodotto da Console > Prodotti. Apri le chiavi pubbliche di firma dello stesso prodotto e inserisci tutte le coppie ID chiave/chiave pubblica nel codice di inizializzazione, sostituendo YOUR_PRODUCT_ID, YOUR_KEY_ID e YOUR_PUBLIC_KEY. L’integrazione rapida può generare il codice. Non serve un file di configurazione; l’SDK usa https://www.licentivo.com per impostazione predefinita.
- Confermare che una licenza valida con accesso all'esportazione crei licensed-report.txt.
- Cancella LICENTIVO_LICENSE_KEY ed esegui nuovamente utilizzando lo stesso account utente: le credenziali salvate dovrebbero essere ripristinate.
- Imposta LICENTIVO_FEATURE su una funzionalità assente nella licenza e LICENTIVO_OUTPUT su un nuovo nome file. Il programma deve segnalare un rifiuto senza creare quel file.
- Testare un riavvio offline solo con una concessione firmata consentita e non scaduta. Non ignorare un controllo delle funzionalità non riuscito dopo un errore di aggiornamento in background.
$env:LICENTIVO_LICENSE_KEY = 'YOUR_LICENSE_KEY'
ruby main.rbLICENTIVO_LICENSE_KEY=YOUR_LICENSE_KEY ruby main.rbProblemi comuni di integrazione
Controlla ID prodotto, tutte le coppie ID chiave/chiave pubblica e la licenza del cliente. Le chiavi pubbliche appartengono al prodotto; licenze e credenziali dei dispositivi sono separate. Non distribuire chiavi di test o API Key di gestione.
Funzionalità negata, limite dispositivo raggiunto o licenza scaduta: controlla la licenza e la policy nella console, quindi mostra l'errore SDK al cliente. Un'autorizzazione fallita non deve richiamare la funzione di esportazione.
RunFeature controlla l'accesso alle funzionalità; la variante a consumo prenota e liquida l'utilizzo configurato. Utilizza un ID operazione stabile per un lavoro aziendale reale e controllane il risultato duraturo prima di ripristinare un lavoro interrotto.
Impossibile caricare il licenziativo: verificare che l'installazione di gem e l'esecuzione del programma utilizzino lo stesso ambiente Ruby. Per una build sorgente su Windows, imposta LICENTIVO_CURL_ROOT e rendi disponibile la libcurl corrispondente DLL su PATH.