ServerManagedPolicyを使用したサンプルコードに従って、アプリケーションにAndroidライセンスを実装しました。
ライセンスチェッカーは正常に機能しますが、デバイスまたはエミュレーターにデータ接続がない場合、ライセンスコードは常にdontAllow()を返しますが、許可したいのですが。これを回避する方法を詳しく説明しているものが上のページに見つからないようです。
ServerManagedPolicyを使用したサンプルコードに従って、アプリケーションにAndroidライセンスを実装しました。
ライセンスチェッカーは正常に機能しますが、デバイスまたはエミュレーターにデータ接続がない場合、ライセンスコードは常にdontAllow()を返しますが、許可したいのですが。これを回避する方法を詳しく説明しているものが上のページに見つからないようです。
これはテストアカウントの使用に関する問題です。テストアカウントは1分後にキャッシュされた結果を期限切れにします(最小)
これはおそらく、サーバーがテストに与える応答をすべての可能性で変更でき、キャッシュの有効期限が切れるのを待ったり、ケースごとにキャッシュを強制的に更新したりしたくないためです。
latform-tools/adb install <file>.apk
」コマンドを使用しますPlayストアの内部テストトラックのリリースでは、サーバーからの「許可」応答が成功した後、validityTimestampが実際に1分に設定されていることを確認できます。さらに調査すると、その1分間のキャッシュ期間がどこから来ているのかがわかります。サーバーによって明示的に設定されていません。これは実際にはlvl-libraryコードにあり、上記のように編集可能です。通常(本番リリースの場合)、サーバーは次のように「extras」のServerManagedPolicyクラスにvalidityTimestampを返します。
setValidityTimestamp(extras.get("VT"));
and here is the relevant part of what happens in that method:
private void setValidityTimestamp(String validityTimestamp) {
Long lValidityTimestamp;
try {
lValidityTimestamp = Long.parseLong(validityTimestamp);
} catch (NumberFormatException e) {
// No response or not parsable, expire in one minute.
lValidityTimestamp = System.currentTimeMillis() + MILLIS_PER_MINUTE;
}
I added some debugging code to see what the String parameter to this function was. It turns out to be a null String. So the server is returning nothing in the extras map for "VT". The response in the ServerManagedPolicy to such a non-parsable String is to make the validityTimestamp the current time plus one minute (MILLS_PER_MINUTE).