2

問題

私はアプリ課金 v3 に実装しようとしていますが、1 つのことを除いてすべてがうまく機能しています。アイテムを消費または購入した後、在庫を更新するために要求呼び出しを行います。ただし、結果は、アイテムが追加または削除された新しいインベントリではなく、常に古いインベントリが生成されます。

これは予想される動作であり、回避策がありますが、それでもかなり面倒です。

回避策

私の回避策は、アプリ内課金用の特別な「ハンドラー/ラッパー」の外にあります。この「ハンドラー」のライフサイクルは単純です。

1. create (new call):新しいオブジェクトを作成IabHelperし、publickey でいくつかの魔法を行います

2. startUp:startSetupからメソッドを呼び出し、IabHelper成功するとフラグを設定します。成功すると、インベントリの更新呼び出しが行われます。

3. close: IabHelper オブジェクトを破棄します

このメソッドが呼び出され、結果が成功の場合、ハンドラーはonQueryInventoryFinishedメソッドを実装し、このメソッドで指定された Inventory 引数を使用して、ローカルの Inventory オブジェクトが更新されます。

したがって、基本的に、私が作成したハンドラーには、セットアップを成功させるための Inventory とフラグの 2 つのフィールドがあります。ハンドラーには、たとえばアクティビティへのコールバック用のカスタムメイドのインターフェイスもあります。

さらに 2 つの方法がありますbuy and consume

アイテムを正常に購入または消費した後、現在の在庫を更新したいのですが、前述のように機能しません。

私の回避策: ローカルの Inventory オブジェクトから手動で購入を削除または追加します。(これは購入または消費メソッドで行う必要があります。)

より良い方法?

これを行うためのより良い「より受け入れられる」方法はありますか?

4

0 に答える 0