最近のアクセス:
ページ
履歴
バックリンク
In-App Purchase サンプル - My Kitchen
GeneXus で開発したスマート デバイス アプリケーションで、
StoreAPI 外部オブジェクト (X Evolution 3)
を使用して
In-App Purchase
(アプリ内課金) を使用する方法を紹介します。
ここでは、「one-time-service」と呼ばれる製品を扱うシンプルな例を見てみます。この製品は、1 回購入すると購入したユーザーのすべてのデバイスで使用できます。
iOS Store Kit フレームワーク
では「Non-consumable (非消耗型)」、
Android In-App Billing サービス
では「In-App unmanaged (アプリ内非管理商品)」と呼ばれています。
さまざまな料理のレシピを提供するアプリケーションがあります。すべてのユーザーが無料で利用可能な公開版レシピがいくつか含まれており、これに、新しいレシピのグループを購入するための機能を組み込みます。レシピを購入したユーザーは、いつでも閲覧できるようになります。また、有償で購入可能な新しいレシピグループは、いつでも追加、変更、削除できます。
購入と製品に関する情報をアプリケーションに保存しておくことが重要になります。この場合:
レシピごとに製品 ID を割り当てます。この ID を基に、レシピを閲覧するために購入する必要があるストア製品を判断します。公開版レシピには「General」という値を割り当てて区別します。
購入手続きが完了すると、「ユーザー ID と購入済み製品」というリレーションが保存されます。レシピ一覧を読み込む前に、この情報が確認されます。確認されると、購入済みのレシピがすべて表示されます。
購入可能な製品情報のデータベーステーブルの管理も行います。このテーブルを使用して、購入可能な製品 (ユーザーがまだ購入していない製品) の一覧を作成します。主な目的は、有償の新しいレシピグループをいつでも追加できるようにすることです。
この機能の実装方法
GeneXus で開発を始める前に、プラットフォームストアに対してアプリケーションの In-App Purchase (アプリ内課金) を設定します。
iOS アプリケーションで In-App Purchase を設定する方法
Android アプリケーションで In-App Billing を設定する方法
まず、必須トランザクションの
Recipes
、
PurchasesInfo
、
AvailableProducts
を定義します。
注
:
RecipePurchased プロシージャー
は、レシピが公開版 (「General」) かどうか、またはユーザーが関連製品を購入済みかどうかをチェックします。
注
:
PurchaseExpiration 項目属性
は、この標準サンプルで何もしませんが、開発者に管理されているサブスクリプションのシナリオをシミュレートするのに使用できます。
注
:
ProductPurchased プロシージャー
は、以前ユーザーが該当製品を購入したことがあるかどうかをチェックします。
データベースには、各レシピに関連付けられている
製品 ID (Product Identifier)
が必要です。「General」という値は、レシピが公開版であることを示します。公開版のレシピは、アプリケーションの初回利用時から閲覧可能になります。
製品 ID
は、プラットフォームストアでアプリケーションの In-App Purchase (アプリ内課金) について定義した製品 ID (Product ID) を表す文字列値です。
また、
AvailableProducts テーブル
に、有償製品の情報を読み込む必要があります。これらの値は、有償のレシピグループを新たに追加する際に変更できます。関連付いた
製品 ID (Product Identifier)
は、(前のポイントで説明したとおり) 事前にプラットフォームストアで設定しておく必要があります。
さらに、WorkWithDevicesRecipes パターンインスタンスで
Recipes
リストのフィルタを設定する必要があります。
RecipeIsPurchased = True
という条件を追加します。初回実行時に、購入履歴がない場合は、公開版 (「General」) のレシピだけが表示されます。また、購入した
Recipes
の詳細を見ることもできます。
次に、 [
Get More
] アクションを選択すると、購入したことがない有償レシピ一覧を掲載したパネルが表示されます。レシピごとに [
Get Recipes
] アクションがあり、このアクションによって購入手続きが実行されます。ここでは、Meat Recipes (お肉料理レシピ) グループを購入してみましょう。
購入手続きが完了したら、ユーザーが今後このレシピグループを随時閲覧できるように、
PurchasesInfo テーブル
にユーザーと製品の情報を保存する必要があります。これで、今後、レシピを一覧表示したときに、新たに購入したレシピも表示されるようになります。また、購入可能な製品の中に、購入したグループが表示されなくなります。
サンプルのダウンロード
サンプルのその他のオプション
前述のサンプルでは、プラットフォームの In-App Purchase ストアとのやり取りが最小限になっています。情報をアプリケーション内で管理すると、GAM のユーザー、デバイス ID、またはその他のエンティティを利用して購入状況を確認できるため、柔軟性がより高くなります。
ユーザー、製品、購入履歴に関する情報をすべてアプリケーションデータベースで管理するため、サブスクリプションシナリオのシミュレーションが可能です。
PurchasesInfo
テーブルに Date タイプの
PurchaseExpiration
項目属性を追加すると、ユーザーが製品を購入したかどうかを
PurchaseExpiration
の日付が有効かどうかだけで確認できます。
参考情報
In-App Purchase サンプル - Classified Ads