> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kontext.so/llms.txt
> Use this file to discover all available pages before exploring further.

# 调试

> 读取 SDK 的日志、检查它的状态，以及每个错误的含义。

## 日志

初始化时设置日志级别：

```swift theme={null}
KontextVideo.shared.initialize(with: .init(publisherToken: "…", logLevel: .debug))
```

级别依次包含上一级：`.none`、`.error`、`.warning`（默认）、`.info`、`.debug`。在 `.debug` 下，SDK 记录每次请求及其回答、每个广告及其价格、每次加载、展示和带原因的结束，以及每个追踪事件的触发。日志行进入统一日志，子系统为 `so.kontext.video`；在 Console.app 中按该子系统过滤即可只看 SDK。

发布时改回 `.warning`。

## 状态

`initialize(with:)` 通过它的 completion 或 `async` 结果告诉你 SDK 处于哪里：

| 状态 | 含义 |
| - | - |
| `.enabled` | 就绪 |
| `.disabled(reason)` | 服务器在本次启动中关闭了 SDK，例如我们不再投放的应用版本。应用重启前没有广告 |
| `.failed` | 启动时无法连接我们。每次广告请求会先重试 |

## 错误

每个无法完成工作的调用都会抛错，而抛错意味着屏幕上什么都没发生。集成时你会遇到的有：

| 错误 | 含义 | 怎么办 |
| - | - | - |
| `notInitialized` | 在 `initialize(with:)` 之前调用了 `format()` | 启动时初始化 |
| `noFill(reason)` | 服务器没有该格式的广告 | 正常：这个时刻没有广告主出价。在下一个时刻再请求 |
| `creativeFailed(code)` | 素材十秒内未加载完成 | 少见；广告失效，再请求一个 |
| `notLoaded` | `load()` 完成前就 `show()` | 先 await `load()` |
| `anotherAdShowing` | 每个应用同一时间一个广告在屏幕上 | 另一个结束后再展示 |
| `invalidated(reason)` | 广告在 `show()` 前过期、被拒绝或被销毁 | 请求一个新的 |
| `containerTooSmall` | 视图对素材来说太小 | 更大的视图，或拒绝 |
| `presenterUnavailable` | 屏幕上没有东西能承载广告：线性广告没有可呈现的控制器，或叠加/暂停广告的视图不在窗口中 | 视图上屏后再试，或传入正确的视图或控制器 |
| `wrongPresentation` | 对叠加广告调用 `show()`，或对线性广告调用 `show(in:)` 或 `dismiss()` | 用另一个方法 |

完整列表见 [API 参考](https://docs.kontext.so/zh/video/sdk/swift/api.md#videoaderror)。

## 看起来不对劲时

1. 设置 `logLevel: .debug` 并复现。
2. 从控制台复制 SDK 的日志行，从 `initialize` 到出错的那一刻。
3. 连同你的发布方 token 和日志中的广告 id 发送到 [support@kontext.so](mailto:support@kontext.so)。

日志包含我们在自己这边回放事件所需的一切。


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.