优化 React Native SDK 中的付费墙获取

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

Tip

以下规则假设 adapty.activate()adapty.identify() 已执行完毕。详见 React Native SDK 的调用顺序

规则与注意事项

推荐做法避免做法原因
仅在即将展示的版位时才去获取。在启动时并发预取所有版位。批量预取会阻塞 JS 线程,导致启动过程中出现黑屏。
在归因有机会完成解析之后再调用 getPaywall——例如在 activate 后等待 1–2 秒,或等待 onProfileUpdate 触发。在根组件挂载时调用 getPaywall归因数据尚未落地,付费墙将按默认目标受众解析,静默跳过市场细分和 ASA 个性化。
设置 loadTimeoutMs,并为每个版位配置备用付费墙无限期等待 getPaywall 返回。若没有超时限制,网络较差的用户会看到空白屏幕,直到网络恢复——或者直接关闭应用。
有关 fetchPolicyloadTimeoutMs 参数的说明,请参阅获取付费墙和产品;有关如何选择合适的版位,请参阅版位

针对网络较差的情况进行调优

对于网络持续较差的市场(偏远地区、交通途中、受路由影响的地区):

  • 除首次请求外,所有请求都设置 fetchPolicy: .returnCacheDataElseLoad
  • 在 Adapty 看板中为每个版位配置备用付费墙
  • loadTimeoutMs 设置为 3–5 秒,并在超时触发时接受备用付费墙。
  • 不要让付费墙的展示依赖 getProfile()。将 getPaywall 独立调用,避免因 profile 加载缓慢而阻塞 UI。