在 iOS SDK 中优化付费墙加载

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

以下规则假设 Adapty.activate()Adapty.identify() 已经执行完毕。请参阅 iOS SDK 中的调用顺序

规则与注意事项

推荐做法避免做法原因
在即将展示版位时再拉取它。启动时并发预拉取所有版位。批量预拉取会阻塞主线程,并在请求峰值期间出现黑屏。
在归因有机会完成之后再调用 getPaywall——例如在 activate 之后等待 1–2 秒,或等 onProfileUpdate 触发后再调用。App.init() 时调用 getPaywall此时归因数据尚未到达,付费墙会按默认目标受众解析,悄然跳过市场细分和 ASA 个性化逻辑。
为每个版位设置 loadTimeout 并配置备用付费墙无限等待 getPaywall 返回。没有超时限制时,网络状况差的用户会一直看到空白屏幕,直到网络恢复——或者直接关掉应用。
请参阅获取付费墙和产品了解 fetchPolicyloadTimeout 参数说明,以及版位了解如何选择合适的版位。

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

针对网络连接持续不稳定的市场(如农村地区、交通途中、受路由影响的地区):

  • 除首次请求外,所有获取操作均设置 fetchPolicy: .returnCacheDataElseLoad
  • 在 Adapty 看板中为每个版位配置备用付费墙
  • loadTimeout 设置为 3–5 秒,超时后直接使用备用付费墙。
  • 不要将付费墙的显示依赖于 getProfile() 的结果。独立调用 getPaywall,避免因 profile 响应慢而阻塞 UI。