优酷定制 SDK 安装方式
环境要求
- 使用 macOS 与 Xcode,App 最低部署目标为 iOS 11.0。SwiftPM 清单要求 Swift tools 5.9,使用 Xcode 15 或更新版本;本版构建验证工具为 Xcode 26.2。部署目标声明不代表每个 iOS 版本均已真机验证。
- CocoaPods 方式先安装可运行的 CocoaPods(终端执行
pod --version检查);运行手动示例另需 Python 3(python3 --version)。 - 选择 CocoaPods、SwiftPM、手动集成中的一种。升级或更换方式前移除旧 SDK 引用和重复资源,保留其他业务依赖。
- 接入前向平台取得与 App、渠道及广告形式匹配的广告位;下载和编译不要求广告填充,实际加载与展示需要有效广告位及网络。
CocoaPods
在终端进入自己 App 的 .xcodeproj 所在目录;已有 Podfile 时编辑原文件,没有时先执行 pod init。将 YourApp 替换为实际 App target 名,不是 Bundle Identifier;保留项目其他依赖:
source 'https://cdn.cocoapods.org/'
platform :ios, '11.0'
target 'YourApp' do
use_frameworks!
pod 'YKIFLYADLib', '6.5.1'
end在 Podfile 所在目录执行:
pod install
open YourApp.xcworkspaceCocoaPods 从官方 trunk 获取清单,从 TOS 下载二进制,自动配置资源、隐私清单、-ObjC 与系统依赖。后续打开 .xcworkspace,不要只打开 .xcodeproj。检查 Podfile.lock 中 YKIFLYADLib 为 6.5.1,并将锁文件纳入自己的版本管理。无需另从 GitHub 或 TOS 手动复制 bundle。
若本地源找不到版本,执行 pod install --repo-update。若提示锁文件与明确指定的新版本冲突,执行 pod update YKIFLYADLib --repo-update 并检查锁文件差异,不使用不带名称的全量 pod update 来处理单个 SDK 升级。
Swift Package Manager
- 在 Xcode 打开自己的 App 工程,选择 File → Add Package Dependencies…,输入包地址:
https://github.com/LJMcarryu/YKIFLYADLib_iOS.git。 - 在 Dependency Rule 选择 Exact Version,填写
6.5.1,确认 Add to Project 为自己的工程,再点 Add Package。不要选 main 分支作为 SDK 版本。 - 在 Product 选择页勾选 IFLYADLib,Add to Target 选择实际 App target。等待包解析、二进制下载完成;资源与隐私清单由资源 target 自动投递,不要再手工添加 bundle。
- 在 App target 的 Other Linker Flags 保留
$(inherited) -ObjC;链接AdSupport.framework,将AppTrackingTransparency.framework设为 Optional。 - 在工程 Package Dependencies 确认版本为
6.5.1;保留Package.resolved。按下方模块名导入并编译。下载失败先核对 GitHub 与 TOS 的可达性;确认网络恢复后通过 File → Packages → Resolve Package Versions 重试。
此渠道的 Product/Pod 名与代码模块可能不同:代码始终使用 IFLYADLib,不能把 YKIFLYADLib 当作头文件目录。
手动集成
下面用于把 SDK 接入自己的 App。若只想运行现成示例,直接按 手动示例 README 下载工程并运行准备脚本,工程已经配置了资源和链接参数。
下载哪些文件
| 下载文件 | 来源与用途 |
|---|---|
| YKIFLYADLib-6.5.1.zip | TOS 同版完整二进制包 |
| checksums.txt | 上述包的 SHA-256,读取 Combined 行的 sha256= 值 |
可左右滚动查看完整表格
完整 ZIP 已包含 IFLYADLib.xcframework 和 IFLYPlayer.bundle,不需要另外从 GitHub 下载 bundle。 IFLYPlayer.bundle/PrivacyInfo.xcprivacy 随完整 bundle 一起复制。名称带 .xcframework.zip 的单独二进制包不包含外置 bundle,首次手动接入请使用上面的完整包。
下载、校验与解压
在一个新的工作目录打开终端,依次执行以下命令。checksums.txt 是发布清单格式,不直接传给 shasum -c;下例提取目标文件生成标准校验行。校验必须输出 YKIFLYADLib-6.5.1.zip: OK,不一致时停止并重新下载,不能继续使用该文件。
mkdir -p YKIFLYADLib-6.5.1-manual
cd YKIFLYADLib-6.5.1-manual
curl --fail --location --output YKIFLYADLib-6.5.1.zip \
https://download-adsdk.voiceads.cn/ios_sdk/6.5.1/youku/YKIFLYADLib-6.5.1.zip
curl --fail --location --output checksums.txt \
https://download-adsdk.voiceads.cn/ios_sdk/6.5.1/youku/checksums.txt
awk '$1 == "Combined" && $2 == "YKIFLYADLib-6.5.1.zip" {sub(/^sha256=/, "", $3); print $3 " " $2}' \
checksums.txt > binary.sha256
shasum -a 256 -c binary.sha256 && ditto -x -k YKIFLYADLib-6.5.1.zip SDK解压后应看到以下两个同级目录;不要只取 XCFramework 内部的一个平台切片:
SDK/
├── IFLYADLib.xcframework/
└── IFLYPlayer.bundle/
└── PrivacyInfo.xcprivacy
| 操作 | 文件 |
|---|---|
| 链接二进制 | SDK/IFLYADLib.xcframework |
| Copy Bundle Resources | SDK/IFLYPlayer.bundle,完整保留内部隐私清单 |
可左右滚动查看完整表格
不要额外从 framework 内取出另一份隐私文件或重复添加同名 bundle。
加入自己的 Xcode 工程
- 在工程目录新建
Vendor/IFLYSDK/6.5.1/,放入上表要求的 XCFramework、完整 bundle 和隐私清单。保留文件名与 bundle 内部结构,不要引用“下载”目录中的临时文件。 - 在 Xcode 选择 File → Add Files to “YourApp”…,选中所需
.xcframework根目录和资源。文件尚未位于工程目录时勾选 Copy items if needed(新版 Xcode 为 Copy files to destination),并勾选自己的 App target。不要选单个平台切片,也不要把整个下载目录拖入 target。 - 在 App target → General → Frameworks, Libraries, and Embedded Content 核对每个 XCFramework 只出现一次,全部设为 Do Not Embed。静态库参与链接,不使用 Embed & Sign。
- 在 App target → Build Phases → Copy Bundle Resources 加入上表所需资源。每个
.bundle以完整包加入,不展开后逐个拖入图片;这里不能出现 XCFramework、ZIP、__MACOSX或重复资源。framework 内部含资源不代表资源已经复制到 App。 - 在 Build Settings → Other Linker Flags 中,为 Debug 和 Release 保留
$(inherited)并添加-ObjC。在 Build Phases → Link Binary With Libraries 添加AdSupport.framework,把AppTrackingTransparency.framework的 Status 设为 Optional。 - 按下文导入模块并编译。完成安装检查后,再按本渠道隐私与广告指南发起请求;仅添加 SDK 不会自动请求广告。
导入与共存
三种安装方式的代码导入一致:
#import <IFLYADLib/IFLYADLib.h>import IFLYADLib不要同时链接通用版或其他定制包;优酷版与通用版使用相同 IFLY* 符号。
安装结果检查
- 在 Xcode 选择 App scheme 和已安装的 iOS Simulator,执行 Product → Build。应完成编译与链接,没有模块缺失、重复符号或重复资源输出错误。
- 手动集成时,在 Products 下找到自己的
.app,右键 Show in Finder,再 Show Package Contents。应看到IFLYPlayer.bundle,内部包含PrivacyInfo.xcprivacy。不要只检查下载 ZIP 中存在资源。 - CocoaPods/SwiftPM 的资源可能位于生成的资源 bundle 中;检查最终 App 内能找到 SDK 资源和隐私清单,不要求目录与手动方式完全相同。可把下方路径替换为实际构建得到的
.app路径,在终端列出:
find "/绝对路径/YourApp.app" \( -name '*.bundle' -o -name 'PrivacyInfo.xcprivacy' \) -print安装失败排查
| 现象 | 检查与处理 |
|---|---|
| 下载为 HTML、404 或校验失败 | 使用本页同版直链,检查网络;重新下载并核对 SHA-256,不能跳过校验 |
| CocoaPods 找不到版本或仍为旧版 | 核对 Pod 名、精确版本、官方源和锁文件,按上文刷新源或定向更新 |
| SwiftPM 找不到模块 | 核对 Exact Version、Product 的 App target 归属和导入名;等待下载完成,再解析依赖 |
| 手动方式找不到模块或缺架构 | 添加完整 XCFramework 根目录,移除失效的旧引用,不手选平台切片或复制旧头 |
| duplicate symbols | 检查是否混装 Pods、SwiftPM、手动库,或同时链接多个渠道 |
| Multiple commands produce / 资源重复 | 检查 Copy Bundle Resources;同一 bundle 只保留一次,处理同名隐私清单冲突 |
| 能编译但资源缺失 | 按上面的最终 .app 检查路径,保留 bundle 名称及目录,不把图片散拷到 App 根目录 |
| 广告未展示 | 先区分安装错误与请求无填充;核对本渠道广告位、回调错误、Ready、页面和窗口状态 |
可左右滚动查看完整表格
反馈时附 SDK 版本、接入方式、Xcode/iOS 版本、所选模块及完整错误信息;日志先移除 token、设备标识和业务敏感参数。