1. Siapkan produk dan lisensi
Mulailah dengan lisensi yang dikunci node dan fitur ekspor biasa. Tambahkan penggunaan terukur hanya setelah alur otorisasi dasar berfungsi.
Kuota menghitung aktivasi saat ini dan kembali setelah dilepas. Lisensi biasa tetap dihitung saat luring; lisensi mengambang juga mengembalikan kuota ketika sewanya berakhir.
- Salin ID produk dari Konsol > Produk. Buka kunci publik penandatanganan produk yang sama, lalu masukkan semua pasangan ID kunci/kunci publik ke kode inisialisasi untuk mengganti YOUR_PRODUCT_ID, YOUR_KEY_ID, dan YOUR_PUBLIC_KEY. Integrasi cepat juga dapat menghasilkan kode ini. Tidak perlu berkas konfigurasi; SDK memakai https://www.licentivo.com secara bawaan.
- Di Integrasi cepat, buat atau pilih produk. Aktifkan fitur bernama ekspor dalam kebijakannya dan siapkan lisensi pengujian.
2. Instal SDK
Instal SDK 0.11.6 dengan perintah berikut di proyek aplikasi Anda atau tambahkan dependensi build. Pengelola paket mengambil SDK; tidak perlu mengunduh dan mengekstrak kode sumber atau mengatur jalur lokal.
Kesalahan build asli biasanya menunjukkan hilangnya header C11 atau libcurl, arsitektur yang tidak cocok, atau target Windows yang salah. Inti asli Windows saat ini memerlukan GNU/MinGW; MSVC penerimaan tertunda.
cargo new licensed_app
cd licensed_app
cargo add licentivo@=0.11.6sudo apt-get update
sudo apt-get install build-essential libcurl4-openssl-dev libssl-dev pkg-configrustup toolchain install stable-x86_64-pc-windows-gnu --profile minimal
$env:LICENTIVO_CURL_ROOT = "C:/path/to/curl-mingw"
$env:PATH = "$env:LICENTIVO_CURL_ROOT/bin;$env:PATH"
cargo +stable-x86_64-pc-windows-gnu build3. Melindungi ekspor riil
Inisialisasikan SDK saat aplikasi dimulai atau diaktifkan. Baca kunci pelanggan dari formulir aktivasi, lalu berikan ID produk dan kunci tepercaya. Pertahankan klien sampai aplikasi ditutup. Letakkan run_feature pada operasi bisnis nyata dan ganti ekspor dengan fungsi Anda.
use licentivo::{Client, Error};
use std::{env, fs};
// BEGIN LICENTIVO PRODUCT
// Copy Product ID and all key ID/public key pairs from Console > Products > Signing public keys.
const PRODUCT_ID: &str = "YOUR_PRODUCT_ID";
const TRUSTED_KEYS_JSON: &str = r#"{"YOUR_KEY_ID":"YOUR_PUBLIC_KEY"}"#;
// END LICENTIVO PRODUCT
fn setting(name: &str, fallback: &str) -> String {
env::var(name).ok().filter(|value| !value.is_empty()).unwrap_or_else(|| fallback.into())
}
fn export_report(path: &str) -> Result<(), Error> {
// Replace this write with your existing export operation.
fs::write(path, "A report generated by the licensed application.\n")?;
Ok(())
}
fn run() -> Result<(), Error> {
// A GUI supplies the activation input. Later starts use an empty key.
let mut client = Client::open_product(
PRODUCT_ID, TRUSTED_KEYS_JSON,
&setting("LICENTIVO_LICENSE_KEY", ""),
)?;
let feature = setting("LICENTIVO_FEATURE", "export");
let 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))?;
}
println!("License OK: {feature} is available\nExport completed: {path}");
// Real app: keep client alive until shutdown. Drop returns floating seats;
// do not deactivate a device on a normal application exit.
Ok(())
}
fn main() {
if let Err(error) = run() { eprintln!("{error}"); std::process::exit(2); }
}
4. Biarkan klien tetap hidup sampai dimatikan
Contoh baris perintah ini melakukan satu operasi dan keluar. Dalam aplikasi desktop, buka satu klien saat startup, aktifkan fitur callback dari tindakan ekspor, dan tutup klien hanya saat aplikasi keluar.
Setelah aktivasi, permulaan selanjutnya dapat membiarkan LICENTIVO_LICENSE_KEY kosong dan memulihkan kredensial pribadi di bawah lokasi pengguna dan cache yang sama. Simpan kredensial tersebut di direktori data aplikasi pengguna. Penutupan menghentikan detak jantung dan mengembalikan kursi terapung; pintu keluar normal tidak boleh menonaktifkan perangkat yang terkunci node.
Akses offline hanya tersedia jika kebijakan mengizinkannya dan izin yang ditandatangani tetap valid. Fitur yang sudah habis masa berlakunya atau ditolak harus tetap diblokir. Operasi terukur memerlukan koneksi jaringan.
Pertahankan Klien yang dapat diubah dalam status aplikasi pemilik. Ini adalah Kirim tetapi bukan Sinkronisasi: pindahkan ke satu pekerja daripada berbagi panggilan bersamaan. Drop menghentikan pekerjaan latar belakang dan mengembalikan kursi mengambang. Close menghabiskan klien; pintu keluar normal mempertahankan pengikatan perangkat.
Kelola penggunaan perangkat lunak secara bersamaan dengan lisensi mengambang
5. Jalankan dan verifikasi hasilnya
Salin ID produk dari Konsol > Produk. Buka kunci publik penandatanganan produk yang sama, lalu masukkan semua pasangan ID kunci/kunci publik ke kode inisialisasi untuk mengganti YOUR_PRODUCT_ID, YOUR_KEY_ID, dan YOUR_PUBLIC_KEY. Integrasi cepat juga dapat menghasilkan kode ini. Tidak perlu berkas konfigurasi; SDK memakai https://www.licentivo.com secara bawaan.
- Konfirmasikan bahwa lisensi yang valid dengan akses ekspor menghasilkan licensed-report.txt.
- Hapus LICENTIVO_LICENSE_KEY dan jalankan kembali menggunakan akun pengguna yang sama: kredensial yang disimpan akan dipulihkan.
- Setel LICENTIVO_FEATURE ke fitur yang tidak ada dalam lisensi dan LICENTIVO_OUTPUT ke nama file baru. Program harus melaporkan penolakan tanpa membuat file tersebut.
- Uji mulai ulang offline hanya dengan izin bertanda tangan yang diizinkan dan belum kedaluwarsa. Jangan mengabaikan pemeriksaan fitur yang gagal setelah kesalahan penyegaran latar belakang.
$env:LICENTIVO_LICENSE_KEY = 'YOUR_LICENSE_KEY'
cargo +stable-x86_64-pc-windows-gnu runLICENTIVO_LICENSE_KEY=YOUR_LICENSE_KEY cargo runMasalah integrasi yang umum
Periksa ID produk, semua pasangan ID kunci/kunci publik, dan lisensi pelanggan. Kunci publik milik produk; lisensi dan kredensial perangkat bersifat terpisah. Jangan bagikan kunci uji atau API Key pengelolaan.
Fitur ditolak, batas perangkat tercapai, atau lisensi kedaluwarsa: periksa lisensi dan kebijakan di konsol, lalu tampilkan kesalahan SDK kepada pelanggan. Otorisasi yang gagal tidak boleh memanggil fungsi ekspor.
run_feature memeriksa akses fitur; varian terukur mencadangkan dan menyelesaikan penggunaan yang dikonfigurasi. Gunakan ID operasi yang stabil untuk setiap pekerjaan bisnis nyata dan periksa hasil yang tahan lama sebelum memulihkan pekerjaan yang terputus.
Kesalahan build asli biasanya menunjukkan hilangnya header C11 atau libcurl, arsitektur yang tidak cocok, atau target Windows yang salah. Inti asli Windows saat ini memerlukan GNU/MinGW; MSVC penerimaan tertunda.