YS 仅开屏接入示例
本示例遵循公开仓 Demo 契约:固定 SDK 版本、独立 Podfile、可复现运行说明和脱敏问题反馈。
本工程使用YSIFLYADLibSplash 6.5.1,演示图片与视频开屏的加载、展示、跳过、关闭和资源释放。依赖名称为YSIFLYADLibSplash,代码仍导入<YSIFLYADLib/YSIFLYADLib.h>。
仅开屏 SDK 与多格式 YSIFLYADLib 使用相同模块和资源,不可同时加入同一 App。完整安装说明见SDK 接入说明。
本示例的 Podfile 固定版本为 6.5.1;窗口与 Scene 的接入条件见广告加载与展示。
下载入口与版本
无需 Git 时,可下载 GitHub main 分支源码 ZIP,解压后进入 YSIFLYADLibSplash_iOS-main/YSIFLYADLibSimple/,再执行下方安装命令。不要只下载 .xcodeproj。使用 Git 的命令见下文;已有副本先确认本页与 Podfile 都固定 SDK 6.5.1。
依赖安装后核对 Podfile.lock 中 YSIFLYADLibSplash 为 6.5.1。版本找不到或锁文件冲突的处理见安装指南。
从下载到运行
准备 macOS、Xcode、CocoaPods 和可访问 CocoaPods trunk 和 TOS 下载地址的网络。最低部署目标为 iOS 11.0。使用模拟器可检查安装、链接和页面;真实广告填充、跳转和 ATT 请用真机联调。
git clone https://github.com/LJMcarryu/YSIFLYADLibSplash_iOS.git
cd YSIFLYADLibSplash_iOS/YSIFLYADLibSimple
pod install
open YSIFLYADLibSimple.xcworkspace- 在 Xcode 选择
YSIFLYADLibSimplescheme 和模拟器或已连接的 iPhone。 - 真机运行前,在 App target 的 Signing & Capabilities 选择自己的 Team;必要时将 Bundle Identifier 改为自己的标识。
- 按下文替换广告位,确认后台授权的 App 信息与当前 App 一致,然后运行。
- 首页应显示
SDK Version: 6.5.1。示例的Podfile固定使用6.5.1,示例页面可以随本仓库更新。
使用 CocoaPods 后始终打开 .xcworkspace。它自动加入 YSAdvSDK.bundle(含隐私清单)和 -ObjC;不需再手工嵌入静态 framework。其他安装方式见SDK 接入说明。
配置广告位与请求
打开 YSIFLYAdPrefixHeader.pch,将需要体验的宏替换为媒体获分配的广告位 ID。仓库内的示例 ID 不保证填充;图片、视频等结果以广告位配置和实际返回为准。
| 宏 | 对应页面/选项 |
|---|---|
__SPLASH_NATIVE_AD_UNIT_ID__ | 图片开屏 |
__SPLASH_VIDEO_AD_UNIT_ID__ | 视频开屏 |
可左右滚动查看完整表格
公共请求参数在 YSIFLYADUtil.m 的 mediaSampleRequestConfig 中:示例超时为 5 秒,settleType = @1、bidFloor = @0.01、interactStatus = @1。这些是演示值,业务接入请按平台约定调整,勿将示例价格作为正式结算配置。App 名称与版本从宿主信息读取。
SDK 不要求额外 App ID 初始化。广告位须与媒体获授权的 App 和广告形式匹配。启动配置见 AppDelegate.m,首页入口见 ViewController.m。
隐私与网络设置
- 示例在 App 激活后申请 ATT,并在每次请求时检查授权、过滤全零 IDFA。拒绝 ATT 时继续以空 IDFA 请求;不要为了取得 IDFA 重复弹窗。
- 示例不包含生产 App 的隐私同意页面。接入自己的 App 时,应按用户授权和业务要求安排 SDK 使用时机;
ysifly_setPersonalizedEnabled:只记录状态,不会代替隐私流程或停止广告请求。 Info.plist含NSUserTrackingUsageDescription和用于测试素材的 ATS 例外。生产 App 请使用准确的用途文案,并按实际网络需求收窄 ATS 配置。- 示例开启日志便于查看回调。上线前按需关闭
ysifly_setLogEnabled:,反馈问题时隐藏设备标识、Token 和业务敏感数据。
体验开屏
首页只有“开屏广告”入口,对应 YSIFLYSplashViewController.m。
- 选择“图片开屏”或“视频开屏”,点击
Load。每次加载都会清理旧对象并创建新实例。 - 日志出现
splashAdDidLoad表示响应已解析。继续等待splashAdDidReady;广告有效后Show才可点击。 - 点击
Show。示例使用YSIFLYSplashAdConfig,展示倒计时与底部品牌区;视频初始静音,并显示静音按钮。 - 查看展示、曝光、点击、跳转、跳过和关闭回调。关闭后可再次加载;已展示的对象不能作为下一次广告机会复用。
- “检查状态”记录
ysifly_isAdValid和公开竞价信息;Destroy终止当前广告。退出页面会释放广告。
本例手动展示便于观察回调。实际启动页请由宿主协调隐私授权、广告请求与展示时机,并保留超时/失败后的主流程。SDK 不需要宿主再次 present 开屏控制器;将当前有效控制器传给 ysifly_showAdFromRootViewController:config: 即可。
图片与视频共用 YSIFLYSplashAd;是否返回视频以 hasVideoTemplate 和实际素材为准。示例底部品牌区由 bottomLogoView 创建,可参考其尺寸和布局方式换成自己的品牌内容。
如何确认接入成功
| 阶段 | 可观察结果 |
|---|---|
| 安装 | pod install 成功,workspace 构建和运行通过 |
| 首页 | 显示 SDK Version: 6.5.1,只有开屏入口 |
| 加载 | splashAdDidLoad 后出现 splashAdDidReady,Show 可点击 |
| 展示 | 图片/视频可见,收到 splashAdDidShow;满足可见条件后收到曝光回调 |
| 关闭 | 跳过或关闭后回到示例页面,能够发起下一次加载 |
| 失败处理 | 断网、超时或无填充时记录错误,Show 不会启用,页面可操作 |
| 真机交互 | 验证点击跳转与返回、前后台切换、视频声音及 ATT 拒绝/授权路径 |
可左右滚动查看完整表格
构建成功只证明依赖可以消费和链接。示例广告位、模拟器或当前请求无填充时,不代表安装错误;需使用媒体获分配的广告位在真机继续联调。
常见问题
| 现象 | 检查方法 |
|---|---|
| 下载依赖失败 | 检查 CocoaPods trunk、TOS 下载地址、代理和证书,按错误信息定位后重试 |
找不到 YSIFLYADLibSplash 头 | YSIFLYADLibSplash 是依赖/产品名,导入模块为 YSIFLYADLib;使用 workspace |
| 重复符号或资源 | 移除原多格式 YS 依赖及手工拷贝文件,只保留当前 SDK 和一份 YSAdvSDK.bundle |
| 真机签名失败 | 设置自己的 Team、Bundle Identifier 并确认设备可开发 |
| Show 不可点击 | 需收到 Ready 且实例有效;查看错误日志,不能仅凭 DidLoad 展示 |
| 广告无填充 | 核对广告位、App 信息、开屏类型、后台授权与网络;不要循环无间隔重试 |
| IDFA 为空 | 未授权或拒绝 ATT 时为空是预期行为;授权后新请求会重新读取 |
| 视频或图标异常 | 检查素材错误回调和 YSAdvSDK.bundle 是否被正确复制到 App |
| 展示失败或黑屏 | 确认当前控制器已位于有效 window、App 在前台;避免与其他模态展示冲突 |
可左右滚动查看完整表格
先查错误处理与反馈;仍需帮助时通过双方约定的支持渠道反馈,附 SDK/iOS/Xcode 版本、设备类型、复现步骤、错误码和脱敏日志。版本变化见更新记录。