优化 React Native SDK 中的付费墙获取
在 React Native 中可靠地获取付费墙需要做到三点:渲染速度快、返回针对目标受众的付费墙、以及在网络较慢时优雅降级。以下规则涵盖了实现这些目标所需的时机、缓存和备用模式。
以下规则假设 adapty.activate() 和 adapty.identify() 已执行完毕。详见 React Native SDK 的调用顺序。
规则与注意事项
| 推荐做法 | 避免做法 | 原因 |
|---|---|---|
| 仅在即将展示的版位时才去获取。 | 在启动时并发预取所有版位。 | 批量预取会阻塞 JS 线程,导致启动过程中出现黑屏。 |
在归因有机会完成解析之后再调用 getPaywall——例如在 activate 后等待 1–2 秒,或等待 onProfileUpdate 触发。 | 在根组件挂载时调用 getPaywall。 | 归因数据尚未落地,付费墙将按默认目标受众解析,静默跳过市场细分和 ASA 个性化。 |
设置 loadTimeoutMs,并为每个版位配置备用付费墙。 | 无限期等待 getPaywall 返回。 | 若没有超时限制,网络较差的用户会看到空白屏幕,直到网络恢复——或者直接关闭应用。 |
有关 fetchPolicy 和 loadTimeoutMs 参数的说明,请参阅获取付费墙和产品;有关如何选择合适的版位,请参阅版位。 |
针对网络较差的情况进行调优
对于网络持续较差的市场(偏远地区、交通途中、受路由影响的地区):
- 除首次请求外,所有请求都设置
fetchPolicy: .returnCacheDataElseLoad。 - 在 Adapty 看板中为每个版位配置备用付费墙。
- 将
loadTimeoutMs设置为 3–5 秒,并在超时触发时接受备用付费墙。 - 不要让付费墙的展示依赖
getProfile()。将getPaywall独立调用,避免因 profile 加载缓慢而阻塞 UI。