アプリ内課金デモ - Androidクラス
以下のAndroidクラスは、アプリ内課金デモの一部です:
クラス
| AndroidInAppProduct | ストアに登録された商品。 |
| AndroidInAppTransaction | 外部アプリストアにおけるトランザクションに関する情報を保持します。 |
| AndroidInAppPurchaseBackend | 外部ストアと通信する。 |
androidjni.cpp およびInAppPurchase.java | Google Playの課金システムとC++との間の通信。 |
アプリ内課金のデモ - 基底クラスを確認してください
AndroidInAppProduct
AndroidInAppProduct には、購入プロセスを初期化するための purchase() メソッドが追加されています。
AndroidInAppTransaction
AndroidInAppTransaction は、AndroidInAppPurchaseBackend 内で purchaseSucceeded()、purchaseFailed()、checkFinalizationStatus() を使用して作成されます。
AndroidInAppTransaction には、新しいパラメータと戻り値の型が追加されています。このクラスには finalize() 関数があり、InAppPurchase.java 内で、消費型(Consumable)およびロック解除型(Unlockable)の商品を、承認対象または消費対象として分別します。
AndroidInAppPurchaseBackend
AndroidInAppPurchaseBackend は、InAppPurchase.java との間で呼び出しを行ったり受け取ったりします。このクラスは、アプリケーションのバックエンドコンポーネントの 1 つです。
初期化
ストアページに商品情報を表示します。
- AndroidInAppPurchaseBackend は、InAppStore::setupBackend() から呼び出されます。
- 初期化時、AndroidInAppPurchaseBackend はコンストラクタの呼び出しにおいて、Contextおよび自身へのポインタを Java に渡し、initialize() 関数を使用して Google Play ストアへの接続を初期化します。
- 接続に成功すると、androidjni は registerReady() を呼び出し、InAppStore に ready() シグナルを送信するとともに、queryProducts() 関数を起動して購入可能なアイテムの情報を取得します。
- クエリが完了すると、productQueryDone() シグナルが発信され、アイテムの情報がアプリケーションのストアページに表示されます。
購入
アプリケーションのストアページで商品の一つをタップすると、AndroidInAppProduct::purchase() を経由してpurchaseProduct()関数が呼び出されます。これにより、JavaメソッドlaunchBillingFlow()が呼び出され、ユーザーに対してGoogle Playの決済フローが開かれます。
InAppPurchase.java および androidjni.cpp
AndroidInAppPurchaseBackend はInAppPurchase.java に対して直接呼び出しを行い、androidjni からの Java 呼び出しを受け取ります。デモアプリケーションは、QJniObject を使用して Java 関数と通信します。
「Google Play 課金ライブラリの統合」、「QJniObject 」、および「QJniEnvironment 」も参照してください 。
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.