as

Settings
Sign out
Notifications
Alexa
亚马逊应用商店
Ring
AWS
文档
Support
Contact Us
My Cases
开发
测试
应用发布
盈利
用户参与
设备规格
资源

IAP最佳实践 - 缩短应用启动时间

IAP最佳实践 - 缩短应用启动时间

在应用启动时调用应用内购买 (IAP) API可能会显著增加应用启动所需的时间,从而导致客户体验不佳。亚马逊应用商店建议的最佳实践是在后台进行这些服务器端调用,以避免应用加载时出现延迟。

避免阻止用户界面加载

将IAP API与应用集成中指示您在onResume() 方法中调用getUserData() 和getPurchaseUpdates() 来查询客户权利状态。这些API需要对亚马逊的后端服务器进行服务器端调用。首次调用不会被缓存,最多可能需要两秒钟才能执行,这可能会导致应用启动速度变慢。后续调用会被缓存,因此不会造成这种延迟。

为了防止启动延迟,在应用等待亚马逊服务器的响应时,不要阻止用户界面加载。相反,亚马逊应用商店建议使用缓存在后端服务器中的上一个权利状态。这可以从用户上次登录或访问应用开始,也可以从上次更新实时通知开始。

收到来自getUserData() 和getPurchaseUpdates() 的响应后,查询亚马逊的适用于Appstore SDK IAP的收据验证服务 (RVS) 以获取客户当前的权利状态。采取这一做法可避免同步问题。将接收的数据缓存在后端服务器上。然后,您可以异步更新应用的用户界面,以反映客户权利状态的任何变化。

架构示意图

借助这些示意图,您可以直观地了解在应用加载时进行IAP调用会发生什么。

典型流程: IAP调用会阻止用户界面加载

此图显示了当IAP调用阻止用户界面加载时,从应用启动到应用用户界面加载的步骤。

查看典型流程描述

典型流程描述

  1. 用户单击应用以将其启动。
  2. 加载应用用户界面时会显示黑屏。
  3. 应用开始启动。在onResume() 中,应用在用户界面线程上依次调用getUserData() 和getPurchaseUpdates()。加载会延迟大约两秒钟。在此期间,用户会继续看到黑屏。
  4. 应用调用RVS并使用返回的收据检查权利状态。
  5. 如果权利状态为有效,则应用向客户授予访问权限。
  6. 应用通过显示启动画面继续加载用户界面。

在这个典型流程中,当进行IAP调用时,客户会看到几秒钟的黑屏,因此觉得应用启动速度很慢。

此图显示了在后台进行IAP调用时,从应用启动到应用用户界面加载的步骤。

查看建议流程描述
  1. 将之前使用过的权利数据缓存或存储在后端至少30天。
  2. 用户单击应用以将其启动。
  3. 应用显示启动画面,并根据缓存数据加载用户界面。应用不会检查来自服务器的权利数据。
  4. 应用在后台进行getUserData() 和getPurchaseUpdates() 调用。不会阻止加载用户界面。
  5. getUserData() 和getPurchaseUpdates() 调用返回后,将收据传递给后端服务器,然后后端服务器会调用RVS来确认收据的有效性。
  6. 如果收据有效,则将缓存(或后端)与新数据同步。
  7. 如果需要,请更新或切换用户界面以阻止或取消阻止用户访问内容。

Last updated: 2023年2月2日