---
title: "在 iOS SDK 中优化付费墙加载"
description: "可靠地获取 Adapty 付费墙：iOS 的时机、缓存与备用方案。"
---

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

:::tip
以下规则假设 `Adapty.activate()` 和 `Adapty.identify()` 已经执行完毕。请参阅 [iOS SDK 中的调用顺序](ios-sdk-call-order)。
:::
## 规则与注意事项 \{#rules-and-pitfalls\}
| 推荐做法 | 避免做法 | 原因 |
|---|---|---|
| 在即将展示版位时再拉取它。 | 启动时并发预拉取所有版位。 | 批量预拉取会阻塞主线程，并在请求峰值期间出现黑屏。 |
| 在归因有机会完成之后再调用 `getPaywall`——例如在 `activate` 之后等待 1–2 秒，或等 `onProfileUpdate` 触发后再调用。 | 在 `App.init()` 时调用 `getPaywall`。 | 此时归因数据尚未到达，付费墙会按默认目标受众解析，悄然跳过市场细分和 ASA 个性化逻辑。 |
| 为每个版位设置 `loadTimeout` 并配置[备用付费墙](fallback-paywalls)。 | 无限等待 `getPaywall` 返回。 | 没有超时限制时，网络状况差的用户会一直看到空白屏幕，直到网络恢复——或者直接关掉应用。 |
请参阅[获取付费墙和产品](fetch-paywalls-and-products)了解 `fetchPolicy` 和 `loadTimeout` 参数说明，以及[版位](placements)了解如何选择合适的版位。
## 针对网络状况较差的情况进行调优 \{#tune-for-poor-connectivity\}

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

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