从Google Play结算库迁移到Appstore SDK
了解Google Play结算和亚马逊应用内购买 (IAP) 之间的区别。然后,使用该指南将您的应用从Google Play结算迁移到亚马逊应用商店SDK IAP。
Google Play结算和IAP是什么?
Google Play Billing功能让用户可以直接从您的应用购买数字内容。例如,用户可以在游戏中购买额外的关卡。亚马逊应用内购买 (IAP) 是亚马逊应用商店的等效功能。如果您的应用使用Google Play结算,则可以修改您的代码以使用亚马逊IAP。Google和亚马逊API具有相似的功能,但在命名和术语上有所不同。
如果您的应用实现了Google Play结算,并且您希望在亚马逊应用商店中将应用内购买作为您应用中的一项功能保留,就必须实现亚马逊IAP解决方案才能提交您的应用。
亚马逊IAP与Google Play结算
本节讨论Google Play结算和亚马逊应用商店SDK中Amazon IAP之间的相同点和不同点。
功能比较
下表显示了亚马逊应用商店SDK IAP和Google Play结算之间的比较。
| 功能 | 亚马逊应用商店SDK IAP | Google Play结算 | 备注 |
|---|---|---|---|
| 购买 | |||
| 意图由API处理。 | 是 | 否 | |
| 消费品 | |||
| 个人消费品可多次购买。 | 是 | 是 | |
| 权利 | |||
| 购买一次。如果用户尝试购买已拥有的权利,则会收到通知。 | 是 | 是 | |
| 订阅 | |||
| 订阅持续的时段有多种选项。 | 是 | 是 | Amazon IAP选项: 每周、每两周、每月、每两个月、每季度、每半年、每年;Google Play选项: 每月、每年、每季度(自定义) |
| 支持免费试用期。 | 是 | 是 | |
| 自动续订选项。 | 是 | 是 | |
| 延期计费选项。 | 否 | 是 | |
| 收据验证 | |||
| 适用于购买的收据验证服务 | 是 | 是 | 虽然Google Play提供收据验证,但Google Play的收据验证过程不是自动的。 |
Google Play托管对象对比亚马逊消费品和权利
Google Play Billing和Amazon IAP都支持您的客户进行相同类型的应用内购买。但是,Google Play和亚马逊对其购买类型使用了不同的术语。下表说明了与每种亚马逊购买类型等效的Google Play类型。
| 亚马逊 | 描述 | Google Play等效类型 | 示例 |
|---|---|---|---|
| Consumable | 先进行购买,然后在应用中使用,通常为游戏。可多次购买。 | 托管产品 | 额外生命或移动次数(在游戏中)、游戏内角色的额外弹药。 |
| Entitlement | 一次性购买,用于访问应用或游戏中的功能或内容。 | 托管产品 | 解锁游戏中的额外关卡或应用中的“仅限高级会员”的功能。 |
| Subscription | 允许在一段有限的时间内访问一组优质内容或功能。 | Subscription | 在线杂志订阅、梦幻足球联赛访问。 |
如您所见,Google Play结算以类似方式对待所有非订阅购买;用户购买商品,然后使用商品。使用商品后,会在应用中预配置该商品并记录使用情况。对于很可能是一次性购买的商品(如解锁新游戏关卡),您作为开发者可以选择将商品视为消费品或非消费品并引入逻辑来确保该商品只能购买一次。通过Amazon IAP,可在设计上将一次性购买(权利)与应用用户可以多次购买的购买项目(消费品)分离。
迁移到亚马逊应用商店SDK
要从Google Play结算库迁移到Appstore SDK,请按照以下说明进行操作。
- 下载并配置Appstore SDK。
- 配置AndroidManifest.xml文件以支持Appstore SDK IAP。
- 在应用中,实现在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确保应用截获来自亚马逊客户端的意图通信。如果您同时支持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之间进行调解的逻辑
无论在哪里托管您的应用,均可以为其使用同一代码库。只需向您的应用添加逻辑,以确定应用是从亚马逊应用商店还是从Google Play下载的。根据用户从哪里下载的应用,运行适用于IAP或Google Play结算库的方法。
以下示例代码可确定程序包是从Google Play还是从亚马逊应用商店安装的:
PackageManager pkgManager = context.getPackageManager();
try {
String installerPackageName = pkgManager.getInstallSourceInfo(context.getPackageName()).getInstallingPackageName();
} catch (PackageManager.NameNotFoundException e) {
// 处理异常
}
if (installerPackageName.startsWith("com.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的DevTest、App Tester和动态应用测试在不同开发阶段测试应用中的IAP。有关可用于测试IAP的工具的完整概述,请参阅IAP测试概述。
Last updated: 2026年4月15日

