优化 Android SDK 中的付费墙获取

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

以下规则假定 Adapty.activate()Adapty.identify() 均已完成。详情请参阅 Android SDK 调用顺序

注意事项与常见陷阱

应该这样做不要这样做原因
仅在即将展示时获取对应的版位。启动时并发预取所有版位。批量预取会阻塞主线程,导致启动期间出现黑屏。
在归因数据有机会解析后再调用 getPaywall,例如在 activate 之后等待 1–2 秒,或等待 setOnProfileUpdatedListener 触发后再调用。Application.onCreate() 中调用 getPaywall此时归因数据尚未就绪,付费墙将按默认目标受众进行解析,静默绕过市场细分和 ASA 个性化配置。
为每个版位设置 loadTimeout 并配置备用付费墙无限等待 getPaywall 返回。没有超时限制时,网络较差的用户会看到空白屏幕,直到网络恢复——或者直接关闭应用。
有关 fetchPolicyloadTimeout 参数的说明,请参阅获取付费墙和产品;有关选择合适版位的说明,请参阅版位

针对弱网环境进行调优

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

  • 除首次请求外,每次获取付费墙时将 fetchPolicy 设置为 AdaptyPlacementFetchPolicy.ReturnCacheDataElseLoad
  • 在 Adapty 看板中为每个版位配置备用付费墙
  • loadTimeout 设置为 3–5 秒,并在超时触发时接受备用付费墙。
  • 不要将付费墙的展示逻辑依赖于 getProfile 的返回结果。独立调用 getPaywall,避免因用户画像加载缓慢而阻塞界面。