在 iOS SDK 中优化付费墙加载
在 iOS 上可靠地获取付费墙需要做到三点:快速渲染、返回面向目标受众的付费墙,以及在网络较慢时优雅地回退到备用方案。以下规则涵盖了实现这些目标所需的时机、缓存与备用方案。
以下规则假设 Adapty.activate() 和 Adapty.identify() 已经执行完毕。请参阅 iOS SDK 中的调用顺序。
规则与注意事项
| 推荐做法 | 避免做法 | 原因 |
|---|---|---|
| 在即将展示版位时再拉取它。 | 启动时并发预拉取所有版位。 | 批量预拉取会阻塞主线程,并在请求峰值期间出现黑屏。 |
在归因有机会完成之后再调用 getPaywall——例如在 activate 之后等待 1–2 秒,或等 onProfileUpdate 触发后再调用。 | 在 App.init() 时调用 getPaywall。 | 此时归因数据尚未到达,付费墙会按默认目标受众解析,悄然跳过市场细分和 ASA 个性化逻辑。 |
为每个版位设置 loadTimeout 并配置备用付费墙。 | 无限等待 getPaywall 返回。 | 没有超时限制时,网络状况差的用户会一直看到空白屏幕,直到网络恢复——或者直接关掉应用。 |
请参阅获取付费墙和产品了解 fetchPolicy 和 loadTimeout 参数说明,以及版位了解如何选择合适的版位。 |
针对网络状况较差的情况进行调优
针对网络连接持续不稳定的市场(如农村地区、交通途中、受路由影响的地区):
- 除首次请求外,所有获取操作均设置
fetchPolicy: .returnCacheDataElseLoad。 - 在 Adapty 看板中为每个版位配置备用付费墙。
- 将
loadTimeout设置为 3–5 秒,超时后直接使用备用付费墙。 - 不要将付费墙的显示依赖于
getProfile()的结果。独立调用getPaywall,避免因 profile 响应慢而阻塞 UI。