Google Play請求サービスからAmazonアプリ内課金(IAP)への移行
このページでは、Google Play請求サービスとAmazonアプリ内課金(IAP)の違いについて説明し、両方のAPIセットに対応するようにアプリを調整する方法を大まかに紹介します。
Google Play請求サービスとIAPについて
Google Play請求サービスは、ユーザーがアプリから直接デジタルコンテンツを購入できるようにする機能です。たとえば、ユーザーはゲームの追加レベルを購入できます。一方、Amazon IAPは、Amazonアプリストアと同等の機能を提供します。アプリでGoogle Play請求サービスを使用している場合は、Amazon IAP機能を使用するようにコードを簡単に変更できます。どちらのAPIセットも同様の機能を備えていますが、名前の付け方や用語に違いがあります。
AmazonアプリストアとAmazonデバイスの要件
アプリがGoogle Play請求サービスを実装している場合、そのアプリをAmazonアプリストアに申請するには、Amazon IAPを実装する必要があります。
Appstore SDKとGoogle Play請求サービス
このセクションでは、Google Play請求サービスとAppstore SDKの類似点および相違点について説明します。
機能の比較
以下に、Amazon IAP APIとGoogle Play請求サービス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請求サービスとAmazon IAPのどちらでも、ユーザーは同じタイプのアプリ内課金を行うことができます。ただし、Google PlayとAmazonでは、それぞれの購入タイプを表す用語に違いがあります。次の表に、Amazonでの購入タイプと、Google Playでそれぞれに該当する用語をまとめています。
Amazon | 説明 | Google Playの用語 | 例 |
---|---|---|---|
消費型アイテム | 購入後にアプリ内(通常はゲーム)で消費されるもの。複数回購入することが可能です。 | 管理対象製品 | 追加のライフやアクション(ゲーム内)、ゲーム内キャラクター用の追加武器。 |
非消費型アイテム | 1回限りの購入で、アプリ内またはゲーム内の機能やコンテンツの利用制限を解除(アンロック)するもの。 | 管理対象製品 | ゲーム内の追加レベルのアンロック、アプリ内の「プレミアムメンバー専用」機能のアンロック。 |
定期購入型アイテム | プレミアムコンテンツやプレミアム機能へのアクセスを一定期間提供するもの。 | 定期購入 | オンライン雑誌の定期購読、フットボールゲームのリーグへのアクセス。 |
Google Play請求サービスでは、定期購入以外の購入はすべて同様に扱われます。つまり、ユーザーによってアイテムが購入され、消費されるという動作になります。消費されたアイテムはアプリにプロビジョニングされ、消費済みとして記録されます。1回限りの購入となる可能性があるアイテム(新しいゲームレベルのアンロックなど)については、アイテムを消費型として扱うか非消費型として扱うかを開発者が決定し、必要に応じて、そのアイテムの購入を1回限りとするロジックを組み込みます。Amazon IAPでは、1回限りの購入(非消費型アイテム)と、アプリユーザーが複数回購入できる購入(消費型アイテム)とは、設計上明確に分けられています。
コードの移植
このセクションでは、Google Play請求サービスAPIからAmazon IAP APIにアプリを移植する手順を説明します。
- Amazon IAPをサポートするようにAndroidManifest.xmlファイルを構成します。
- Appstore SDKを構成します。
- Google Play請求サービスとIAPを仲介するロジックをアプリに実装します。
- Amazon IAP APIを追加して実装します。
- アプリをテストします。
AndroidManifest.xmlファイルの構成方法
AndroidManifest.xmlファイルを構成して、アプリのIAP ResponseReceiverを定義します。IAP ResponseReceiverにより、Amazonクライアントからのインテントの伝達をアプリが確実に取得できるようになります。Google Play請求サービスとAmazon IAPの両方をサポートする場合、Google Play請求サービス関連の要素を削除する必要はありません。これらはIAPでは無視されます。
AndroidManifest.xmlファイルに、IAPのResponseReceiver
を宣言する<receiver>
タグを追加します。アプリがAndroid 12以降を対象としている場合は、次の例に示すように、MainActivity
とResponseReceiver
でandroid:exported
を明示的にtrue
に設定する必要があります。
<application>
...
<activity android:name="com.amazon.sample.iap.entitlement.MainActivity"
android:label="@string/app_name" android:exported="true" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<receiver android:name="com.amazon.device.iap.ResponseReceiver" android:exported="true"
android:permission="com.amazon.inapp.purchasing.Permission.NOTIFY" >
<intent-filter>
<action
android:name="com.amazon.inapp.purchasing.NOTIFY" />
</intent-filter>
</receiver>
</application>
Google Play請求サービスとIAPを仲介するロジックの実装方法
アプリがどちらでホストされる場合でも、アプリには同じコードベースを使用することができます。AmazonアプリストアとGoogle Playのどちらからダウンロードされたかを判定するロジックをアプリに追加します。アプリのダウンロード元に応じて、IAPまたはGoogle Play請求サービスの適切なメソッドを実行します。
次のコード例では、パッケージが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請求サービスと同じように動作します。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() |
アプリのテスト
Appstore SDKを組み込んだアプリをテストするには、App Testerツールをダウンロードしてインストールします。アプリ内課金(IAP)のテストについてで説明されている手順とリンクに従って、App Testerをインストールして使用してください。
アプリをローカルでテストした後は、ライブアプリテストサービスを使用して、特定のユーザーグループを対象に本番環境でアプリのベータテストを行うことができます。