ServerManagedPolicy
Google がライセンス検証ライブラリで提供するデフォルトは、サーバーの応答に依存してライセンスの再検証間隔を決定します。これにより、永続的に数日ごとに再検証が必要になります。これはユーザーにとって煩わしいだけでなく、長期間接続されていないユーザーにとっては深刻な問題になる可能性があります。(数週間インターネットに接続できないことが予想されるユーザーから問い合わせがありました。これがこの質問の動機です。)
要約すると、次の 2 つのことを達成するアルゴリズムを探しています。
- に比べて接続要件が大幅に軽減され
ServerManagedPolicy
ます。 - 同レベルの著作権侵害対策を提供します。
この質問への回答として提案されているポリシー アルゴリズムは、Google のサーバーからの応答で提供される時間を無視し、代わりに約 1 か月の LICENSED 有効期限を使用し、数日ごとにライセンス チェックを試行します (有効期限を延長する場合)。 LICENSED 応答が受信されます)。
このアプローチは最初の目標を部分的に解決しますが、ユーザーがアプリを使用している間、月に 1 回接続する必要があるため、(少なくとも 1 人の) ユーザーにとっては機能しません。
次のアルゴリズムは最初の目標を達成しますが、2 番目の目標についてはわかりません。このアルゴリズムの弱点を指摘するコメント、または別のアプローチの提案を歓迎します。
- 最初の実行時に、ライセンス チェックを行い、完全な機能を提供する前に LICENSED 応答を要求します。受け取ったら、比較的短い有効期限を設定します (ただし、Google Play が提供する払い戻し期間よりも長く、現在は 15 分です)。また、それを超える数日間の猶予期間を登録してください。
- ライセンスの有効期限が切れると、アプリは再びチェックを開始します。接続に失敗した場合 (機内モードなど)、猶予期間が終了するまで引き続き機能します。
- 猶予期間の満了後、通常のアプリの機能を許可する前に、2 回目の LICENSED 応答を要求します。
- 2 番目の LICENSED 応答を受け取った後、アプリのすべての機能を永続的に有効にし、再度確認する必要はありません。
- いずれかの時点で UNLICENSED 応答を受信した場合は、すべての機能を永久に無効にします。(もちろん、ユーザーはすべてのアプリ データを削除することで、手順 1 に戻ることができます。)
追加のポイント:
- 最初のライセンス チェックを中止し、ライセンス チェックを行う前に返却期間の満了まで待つよう提案されました。最初の LICENSED 応答を要求する目的は、ライセンス チェックが失敗した後、ユーザーが単にアプリ プロセスを停止し、アプリ データを消去して、アプリを再起動する悪用を防ぐことです。(一度に 15 分間しか使用できない場合でも、アプリは価値を提供します。)
- 2 回目の LICENSED 応答を要求する目的は、buy-run-backup-return-restore エクスプロイトを回避することです。
- コールバック ライセンス チェックが良いアイデアかどうかを尋ねているわけではありません (これは、非推奨のコピー防止メカニズムの代わりに Google が提供しているものです)。また、著作権侵害対策に絶対確実なものはなく、Google のライセンス メカニズム全体を回避できることも承知しています (その場合、ポリシー アルゴリズムの設計に関するすべての問題は無関係です)。この質問の主なポイントは、他のポリシー( など
ServerManagedPolicy
) と比較した、上記のアルゴリズムの (私たちにとっての) 相対的なリスクと (ユーザーにとっての) 利点です。