优推 YT SDK 生命周期与排错
适用于本仓库 SDK 6.5.1。API 以所安装版本的 framework 公开头为准。
两种广告的 delegate 都是弱引用,回调在主线程触发。媒体应强持有广告对象,在主线程执行页面加载、展示和清理操作。
| 阶段 | 接入方处理 |
|---|---|
ytifly_*AdDidLoad: | 响应解析成功,可以读取 bidInfo、hasVideoTemplate、isLandscapeTemplate;素材可能仍在下载 |
ytifly_*AdDidReady: | 素材已就绪;展示前仍需检查 ytifly_isAdValid 和当前页面状态 |
ytifly_*AdDidShow: | 广告已展示;与有效曝光分开记录 |
ytifly_*AdDidExpose: | 有效曝光回调,不要用加载或展示回调替代 |
点击与 didJumpWithSuccess: | 分别观察用户交互和跳转结果;落地页及商店关闭有各自回调 |
| 视频开始、暂停、恢复、完播 | 仅视频素材触发;视频完播不应被直接当成广告关闭 |
didFailWithError: | 统一处理失败;播放、渲染细分回调按具体公开协议补充 |
| 关闭、跳过或不再使用 | 按广告格式结束业务流程;清理时置空 delegate、调用 ytifly_destroy 并释放引用 |
可左右滚动查看完整表格
ytifly_destroy 可以重复调用,但已销毁实例不能重新加载。不要用固定延时替代 DidReady,不要对同一个实例重复展示。详细回调签名和可选方法以安装版本的 framework 公开头为准。
window 与 Scene
展示、落地页、外跳回流和曝光应归属广告的来源 window/Scene。没有来源时,仅在前台应用 Scene 唯一且明确时使用兜底。开屏 rootVC 须已经入窗;Scene 宿主的 customWindow 必须可见、尺寸有限且为正、已经关联 Scene,并与 rootVC.window 属于同一 Scene。它可以不是 key window,可以具有较高 windowLevel,也可以不设置 rootVC。输入无效时展示失败,修正后可重试。
常见问题
| 现象 | 排查步骤 |
|---|---|
| 找不到模块或头文件 | 确认已安装依赖、target 选择正确、CocoaPods 使用 .xcworkspace,并导入 YTIFLYADLib 伞头 |
| 链接时报重复符号 | 检查是否同时安装了不同接入方式、通用版或其他定制版 |
| 方法找不到或运行时异常 | 检查最终 App target 的 -ObjC 和 $(inherited) 是否保留 |
| 资源缺失或样式异常 | 检查 YTAdvSDK.bundle 是否随依赖投递;手动接入时检查 Copy Bundle Resources |
70204 无填充 | 请求无广告返回;核对广告位、应用绑定、请求条件及投放状态,业务正常继续 |
70400 或 71005 | 核对广告位是否合法、是否为空,以及是否匹配该 App 和广告形式 |
71003 或 71006 | 检查网络、ATS 和超时预算;使用有间隔且次数有限的重试 |
已收到 DidLoad,仍不能展示 | 等待 DidReady;检查素材下载错误和 ytifly_isAdValid |
71406 / 71603 | 插屏/开屏未就绪,等待有效的就绪实例 |
71407 / 71408 / 71409 / 71601 | 广告过期、已使用或已关闭;清理旧实例并重新创建 |
71410 / 71604 | 展示控制器不可用;检查前台状态、window 和页面转场 |
| IDFA 为空 | 检查系统 ATT 状态和用途说明,授权后重新读取;模拟器不能代替真实设备验证 |
| 已开启日志但看不到请求 JSON | 发布版 SDK 仅保留错误和诊断输出,日志开关不会恢复已裁剪的详细日志 |
| HTTP 素材或落地页不可访问 | 根据错误确认是否受 ATS 限制,再按实际需要配置 |
可左右滚动查看完整表格
日志与反馈
请通过双方约定的支持渠道提供 SDK 版本、iOS 与 Xcode 版本、安装方式、广告形式、复现步骤、错误码和必要的脱敏日志。可使用 [YTIFLYAdTool ytifly_sdkVersion] 获取实际 SDK 版本。
公开附件请去除 IDFA、CAID、完整 token、用户信息和含敏感参数的 URL。示例运行步骤、按钮行为和自查清单见 Simple 使用说明;许可证见 LICENSE。