开发者控制台

从IAP v2.0转换至Appstore SDK

从IAP v2.0转换至Appstore SDK

亚马逊Appstore SDK是亚马逊应用内购买的SDK,支持Android应用的数字版权管理 (DRM) 和应用内购买 (IAP)。Appstore SDK替换了以前的SDK,即IAP v2.0。对于所有现有应用,可以继续使用IAP v2.0,也可将其转换至Appstore SDK。

此页面会指导您完成将应用转换至Appstore SDK的步骤。可以从SDK下载页面下载亚马逊Appstore SDK。

DRM和IAP的变化

以前,将Android APK上传至亚马逊应用商店后,可以为“应用亚马逊DRM?”选择,如以下屏幕截图所示:

如果选择,则亚马逊会为您的应用添加DRM。

使用Appstore SDK,开发者控制台不会再显示此选项。如果想要为APK添加DRM,请使用DRM API(包含在Appstore SDK中)在您的应用中引入许可证检查。

以前,要使用IAP功能,就需要下载独立的IAP JAR并将其引入到应用中。在Appstore SDK中,IAP API不会再作为单独的JAR文件提供,而是会与Appstore SDK JAR文件捆绑在一起。要实现IAP,就必须引入Appstore SDK。

请参阅下文中IAP的其他变化,详细了解现在如何确定IAP的运行模式。

如何从亚马逊管理的DRM转换至Appstore SDK

如果您的现有应用使用亚马逊管理的DRM,请进行以下操作,切换至DRM API:

  1. 在开发者控制台中,为应用创建“即将推出的版本”。
  2. 使用公有密钥配置应用,并按照集成Appstore SDK中的说明将Appstore SDK集成到Android项目中。
  3. 按照适用于Android的DRM中的说明,在应用中添加许可证检查逻辑。
  4. 构建新版本APK,将其上传至开发者控制台并提交。

如何从独立IAP转换至Appstore SDK

如果您的现有应用集成了独立IAP API,则必须通过以下操作切换至新的Appstore SDK:

  1. 在Android Studio中,从应用中删除in-app-purchasing JAR以及所有对此JAR的引用。
  2. 使用公有密钥配置应用,并按照集成Appstore SDK中的说明将Appstore SDK集成到Android项目中。

    您之前为IAP添加的代码将与Appstore SDK一起运行。IAP API中较早的功能将保持不变(用于测试的IS_SANDBOX_MODE除外,请参阅下文中IAP的其他变化)。

  3. 构建APK的新版本,将其上传至开发者控制台并提交。

IAP的其他变化

大部分IAP实现细节都将保持不变,但Appstore SDK中将会删除PurchasingService类的IS_SANDBOX_MODE值。

现在,您必须调用LicensingService类的getAppstoreSDKMode()方法,确定SDK当前的运行模式。在调用getAppstoreSDKMode()之前,必须调用LicensingService.verifyLicense()

public enum AppstoreSDKModes {

    SANDBOX,
    PRODUCTION,
    UNKNOWN
}

下表描述了不同的模式。

SDK模式 描述
SANDBOX 应用在接受测试,仅与Amazon App Tester进行交互。
PRODUCTION 应用与亚马逊应用商店和客户账户通信,进行所有API调用。请注意,只有提交到亚马逊应用商店的应用才会收到亚马逊的成功响应。
UNKNOWN 此模式表示尚未通过调用verifyLicense()初始化SDK。

Appstore SDK转换常见问题解答

从现在起,我是否需要处理自己的签名? 如果签名密钥丢失,会发生什么情况?
当您提交应用时,亚马逊仍会管理应用的签名。让亚马逊管理签名,可以在签名密钥丢失时为您提供保障。如果没有亚马逊管理的签名,则一旦丢失签名密钥,您便无法再更新应用。
亚马逊使用什么签名来为应用签名?
亚马逊目前使用V1签名。
Appstore SDK会影响IAP的收据验证服务 (RVS)吗?
RVS不会受到其他影响。
我要如何将当前的IAP实现迁移到Appstore SDK?
IAP实现代码将保持不变,因此您无需为适应新的Appstore SDK而更新现有的IAP代码(但是您的应用中仍需包含Appstore SDK JAR)。有关详细信息,请参阅上文中的如何从独立IAP转换至Appstore SDK
在亚马逊发布Appstore SDK后,我的现有IAP集成会不会出现故障?
不会,已发布应用中的IAP集成可以继续正常运行。(亚马逊不会修改已发布应用的任何代码。) 由于Appstore SDK提供的IAP代码与以前在独立IAP API中提供的代码相同,因此已发布应用中的结果也几乎相同。
Appstore SDK会影响动态应用测试 (LAT) 吗?
LAT的行为不会受到影响。
Appstore SDK会不会影响用于测试IAP应用的App Tester?
Appstore SDK会支持新的App Tester。
就Android的65K方法数限制而言,如果我只需要DRM或IAP的其中一项,是否可以选择更具体的JAR,而不是引入较大的Appstore SDK?
不可以。无法在多个JAR中使用Appstore SDK。
我是否需要将IAP和DRM并入应用中?
IAP会保护您的应用内购买,而DRM会使您的应用免遭未经授权的分发。您可以依据需求进行实现。有关不同方案的详情,请参阅哪些类型的应用可以使用DRM部分。
包含Appstore SDK会不会触发亚马逊应用商店,使其在应用详情页面添加注释,说明我的应用包含应用内购买?
不会。如果您没有实现IAP,那么有关应用(包括应用内购买)的说明就不会出现在应用描述中。
为什么我需要配置公有密钥?
为项目添加公有密钥是使用Appstore SDK的必要条件。公有密钥会在亚马逊应用商店和您的应用之间建立起安全的通信渠道。当您在开发者控制台中生成公有密钥时,亚马逊会生成相应的私钥。这些公有密钥和私钥会构成密钥对,用于签署许可证响应。通过这种密钥配对,您可以确保应用仅限授权用户安装。
我的应用的每个新版本是否都需要新的公有密钥?
不需要。您可以在即将推出的版本中使用同一个公有密钥。
我在我的应用中进行IAP调用时出错,如何进行故障排除?
请访问Appstore SDK故障排除

Last updated: 2024年5月22日