2013-02-05 5 views
5

Google Play In-App Billing Serv {ice、er} V3は、ネットワークタイムアウトの状態で返される応答ステータスコードを教えてください。これはすべての機能の中で統一されていますか?Android:どのような応答コードでアプリ内課金V3がタイムアウトしたときに戻るのですか?

+0

私も同様の問題に直面しました。 問題を確認してください。 http://stackoverflow.com/questions/16495510/iab-error-you-already-owned-this-item –

+0

@YanLinAung私は「同様の問題は、」依存するように、1つはあなたの問題を見ているかどうかを推測します視点。 ;) –

答えて

7

ここで私の知見を説明します。私は、完全に機能したGP(GPストアV3.10.10、GPサービス2.0.12、Gサービスフレームワーク4.1.2)をインストールしたAVDで、ホストのプラグを引っ張ってテストしました。可能(ここではサービスのキャッシュ外けどgetPurchasesの直接コールの話ないていることに注意してください)場合

  • getPurchases()方法は、キャッシュされた結果を返します。もちろん、これは、ローカルデータが失われたためにサービスが再初期化されている場合を除き、キャッシュされた結果がほとんど常に得られることを意味します。アプリケーションレベル。
  • consumePurchase()メソッドは、想定される内部ネットタイムアウトが20秒後に整数値6(BILLING_RESPONSE_RESULT_ERROR)を返します(したがって、結果コードが呼び出し側に表示されるまで少し時間を追加します)。他のエラーコードがここで意味をなさないので、私はのメッセージをFatal error during the API actionと記述しているにもかかわらず、これを疑っていました。残念ながら、という致命的な単語は、タイムアウトなどの一時的な条件にはやや不適切です。
  • getSkuDetails()は、consumePurchase()のように動作するように見えます。 更新getSkuDetails()がローカルサービス内のキャッシュされた情報にもアクセスできるという証拠があります。
  • サービスに既に項目が知られている場合、接続なしでgetBuyIntent()が正常に動作しているように見えます。これは、Hartokが空白のGP購入画面を見ている理由を説明しています。IAB V3からの購入意図を得ることは問題ありません。

結論:In-App Billing Service V3は、内部キャッシュと20秒のサーバー接続タイムアウトで動作するようです。ローカル・キャッシュが解決できないサーバー通信エラーの場合、応答コード6が使用されます。

+0

ローカルキャッシュとサーバーの同期がとれていないとどうなりますか?たとえば、getPurchasesが自分の所有するアイテムを返さないにもかかわらず、「あなたはすでにこのアイテムを所有しています」というダイアログを一貫して取得していますか? – VicVu

+0

@Veeあなたはypuが自分で書いたアプリを指していますよね?その場合は、Googleのサンプルコードを使用しますか? (ヒント:堅牢ではありません) "あなたはすでにこれを所有しています"という対話がどこから来たのか分かりません。 Google Playオンラインの部分で表示されている場合は、端末のGoogle Playサービスキャッシュに問題がある可能性があります。そのサービスのローカルデータを消去します。対話がGoogle PlayのIABのサンプルコードから発信された場合、それは別の話になります。私が思い出す限り、有効期限のタイムスタンプに基づいてキャッシングを追加する必要があります。必要に応じて詳細を投稿してください。 –

+0

@Vee One [Google PlayのIABサンプルコードに関する堅牢性の欠如について](http://stackoverflow.com/a/14935976/1856738);それは別の側面に関連しますが、私はそのような重要なエラー状態をチェックしないコードを信頼しません。 –

関連する問題