Google Play請求サービスからAppstore SDKへの移行
Google Play請求サービスとAmazonアプリ内課金(IAP)の違いについて説明します。その後、Google Play請求サービスからAppstore SDK IAPに移行するためのガイドを提供します。
Google Play請求サービスとIAPについて
Google Play請求サービスは、ユーザーがアプリから直接デジタルコンテンツを購入できるようにする機能です。たとえば、ユーザーはゲーム内で追加レベルを購入できます。Amazonアプリ内課金(IAP)は、Amazonアプリストアと同等の機能です。アプリでGoogle Play請求サービスを使用している場合は、Amazon IAPを使用するようにコードを変更できます。GoogleとAmazonのAPIは、どちらも同様の機能を備えていますが、名前の付け方や用語に違いがあります。
アプリがGoogle Play請求サービスを実装している場合、Amazonアプリストアでアプリの機能としてIAPを維持するには、AmazonのIAPソリューションを実装してアプリを申請する必要があります。
Amazon IAPとGoogle Play請求サービス
このセクションでは、Google Play請求サービスとAppstore SDKのAmazon IAPを比較して、類似点と相違点について説明します。
機能の比較
次の表は、Appstore SDK IAPとGoogle Play請求サービスの比較を示しています。
| 機能 | Appstore SDK IAP | Google Play請求サービス | コメント |
|---|---|---|---|
| 購入 | |||
| インテントが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回限りの購入(非消費型アイテム)と、アプリユーザーが複数回購入できる購入(消費型アイテム)とは、設計上明確に分けられています。
Appstore SDKへの移行
Google Play請求サービスからAppstore SDKに移行するには、次の手順に従います。
- Appstore SDKをダウンロードして構成します。
- Appstore SDK IAPをサポートするようにAndroidManifest.xmlファイルを構成します。
- Google Play請求サービスとIAPを仲介するロジックをアプリに実装します。
- Appstore SDK IAP APIを追加して実装します。
- アプリをテストします。
以下のセクションでは、これらの手順について説明します。
手順1:Appstore SDKをダウンロードして構成する
以下からAppstore SDKをダウンロードします。
アプリでAppstore SDKを使用するように構成するには、Appstore SDKの統合の手順に従います。
手順2: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>
手順3:Google Play請求サービスとIAPを仲介するロジックを実装する
アプリがどちらでホストされる場合でも、アプリには同じコードベースを使用することができます。AmazonアプリストアとGoogle Playのどちらからダウンロードされたかを判定するロジックをアプリに追加します。アプリのダウンロード元に応じて、IAPまたはGoogle Play請求サービスの適切なメソッドを実行します。
次のコード例では、パッケージがGoogle PlayとAmazonアプリストアのどちらからインストールされたかを判定します。
PackageManager pkgManager = context.getPackageManager();
try {
String installerPackageName = pkgManager.getInstallSourceInfo(context.getPackageName()).getInstallingPackageName();
} catch (PackageManager.NameNotFoundException e) {
// Handle exception
}
if (installerPackageName.startsWith("com.amazon")) {
// Amazon
} else if ("com.android.vending".equals(installerPackageName)) {
// Google Play
}
手順4:Appstore SDK IAP APIを追加して実装する
Appstore SDK 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() |
手順5:アプリのテスト
アプリのIAPは、開発のさまざまな段階を通じて、IAP用DevTest、App Tester、ライブアプリテストを使用してテストできます。IAPのテストに使用できるツールの概要については、アプリ内課金(IAP)のテストの概要を参照してください。
Last updated: 2026年4月15日

