在 Kotlin Multiplatform SDK 中优化付费墙获取

在 Kotlin Multiplatform 上实现可靠的付费墙获取需要做到三点:渲染速度快、返回符合目标受众的付费墙,以及在网络较慢时优雅地降级到备用方案。以下规则涵盖了实现这一目标所需的时机选择、缓存策略和备用模式。

以下规则要求 Adapty.activate()Adapty.identify() 已完成执行。详情请参阅 Kotlin Multiplatform SDK 中的调用顺序

规则与注意事项

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

针对弱网环境的调优

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

  • 除首次请求外,每次获取付费墙时均设置 fetchPolicy = AdaptyPaywallFetchPolicy.ReturnCacheDataElseLoad
  • 在 Adapty 看板中为每个版位配置备用付费墙
  • loadTimeout 设置为 3–5 秒,并在超时触发时接受备用付费墙。
  • 不要将付费墙的显示与 Adapty.getProfile() 绑定。独立调用 getPaywall,避免因用户画像加载缓慢而阻塞 UI。