2013-05-11 2 views
5

enter image description here Googleのアプリ内課金サービスで小さなゲームを開発しています。IABエラーあなたは既にこのアイテムを所有しています

GoogleのサンプルプロジェクトのTrivial Driveを参照しています。 Google Playの購入アイテムの接続中断についてお聞きします。

通常のインターネット接続で購入フローを起動すると問題ありません。

私はこのようにテストしました。 購入フローが開始されるとすぐに、インターネット接続を切断します(ルータのLANのプラグを抜く)。 約2-3分後、接続タイムアウトが表示されます。 商人口座では、送金が行われます。 しかし、私がすべての所有アイテムを照会すると、このIDの所有アイテムはありません(最近購入されました)。 また、この商品をもう一度購入しようとすると、「この商品を既に所有しています」というエラーが表示されます。

enter image description here

どのように私はこの問題を解決することができますか? 誰でもこの問題のように遭遇しましたか?

お願いします。すべてのコメントと助けに感謝します。ありがとう。

+1

Googleの販売者とPlayアカウントがGoogle側で完全に同期していないとは思わない。これが事実ならば、それは広く知られているでしょう。ただし、[GP IAB V3 Serviceがローカルキャッシングを使用する](http://stackoverflow.com/a/14830007/1856738)ということで、あなたのアプリはこの点で堅牢である必要があります。 - 残念ながら、あなたが記述していることはそれ自体では問題ではないので、あなたがこの点に関して特有の問題を記述しない限り、唯一の可能性のある提案は、これに関してあなたのアプリを頑強にすることです。 –

+0

私の不適切な質問のために申し訳ありません。あなたの提案をありがとう。 –

+0

同じ問題があります。タイムアウトエラーが発生したWi-Fi接続の問題が発生しましたが、「あなたは既にこのアイテムを所有しています」というエラーが発生しました。これで、アプリが起動時にクラッシュすることになりました。 Googleアカウントからトークンをクリアするにはどこに行けばいいですか? (これは、StackOverflow 0.oによるとどこかで発生するダッシュボードがあるはずです) – NukeouT

答えて

1

Google IAPフローでは、購入後にconsumePurchase() APIに電話する必要があります。

getPurchases() APIを呼び出すと、purchaseTokenとともに購入リストが返されます。次に、購入した消費されていない製品のために、それらを反復してconsumePurchase() APIを呼び出す必要があります。

さらに詳しくは、referenceをご覧ください。

+0

Vinay S Shenoyにお返事ありがとうございます。 アイテムが消費されていないことを表現できませんでした。 彼らはただ遊ぶためのゲームパッケージです。 このメソッドを呼び出すと、skuList.addAll(inv.getAllOwnedSkus(itemType)); 私は所有していた製品IDを常に返しました。 しかし、上記の場合、最近購入したIDは含まれていません。 Googleが既に購入済みのID(Money is transfered)を所有アイテムリストに返さない理由が不思議でした。 –

+0

Hmm .. IAP APIを使っていませんでした。 'getPurchases()'を呼び出すとAPIに返されますか? –

+0

説明を明確にするために、Google IABでは、購入後に「consumePurchase()」を呼び出す必要があります。第一に、いくつかのアイテムは消費されません。第二に、宇宙飛行士が合図されるべきかどうかという問題は、Googleが提供した説明にもかかわらず、ケースによって異なります。 –