从 Google Play Billing 迁移到 Amazon IAP v2.0


从 Google Play Billing 迁移到 Amazon IAP v2.0

本页讨论 Google Play Billing 和亚马逊应用内购买 (IAP) 之间的区别,并简要介绍如何调整您的应用以同时使用这两个 API 集。

什么是 Google Play Billing 和 IAP?

Google Play Billing 功能允许用户直接从您的应用购买数字内容。例如,用户可以为游戏购买额外的关卡。Amazon IAP 是 Amazon Appstore 的等效功能。如果您的应用使用 Google Play Billing,您可以轻松修改代码以使用 Amazon IAP 功能。这两个 API 集具有类似功能,但在命名和术语方面有一些差别。

Amazon Appstore 和亚马逊设备的要求

如果您的应用实现了 Google Play 账单,您需要实现 Amazon IAP 才能将您的应序提交到 Amazon Appstore。

Amazon IAP 2.0 与 Google Play Billing

本节讨论 Google Play Billing 和 Amazon IAP v2.0 之间的相同点和不同点。

功能比较

下表显示了 Amazon IAP API 和 Google Play Billing API 之间的比较。

功能 Amazon IAP Google Play 备注
​购买
意图由 API 处理。
提供了简单 API 调用的框架。
消费品
个人消费品可多次购买。
权利
购买一次。如果用户尝试购买已拥有的权利,则会通知他们。
订阅
订阅运行的时段选项有多种。 Amazon IAP 选项: 每周、每两周、每月、每两个月、每季度、每半年、每年 Google Play 选项: 每月、每年、每季度(自定义)
支持免费试用期。
自动续订选项。
延期计费选项。
收据验证
有关购买的收据验证服务 尽管 Google Play 提供收据验证,但 Google Play 收据验证过程不是自动的。

Google Play 托管对象与亚马逊消费品和权利

Google Play Billing 和 Amazon IAP 都支持您的客户进行相同类型的应用内购买。但是,Google Play 和亚马逊对其购买类型使用了不同的术语。下表说明了与每种亚马逊购买类型等效的 Google Play 类型:

亚马逊 描述 Google Play 等效类型 示例
消费品 先进行购买,然后在应用中使用,通常为游戏。可多次购买。 托管产品 额外生命或移动(在游戏中)、游戏内角色的额外弹药。
权利 一次性购买,用于允许访问应用或游戏中的功能或内容。 托管产品 解锁游戏中的额外关卡或应用中的“仅限高级会员”的功能。
订阅 允许访问一组高级内容或功能有限的一段时间。 订阅 在线杂志订阅、幻想足球联赛访问。

如您所见,Google Play Billing 以相同方式对待所有非订阅购买;用户购买项目,然后使用项目。使用项目后,会在应用中预配置该项目并记录使用。对于很可能是一次性购买的项目(如解锁新游戏关卡),您作为开发者可以选择将项目视为消费品或非消费品并引入逻辑来确保该项目的购买只发生一次。利用 Amazon IAP,一次性购买(权利)在设计上与应用用户可以进行多次的购买(消费品)分离。

移植代码

本节将指导您将应用从 Google Play Billing API 移植到 Amazon IAP API:

  1. 配置您的 AndroidManifest.xml 文件以支持 Amazon IAP。
  2. 在您的应用中,实现在 Google Play Billing 和 IAP 之间进行调解的逻辑。
  3. 添加并实现 Amazon IAP API。
  4. 测试您的应用。

配置 AndroidManifest.xml 文件

配置您的 AndroidManifest.xml 文件来为您的应用定义 IAP 响应接收器。IAP 响应接收器确保您的应用截取来自亚马逊客户端的意图通信。请注意,如果您同时支持 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 Appstore 还是从 Google Play 下载的。根据用户从哪里下载的应用,执行适用于 IAP 或 Google Play Billing 的方法。

以下示例代码确定程序包是从 Google Play 还是从 Amazon Appstore 安装的:

PackageManager pkgManager = context.getPackageManager();

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

 if(installerPackageName.startsWith("com.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

测试您的应用

下载并安装 App Tester 工具来测试您的集成了 IAP v2.0 的应用。按照测试应用内购买 (IAP) 中的说明和链接安装和使用 App Tester。

在本地测试应用后,您可以使用 Live App Testing 服务通过选定的一组用户在真实生产环境中对您的应用进行 Beta 测试。