ライセンスのハートビートとオフライン検証
どちらの設定もライセンス ポリシーに属しますが、オンラインでサーバーに接続する頻度、接続せずに使用を継続できる時間など、異なる質問に答えます。
ハートビート間隔: 検証する頻度
ハートビート間隔 (秒) を次のように設定します。 600, SDK は、実行中におよそ 10 分ごとにハートビートを送信します。成功するたびに最新のルールが取得され、ローカル ライセンス キャッシュが更新されます。
600 ~ 86400 秒を入力します。入力してください 0 スケジュールされたハートビートを無効にします。アプリケーションは引き続き手動で検証または更新できます。スケジュールを設定すると、0 ~ 10% のランダムな遅延が追加されます。間隔が 600 秒を下回ることはありません。
有効なキャッシュを持つデバイス限定ライセンスの場合、タイマーが無効になっていても、起動時にバックグラウンドでアクセスが復元され、オンラインで更新されます。オンライン専用ライセンスとフローティングライセンスは、サーバーの確認を待ちます。
オフライン許可: サーバーなしで実行できる時間
オフライン モードには 3 つの選択肢があります。ハートビート間隔は変わりません。
- 指定された期間を許可する
- 24 時間の許可の場合、署名済みキャッシュは、最後に成功したオンライン チェックから最大 24 時間持続します。アプリは、その時間内であれば切断やサーバーの一時的な停止が発生しても機能します。その後、オンライン検証が成功する必要があります。
- オフラインフォールバックは許可されません
- 起動はサーバーに正常に到達する必要があります。ディスク キャッシュは失敗したリクエストをバイパスできません。実行中に取得された有効期間の短いシグネチャは、長くても持続します。
max(10, 心跳间隔)秒。アプリは機能の権限を検証し、チェックし続ける必要があります。 - 永続的なオフライン アクセスを許可する
- 既存のローカル署名は、ネットワーク障害時も含めて長期間使用できます。 30 日間のライセンスは 30 日後に期限切れになります。永久的なオフライン使用によって、期限付きライセンスが永久になるわけではありません。
API は offline_mode はそれぞれこれら 3 つの選択肢を表します limited、none、permanent。固定のオフライン利用枠により、offline_seconds は 1 ~ 31536000 秒です。他の 2 つのモードには 0 を使用します。
これらの組み合わせはどのように動作するのでしょうか?
| ハートビート/オフライン設定 | 実際の動作 |
|---|---|
| 10分 / 24時間 | オンラインで 10 分ごとに検証します。オフライン。最後のチェックが成功してから最大 24 時間継続します。 |
| 10分 / 永久オフライン | 引き続き 10 分ごとにハートビートを試行し、成功に関するルールを更新し、到達できない場合は有効な署名を使用します。 |
| 0 / 永久オフライン | 有効なキャッシュがあれば、起動にスケジュールされたリクエストは必要ありません。明示的な検証または更新は引き続きサーバーに接続します |
| 0/24時間 | スケジュールされたハートビートはありませんが、キャッシュの有効期限はまだ切れています。アプリは検証をスケジュールする必要があります。ハートビートを無効にしても、オフライン許容範囲は延長されません。 |
オフライン許容値はハートビート間隔よりも長くしてください。ハートビートが 1 時間ごとに発生しますが、オフライン状態が 1 分間だけの場合、署名は次のハートビートの前に期限切れになります。アプリは個別に検証する必要があります。
ポリシーの変更により既存のライセンスが更新されますか?
はい。ポリシーを保存すると、デバイスまたはシートの制限、機能、使用制限、ライセンス モデル、メンテナンス、およびバージョン境界が、リンクされた取り消されていないすべてのライセンスにアトミックに同期されます。それぞれを選択してポリシーを再度適用する必要はなくなりました。
同期では、各ライセンスの期間タイプ、有効日数、最初のアクティベーション、有効期限、顧客、使用済みユニット、および個別のメンテナンス延長が保存されます。ポリシー期間のタイプは将来のライセンスにのみ影響します。既存の 30 日間ライセンスが永久ライセンスに変わることはありません。
デバイス バインド ライセンスとフローティングライセンスの切り替え中にアクティブなデバイスまたはセッションが残っている場合、または新しい制限が現在の使用量を下回っている場合、保存するとリターンが返されます。 ACTIVE_DEVICES_CONFLICT、ポリシーもリンクされたライセンスも部分的に更新されません。競合するデバイスを解放し、再度保存します。
保存が成功すると、関連付けられた古いライセンスと新しいライセンスの両方が、次に成功したアクティベーション、検証、またはハートビートで新しいルールを採用し、SDK キャッシュを新しい署名で置き換えます。同じ Idempotency-Key を再試行しても、元のリクエストの結果が返されます。
オフライン デバイスは、既存の署名済みルールを引き続き使用します。再接続だけではキャッシュは更新されません。リクエストは成功する必要があります。接続が回復すると、アプリはアクティブに更新できます。
選択したライセンスを別のポリシーに移動するには、[ライセンス] ページでライセンスを選択し、[ポリシーを適用] で移動をプレビューします。現在のリンクされたポリシーを編集する場合は、保存するだけで自動的に同期されます。
明示的なオンライン更新
これらのメソッドは、永続的なオフライン使用やハートビートの無効化でも、常にサーバーを試行します。成功すると署名が更新されます。ネットワーク障害が発生すると、更新エラーが報告されますが、それ以外の場合は有効なキャッシュが保持されます。明示的な取り消しまたは解放によってクリアされます。
| 言語 | 呼び出し方 |
|---|---|
| Go | client.RefreshOnline(ctx) |
| Java | client.refreshOnline() |
| C | ln_refresh_online(client) |
| C++ | client.RefreshOnline() |
| C# | await client.RefreshOnline() |
| Python | client.refresh_online() |
| JavaScript | await client.refreshOnline() |
成功したリフレッシュは、1 つのアクティベーション API リクエストとしてカウントされます。ポリシーの変更により、以前に無効にされていたハートビートが有効になった場合は、言語の StartHeartbeat を呼び出してスケジュールを開始します。オフラインのデバイスは、取り消しやリリースのアップデートを受け取ることができません。