私は Android アプリを構築し、In App Billing を統合しています。
ここでは、Google が推奨する IabHelper クラスを使用しています。
IabHelper のqueryInventoryAsync
メソッドを使用して価格などの利用可能な製品の情報を取得すると、適切に機能します (Google Play Developer Console で設定した製品の製品/価格情報を取得します)。
「管理対象」製品の購入をテストすると、2 つのエラーが発生します。
最初のエラーは、価格情報を正常に取得したばかりの製品を購入するために [購入] ボタンをタップしたときに発生し、Google Play から「エラー: このバージョンのアプリケーションは使用できません」という警告が表示されます。詳しくはヘルプセンターをご覧ください。
これをグーグルで検索すると、Google Play にアップロードされた apk のバージョン番号が、テストしている apk のバージョン番号と異なる場合、このようなエラーが発生するといういくつかの提案が得られます。ただし、このアラートが表示された後 (および [OK] をクリックした後) に、購入の試みが失敗したことをまったく通知されないのは困惑することです。
これにより、[購入] ボタンをもう一度タップして購入を再試行すると、2 番目のエラーが発生します。IabHelper では、一度に 2 つの非同期操作をアクティブにすることが許可されていないため、アプリがクラッシュします (アプリに失敗のアラートが表示されないため、最初に失敗した試行がキャンセルされることはありません。Google はこちらをお読みください)。
質問 1: 最初に失敗した購入の非同期操作をキャンセルする (そして応答できるようにアプリに警告する) ように、別のことを行う必要がありますか? 明らかに、バージョン番号が同期していることを確認しますが、これはどう見てもバグのようです。操作が失敗したときに取り消されないようにする必要があります。
質問 2: 通常、Android Studio からデバッグ モードで実行中にアプリ内課金をテストすることは可能ですか? つまり、デバイスを接続し、Android Studio で [デバッグで実行] を押して、ブレーク ポイントを使用してコードをステップ実行できますか? または、アプリ内課金は、Android Studio / デバッガーに接続していない場合にのみテストできますか? (これが不可能な場合、これは一種の非常識になりますが、私が読んだいくつかのことは、これが事実であることを示唆しています)。
ヒントをお寄せいただきありがとうございます。
編集: Google Play 購入にアップロードしたデバイスに同じ apk をインストールすると、問題なく動作することがわかりました。しかし、疑問が残ります: Android Studio デバッガーに接続している間、アプリ内課金をテストできないでしょうか?