2

ServerManagedPolicyを使用したサンプルコードに従って、アプリケーションにAndroidライセンスを実装しました。

ライセンスチェッカーは正常に機能しますが、デバイスまたはエミュレーターにデータ接続がない場合、ライセンスコードは常にdontAllow()を返しますが、許可したいのですが。これを回避する方法を詳しく説明しているものが上のページに見つからないようです。

4

3 に答える 3

2

これはテストアカウントの使用に関する問題です。テストアカウントは1分後にキャッシュされた結果を期限切れにします(最小)

これはおそらく、サーバーがテストに与える応答をすべての可能性で変更でき、キャッシュの有効期限が切れるのを待ったり、ケースごとにキャッシュを強制的に更新したりしたくないためです。

于 2010-09-08T23:25:27.423 に答える
0
  1. サンプルアプリをMarketにアップロードします。プロファイルに変更を加えます。
  2. 数時間待ってください。その前に、市場から「ライセンス済み」のテスト結果が得られることはありません。
  3. 電話でテストするときは、アップロードしたものと同じAPKを使用してください。「latform-tools/adb install <file>.apk」コマンドを使用します
于 2012-08-19T06:14:44.570 に答える
0

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).

于 2019-03-05T16:22:08.227 に答える