1. Préparez le produit et la licence
Commencez avec une licence verrouillée par nœud et une fonctionnalité d'exportation ordinaire. Ajoutez une utilisation mesurée uniquement une fois que le flux d'autorisation de base fonctionne.
Le quota compte les activations actuelles et est rendu à leur libération. Les licences ordinaires restent comptées hors ligne ; les licences flottantes rendent aussi le quota à l’expiration du bail.
- Copiez l’ID du produit dans Console > Produits. Ouvrez les clés publiques de signature du même produit et collez toutes les paires ID de clé/clé publique dans le code d’initialisation, en remplaçant YOUR_PRODUCT_ID, YOUR_KEY_ID et YOUR_PUBLIC_KEY. L’intégration rapide peut générer ce code. Aucun fichier de configuration n’est nécessaire ; le SDK utilise https://www.licentivo.com par défaut.
- Dans Intégration rapide, créez ou sélectionnez un produit. Activez une fonctionnalité nommée export dans sa politique et préparez une licence de test.
2. Installez le SDK
Installez le SDK 0.11.6 avec la commande suivante dans votre projet ou ajoutez la dépendance de compilation. Le gestionnaire de paquets récupère le SDK ; aucun ZIP source, aucune extraction manuelle ni aucun chemin local ne sont nécessaires.
gem install licentivo-sdk --version 0.11.63. Protéger une véritable exportation
Initialisez le SDK au démarrage ou lors de l’activation de votre logiciel. Lisez la clé client dans votre formulaire et transmettez l’ID produit et les clés approuvées. Gardez le client jusqu’à la fermeture. Placez RunFeature au point d’entrée métier réel et remplacez l’export par votre fonction.
# 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. Gardez le client en vie jusqu'à l'arrêt
Cet exemple de ligne de commande effectue une opération et se ferme. Dans une application de bureau, ouvrez un client au démarrage, appelez le rappel de fonctionnalité à partir de l'action d'exportation et fermez le client uniquement lorsque l'application se ferme.
Après l'activation, les démarrages ultérieurs peuvent laisser LICENTIVO_LICENSE_KEY vide et restaurer les informations d'identification privées sous le même utilisateur et le même emplacement de cache. Conservez ces informations d'identification dans le répertoire de données d'application utilisateur. La fermeture arrête les heartbeats et rend les sièges flottants ; la sortie normale ne doit pas désactiver un périphérique verrouillé par nœud.
L'accès hors ligne n'est disponible que lorsque la politique le permet et que la subvention signée reste valide. Une fonctionnalité expirée ou refusée doit rester bloquée. Les opérations mesurées nécessitent une connexion réseau.
Le bloc open_with_license possède le client. Conservez la boucle d'application pendant sa durée de vie et invoquez run_feature pour chaque action protégée. Ne fermez pas le client depuis un rappel professionnel. Les exceptions Ruby se propagent après que le SDK ait géré l'opération ayant échoué.
5. Exécutez et vérifiez le résultat
Copiez l’ID du produit dans Console > Produits. Ouvrez les clés publiques de signature du même produit et collez toutes les paires ID de clé/clé publique dans le code d’initialisation, en remplaçant YOUR_PRODUCT_ID, YOUR_KEY_ID et YOUR_PUBLIC_KEY. L’intégration rapide peut générer ce code. Aucun fichier de configuration n’est nécessaire ; le SDK utilise https://www.licentivo.com par défaut.
- Confirmez qu'une licence valide avec accès à l'exportation crée licensed-report.txt.
- Effacez LICENTIVO_LICENSE_KEY et réexécutez en utilisant le même compte utilisateur : les informations d'identification enregistrées doivent être restaurées.
- Définissez LICENTIVO_FEATURE sur une fonctionnalité absente de la licence et LICENTIVO_OUTPUT sur un nouveau nom de fichier. Le programme doit signaler un refus sans créer ce fichier.
- Testez un redémarrage hors ligne uniquement avec une autorisation signée autorisée et non expirée. Ne contournez pas une vérification de fonctionnalité ayant échoué après une erreur d’actualisation en arrière-plan.
$env:LICENTIVO_LICENSE_KEY = 'YOUR_LICENSE_KEY'
ruby main.rbLICENTIVO_LICENSE_KEY=YOUR_LICENSE_KEY ruby main.rbProblèmes d'intégration courants
Vérifiez l’ID produit, toutes les paires ID de clé/clé publique et la licence du client. Les clés publiques appartiennent au produit ; licences et identifiants des appareils sont distincts. Ne distribuez pas de clés de test ou de clés API de gestion.
Fonctionnalité refusée, limite d'appareils atteinte ou licence expirée : inspectez la licence et la stratégie dans la console, puis affichez l'erreur SDK au client. Une autorisation échouée ne doit pas appeler la fonction d'exportation.
RunFeature vérifie l'accès aux fonctionnalités ; la variante mesurée réserve et règle l'utilisation configurée. Utilisez un ID d'opération stable par tâche métier réelle et inspectez son résultat durable avant de récupérer une tâche interrompue.
Impossible de charger la licence : vérifiez que l'installation de gem et l'exécution du programme utilisent le même environnement Ruby. Pour une version source sous Windows, définissez LICENTIVO_CURL_ROOT et rendez la libcurl correspondante DLL disponible sur PATH.