最近のアクセス:
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 と購入済み製品」というリレーションが保存されます。レシピ一覧を読み込む前に、この情報が確認されます。確認されると、購入済みのレシピがすべて表示されます。
  • 購入可能な製品情報のデータベーステーブルの管理も行います。このテーブルを使用して、購入可能な製品 (ユーザーがまだ購入していない製品) の一覧を作成します。主な目的は、有償の新しいレシピグループをいつでも追加できるようにすることです。

この機能の実装方法

イメージ:33923.jpg
: RecipePurchased プロシージャーは、レシピが公開版 (「General」) かどうか、またはユーザーが関連製品を購入済みかどうかをチェックします。

イメージ:33924.jpg
: PurchaseExpiration 項目属性は、この標準サンプルで何もしませんが、開発者に管理されているサブスクリプションのシナリオをシミュレートするのに使用できます。

イメージ:33925.jpg
: ProductPurchased プロシージャーは、以前ユーザーが該当製品を購入したことがあるかどうかをチェックします。
 
  • データベースには、各レシピに関連付けられている製品 ID (Product Identifier) が必要です。「General」という値は、レシピが公開版であることを示します。公開版のレシピは、アプリケーションの初回利用時から閲覧可能になります。製品 ID は、プラットフォームストアでアプリケーションの In-App Purchase (アプリ内課金) について定義した製品 ID (Product ID) を表す文字列値です。
イメージ:33926.png
 
  • また、AvailableProducts テーブルに、有償製品の情報を読み込む必要があります。これらの値は、有償のレシピグループを新たに追加する際に変更できます。関連付いた製品 ID (Product Identifier) は、(前のポイントで説明したとおり) 事前にプラットフォームストアで設定しておく必要があります。
     
  • さらに、WorkWithDevicesRecipes パターンインスタンスで Recipes リストのフィルタを設定する必要があります。RecipeIsPurchased = True という条件を追加します。初回実行時に、購入履歴がない場合は、公開版 (「General」) のレシピだけが表示されます。また、購入した Recipes の詳細を見ることもできます。イメージ:33960.pngイメージ:33961.png
     
  • 次に、 [ Get More ] アクションを選択すると、購入したことがない有償レシピ一覧を掲載したパネルが表示されます。レシピごとに [ Get Recipes ] アクションがあり、このアクションによって購入手続きが実行されます。ここでは、Meat Recipes (お肉料理レシピ) グループを購入してみましょう。
    イメージ:33962.png
    イメージ:33963.png
     
  • 購入手続きが完了したら、ユーザーが今後このレシピグループを随時閲覧できるように、PurchasesInfo テーブルにユーザーと製品の情報を保存する必要があります。これで、今後、レシピを一覧表示したときに、新たに購入したレシピも表示されるようになります。また、購入可能な製品の中に、購入したグループが表示されなくなります。
    イメージ:33964.png
     
サンプルのダウンロード

サンプルのその他のオプション

  1. 前述のサンプルでは、プラットフォームの In-App Purchase ストアとのやり取りが最小限になっています。情報をアプリケーション内で管理すると、GAM のユーザー、デバイス ID、またはその他のエンティティを利用して購入状況を確認できるため、柔軟性がより高くなります。
  2. ユーザー、製品、購入履歴に関する情報をすべてアプリケーションデータベースで管理するため、サブスクリプションシナリオのシミュレーションが可能です。PurchasesInfo テーブルに Date タイプの PurchaseExpiration 項目属性を追加すると、ユーザーが製品を購入したかどうかを PurchaseExpiration の日付が有効かどうかだけで確認できます。

参考情報

In-App Purchase サンプル - Classified Ads






サブページ
Created: 14/09/18 03:13 by Admin Last update: 21/08/25 01:03 by Admin
カテゴリ
Powered by GXwiki 3.0