アプリに LVL を実装しました。最初に、開発者アカウント設定で「LICENSED」へのテスト応答を設定しました => すべて正常に動作します。私はこの答えを受け取ります。
テスト応答を「NOT_LICENSED」に変更すると、開発者アカウントで値を変更してから 2 時間後でも、アプリで「LICENSED」という結果が得られます。
この問題を解決する方法はありますか?
アプリに LVL を実装しました。最初に、開発者アカウント設定で「LICENSED」へのテスト応答を設定しました => すべて正常に動作します。私はこの答えを受け取ります。
テスト応答を「NOT_LICENSED」に変更すると、開発者アカウントで値を変更してから 2 時間後でも、アプリで「LICENSED」という結果が得られます。
この問題を解決する方法はありますか?
ご存知のように、すでに1つのコメントに書き込んでいるように、ServerManagedPolicyにはキャッシュがあります。つまり、肯定的な応答を受け取った後は、それが有効である限り、この応答が取得されます。接続している場合でも、最後の肯定応答の有効期間中、アプリはライセンスサーバーに接続しません。キャッシングはオフラインで使用するだけでなく、時間のかかるネットワーククエリを回避するためにも使用されます。
すべきことは次のとおりです。ServerManagedPolicyの代わりに
mChecker = new LicenseChecker(this,//
new ServerManagedPolicy(this,
new AESObfuscator(SALT,getPackageName(),
deviceId)), //
BASE64_PUBLIC_KEY // The public licensing key.
);
StrictPolicyを使用する
mChecker = new LicenseChecker(this, new StrictPolicy(), BASE64_PUBLIC_KEY);
それが機能するかどうか試してみてください。テストが終了したら、元に戻して、ユーザーがServerManagedPolicyのキャッシュから利益を得ることができるようにします。