5

Android ライセンス ポリシーで LICENSE_OLD_KEY に対応したいと考えています。これに対応していないため、変更するつもりでしたがServerManagedPolicy、私が知る限り、またはメソッドを探しているようPolicy.LICENSEDです:Policy.NOT_LICENSEDprocessServerResponse

public void processServerResponse(int response, ResponseData rawData) {

    // Update retry counter
    if (response != Policy.RETRY) {
        setRetryCount(0);
    } else {
        setRetryCount(mRetryCount + 1);
    }

    if (response == Policy.LICENSED) {
        // Update server policy data
        Map<String, String> extras = decodeExtras(rawData.extra);
        mLastResponse = response;
        setValidityTimestamp(extras.get("VT"));
        setRetryUntil(extras.get("GT"));
        setMaxRetries(extras.get("GR"));
    } else if (response == Policy.NOT_LICENSED) {
        // Clear out stale policy data
        setValidityTimestamp(DEFAULT_VALIDITY_TIMESTAMP);
        setRetryUntil(DEFAULT_RETRY_UNTIL);
        setMaxRetries(DEFAULT_MAX_RETRIES);
    }

    setLastResponse(response);
    mPreferences.commit();
}

ポリシーに存在しないため、LICENSE_OLD_KEY の応答コードを知りたいです。

public static final int LICENSED = 0x0100;
public static final int NOT_LICENSED = 0x0231;
public static final int RETRY = 0x0123;

hereを見ましたが、名前と値がリストされている場所が見つかりません。

LicenseValidator にサーバー応答コードのリストがあることがわかりますが、ポリシーのコードと一致しません。

    // Server response codes.
private static final int LICENSED = 0x0;
private static final int NOT_LICENSED = 0x1;
private static final int LICENSED_OLD_KEY = 0x2;
private static final int ERROR_NOT_MARKET_MANAGED = 0x3;
private static final int ERROR_SERVER_FAILURE = 0x4;
private static final int ERROR_OVER_QUOTA = 0x5;

private static final int ERROR_CONTACTING_SERVER = 0x101;
private static final int ERROR_INVALID_PACKAGE_NAME = 0x102;
private static final int ERROR_NON_MATCHING_UID = 0x103;
4

2 に答える 2

5

少し考えて、AlertDialog を使用して、Google Play サーバーから返された理由コードを携帯電話に表示してみることにしました。これが私が見つけたものです:

開発者コンソール プロファイルで LICENSED を選択すると、 のように 256 という数値が返されましたPolicy.LICENSED

NOT_LICENSED を選択すると、数値 561 が返されましたPolicy.NOT_LICENSED

最後に LICENSED_OLD_KEY を選択すると、 と同じ 256 が返されましPolicy.LICENSEDた。

そのため、LICENSED_OLD_KEY は使用されなくなったか、LICENSED と LICENSED_OLD_KEY の区別がないように見えます。Google がドキュメントhere で提供している情報を考えると、これは少し混乱します。

ちなみに、アプリをアンインストールして、開発者コンソールでさまざまなオプションを選択しようと何度か試みましたが、結果は常に同じでした。

于 2012-09-06T14:10:34.033 に答える
0

あなたが見ているコードは参照実装にすぎません。LICENSED_OLD_KEY 状況を詳細に処理する方法を知ることはできません。ドキュメントでは、現在のアプリへのアクセス、または現在のアプリからのサーバー データへのアクセスを制限し、ユーザーに更新して最新バージョンを使用するように依頼することを提案しています。これらすべての状況に対処できるようにするために参照実装が提供できるものはほとんどありません。LICENSED_OLD_KEY を個別に処理するようにコードを変更できますし、変更する必要があります。

LICENSED_OLD_KEY は引き続き LicenseValidator.java でサーバー レスポンスとして処理され、「OLD_KEY」は Google Play サーバー処理の古いバージョンではなく、アプリの古いバージョンを参照するため、「使用されなくなった」という兆候はありません。

于 2012-12-18T15:43:04.860 に答える