ネットワーク タイムアウト状態で Google Play In-App Billing Serv{ice,er} V3 が返す応答ステータス コードはどれですか? これはすべての機能で統一されていますか?
6792 次
1 に答える
8
ここで私の発見を説明します。ホストのプラグを抜いて、フル機能の GP がインストールされた AVD (GP Store V3.10.10、GP Services 2.0.12、G Services Framework 4.1.2) でこれをテストしました。
- この
getPurchases()
メソッドは、可能であればキャッシュされた結果を返します (ここでは、サービス外のキャッシュについてではなく、getPurchasesの直接呼び出しについて話していることに注意してください)。もちろん、これは、ローカル データの損失のためにサービスが再初期化されている場合を除いて、ほとんど常にキャッシュされた結果を取得することを意味します。アプリケーションレベル。 - メソッドは、 20 秒の推定内部ネット タイムアウトの後
consumePurchase()
に整数値 6 (BILLING_RESPONSE_RESULT_ERROR
) を返します (したがって、結果コードが呼び出し元に表示されるまで少し時間が追加されます)。ここでは他のエラーコードが意味をなさないためBILLING_RESPONSE_RESULT_ERROR
、と説明されているにもかかわらず、これを疑っていました。Fatal error during the API action
残念ながら、致命的という言葉は、タイムアウトなどの一時的な状態には依然として不適切です。 getSkuDetails()
のように振る舞うようconsumePurchase()
です。更新getSkuDetails()
:ローカル サービス内のキャッシュされた情報にもアクセスできるという証拠があります。getBuyIntent()
項目が既にサービスに認識されている場合、接続がなくても問題なく動作するように見えます。これは、Hartok が空白の GP 購入画面を表示する理由を説明しています。接続なしで IAB V3 から購入インテントを取得しても問題ありません。
結論: アプリ内課金サービス V3 は、内部キャッシュと 20 秒のサーバー接続タイムアウトで動作するようです。ローカル キャッシュで解決できないサーバー通信エラーの場合、応答コード 6 が使用されます。
于 2013-02-12T10:10:09.867 に答える