Google Play BillingからAmazonアプリ内課金(IAP)v2.0への移行


Google Play BillingからAmazonアプリ内課金(IAP)v2.0への移行

このページでは、Google Play BillingとAmazonアプリ内課金(IAP)の違いについて説明し、両方のAPIセットに対応するようにアプリを調整する方法を大まかに紹介します。

Google Play BillingとIAPについて

Google Play Billingは、ユーザーがアプリから直接デジタルコンテンツを購入できるようにする機能です。たとえば、ユーザーはゲームの追加レベルを購入できます。一方、Amazon IAPは、Amazonアプリストアと同等の機能を提供します。アプリでGoogle Play Billingを使用している場合は、Amazon IAP機能を使用するようにコードを簡単に変更できます。どちらのAPIセットも同様の機能を備えていますが、名前の付け方や用語に違いがあります。

AmazonアプリストアとAmazonデバイスの要件

アプリがGoogle Play Billingを実装している場合、そのアプリをAmazonアプリストアに申請するには、Amazon IAPを実装する必要があります。

Amazon IAP v2.0とGoogle Play Billing

このセクションでは、Google Play BillingとAmazon IAP v2.0の類似点および相違点について説明します。

機能の比較

以下に、Amazon IAP APIとGoogle Play Billing APIの比較表を示します。

機能 Amazon IAP Google Play コメント
購入
インテントがAPIで処理される。 ×
シンプルなAPI呼び出しのフレームワークが用意されている。 ×
消費型アイテム
個々の消費型アイテムを複数回購入できる。
非消費型アイテム
購入は1回限りである。ユーザーが既に所有している非消費型アイテムを購入しようとすると通知される。
定期購入型アイテム
定期購入の期間に関してさまざまなオプションが用意されている。 Amazon IAPのオプション: 1週間ごと、2週間ごと、1か月ごと、2か月ごと、3か月ごと、6か月ごと、1年ごと。Google Playのオプション: 1か月ごと、1年ごと、季節ごと(カスタマイズ)
無料トライアル期間がサポートされている。
自動更新オプションがある。
繰延請求オプションがある。 ×
レシート検証
購入に対するレシート検証サービスがある。 Google Playにはレシート検証機能が用意されていますが、Google Playのレシート検証プロセスは自動化されていません。

Google Playの管理対象オブジェクトとAmazonの消費型アイテムおよび非消費型アイテム

Google Play BillingとAmazon IAPのどちらでも、ユーザーは同じタイプのアプリ内課金を行うことができます。ただし、Google PlayとAmazonでは、それぞれの購入タイプを表す用語に違いがあります。次の表に、Amazonでの購入タイプと、Google Playでそれぞれに該当する用語をまとめています。

Amazon 説明 Google Playの用語
消費型アイテム 購入後にアプリ内(通常はゲーム)で消費されるもの。複数回購入することが可能です。 管理対象製品 追加のライフやアクション(ゲーム内)、ゲーム内キャラクター用の追加武器。
非消費型アイテム 1回限りの購入で、アプリ内またはゲーム内の機能やコンテンツの利用制限を解除(アンロック)するもの。 管理対象製品 ゲーム内の追加レベルのアンロック、アプリ内の「プレミアムメンバー専用」機能のアンロック。
定期購入型アイテム プレミアムコンテンツやプレミアム機能へのアクセスを一定期間提供するもの。 定期購入 オンライン雑誌の定期購読、フットボールゲームのリーグへのアクセス。

Google Play Billingでは、定期購入以外の購入はすべて同様に扱われます。つまり、ユーザーによってアイテムが購入され、消費されるという動作になります。消費されたアイテムはアプリにプロビジョニングされ、消費済みとして記録されます。1回限りの購入となる可能性があるアイテム(新しいゲームレベルのアンロックなど)については、アイテムを消費型として扱うか非消費型として扱うかを開発者が決定し、必要に応じて、そのアイテムの購入を1回限りとするロジックを組み込みます。Amazon IAPでは、1回限りの購入(非消費型アイテム)と、アプリユーザーが複数回購入できる購入(消費型アイテム)とは、設計上明確に分けられています。

コードの移植

このセクションでは、Google Play Billing APIからAmazon IAP APIにアプリを移植する手順を説明します。

  1. Amazon IAPをサポートするようにAndroidManifest.xmlファイルを構成します。
  2. Google Play BillingとIAPを仲介するロジックをアプリに実装します。
  3. Amazon IAP APIを追加して実装します。
  4. アプリをテストします。

AndroidManifest.xmlファイルの構成方法

AndroidManifest.xmlファイルを構成して、アプリのIAP Response Receiverを定義します。IAP Response Receiverにより、Amazonクライアントからのインテントの伝達をアプリが確実に取得できるようになります。Google Play BillingとAmazon IAPの両方をサポートする場合、Google Play Billing関連の要素を削除する必要はありません。これらはIAPでは無視されます。

AndroidManifest.xmlファイルに、IAPのResponseReceiverを宣言する<receiver>タグを追加します。

<application>
...
    <receiver android:name = "com.amazon.device.iap.ResponseReceiver"
        android:permission = "com.amazon.inapp.purchasing.Permission.NOTIFY" >
      <intent-filter>
        <action android:name = "com.amazon.inapp.purchasing.NOTIFY" />
      </intent-filter>
    </receiver>
...
</application>

Google Play BillingとIAPを仲介するロジックの実装方法

アプリがどちらでホストされる場合でも、アプリには同じコードベースを使用することができます。AmazonアプリストアとGoogle Playのどちらからダウンロードされたかを判定するロジックをアプリに追加します。アプリのダウンロード元に応じて、IAPまたはGoogle Play Billingの適切なメソッドを実行します。

次のコード例では、パッケージがGoogle PlayとAmazonアプリストアのどちらからインストールされたかを判定します。

PackageManager pkgManager = context.getPackageManager();

 String installerPackageName = pkgManager.getInstallerPackageName(context.getPackageName());

 if(installerPackageName.startsWith("com.amazon")) {
 // Amazon
 } else if ("com.android.vending".equals(installerPackageName)) {
 // Google Play
 }

Amazon IAP APIの追加・実装方法

Amazon IAPは、ほとんどGoogle Play Billingと同じように動作します。IAP APIの実装パスをコードに作成する場合は、Google Playと同様のロジックフローを使用できますが、クラス名やメソッド名の違いを考慮する必要があります。

よく使用されるIAPメソッドと、それと同等のGoogle Playメソッドの対応表を以下に示します。

PurchasingServiceのメソッド PurchasingListenerのコールバック レスポンスオブジェクト Google Playのメソッド
getUserData() onUserDataResponse() UserDataResponse なし
getPurchaseUpdates() onPurchaseUpdatesResponse() PurchaseUpdatesResponse queryPurchases()
getProductData() onProductDataResponse() ProductDataResponse getSkuDetails()
purchase() onPurchaseResponse() PurchaseResponse launchBillingFlow()
notifyFulfillment() なし なし consumeAsync()

IAPのクラスとメソッドの詳細については、アプリ内課金APIリファレンスv2.0(英語のみ)を参照してください。

アプリのテスト

IAP v2.0を組み込んだアプリをテストするには、App Testerツールをダウンロードしてインストールします。アプリ内課金(IAP)のテストの概要で説明されている手順とリンクに従って、App Testerをインストールして使用してください。

アプリをローカルでテストした後は、ライブアプリテストサービスを使用して、特定のユーザーグループを対象に本番環境でアプリのベータテストを行うことができます。