在 Capacitor SDK 中优化付费墙获取

在 Capacitor 中可靠地获取付费墙需要做到三点:快速渲染、返回针对目标受众的付费墙,以及在网络较慢时优雅降级。以下规则涵盖了实现这些目标所需的时机、缓存和备用方案。

以下规则要求 adapty.activate()adapty.identify() 均已完成。详见 Capacitor SDK 调用顺序

以下建议使用 v3 方法名。在 SDK v4 中,getPaywall 已重命名为 getFlow(参见迁移指南)——所有规则同样适用。

规则与注意事项

建议做法不建议做法原因
获取即将展示的版位。在启动时并发预取所有版位。批量预取会阻塞主线程,导致启动时出现黑屏。
在归因有机会解析后再调用 getPaywall,例如在 activate 之后等待 1–2 秒,或等 onLatestProfileLoad 监听器触发后再调用。App.tsx 的应用启动阶段调用 getPaywall此时归因尚未到达,付费墙会基于默认目标受众进行解析,悄无声息地绕过市场细分和 ASA 个性化设置。
设置 loadTimeoutMs,并为每个版位配置备用付费墙无限等待 getPaywall 返回。没有超时限制时,网络条件差的用户会看到空白屏幕直到网络恢复——或者直接关闭应用。
请参阅获取付费墙和产品了解 fetchPolicyloadTimeoutMs 参数说明,以及版位了解如何选择合适的版位。

针对弱网环境的优化

对于网络状况持续较差的市场(如农村地区、交通途中、受路由影响的地区):

  • 除首次请求外,所有请求均设置 fetchPolicy: 'return_cache_data_else_load'
  • 在 Adapty 看板中为每个版位配置备用付费墙
  • loadTimeoutMs 设置为 3000–5000 毫秒,超时后接受备用付费墙。
  • 不要让付费墙的展示依赖于 adapty.getProfile() 的结果。将 getPaywall 独立调用,避免因用户画像加载缓慢而阻塞界面。