本页目录

优推 YT SDK 安装方式

适用于 SDK 6.5.1。接入概览 · 指南目录

环境要求

  • 使用 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 'YTIFLYADLib', '6.5.1'
end

在 Podfile 所在目录执行:

pod install
open YourApp.xcworkspace

CocoaPods 从官方 trunk 获取清单,从 TOS 下载二进制,自动配置资源、隐私清单、-ObjC 与系统依赖。后续打开 .xcworkspace,不要只打开 .xcodeproj。检查 Podfile.lock 中 YTIFLYADLib 为 6.5.1,并将锁文件纳入自己的版本管理。无需另从 GitHub 或 TOS 手动复制 bundle。

若本地源找不到版本,执行 pod install --repo-update。若提示锁文件与明确指定的新版本冲突,执行 pod update YTIFLYADLib --repo-update 并检查锁文件差异,不使用不带名称的全量 pod update 来处理单个 SDK 升级。

Swift Package Manager

  1. 在 Xcode 打开自己的 App 工程,选择 File → Add Package Dependencies…,输入包地址:https://github.com/LJMcarryu/YTIFLYADLib_iOS.git。
  2. 在 Dependency Rule 选择 Exact Version,填写 6.5.1,确认 Add to Project 为自己的工程,再点 Add Package。不要选 main 分支作为 SDK 版本。
  3. 在 Product 选择页勾选 YTIFLYADLib,Add to Target 选择实际 App target。等待包解析、二进制下载完成;资源与隐私清单由资源 target 自动投递,不要再手工添加 bundle。
  4. 在 App target 的 Other Linker Flags 保留 $(inherited) -ObjC;链接 AdSupport.framework,将 AppTrackingTransparency.framework 设为 Optional。
  5. 在工程 Package Dependencies 确认版本为 6.5.1;保留 Package.resolved。按下方模块名导入并编译。下载失败先核对 GitHub 与 TOS 的可达性;确认网络恢复后通过 File → Packages → Resolve Package Versions 重试。

手动集成

下面用于把 SDK 接入自己的 App。若只想运行现成示例,直接按 手动示例 README 下载工程并运行准备脚本,工程已经配置了资源和链接参数。

下载哪些文件

下载文件来源与用途
YTIFLYADLib-6.5.1.zipTOS 同版完整二进制包
checksums.txt上述包的 SHA-256,读取 Combined 行的 sha256= 值

可左右滚动查看完整表格

完整 ZIP 已包含 YTIFLYADLib.xcframework 和 YTAdvSDK.bundle,不需要另外从 GitHub 下载 bundle。 YTAdvSDK.bundle/PrivacyInfo.xcprivacy 随完整 bundle 一起复制。名称带 .xcframework.zip 的单独二进制包不包含外置 bundle,首次手动接入请使用上面的完整包。

下载、校验与解压

在一个新的工作目录打开终端,依次执行以下命令。checksums.txt 是发布清单格式,不直接传给 shasum -c;下例提取目标文件生成标准校验行。校验必须输出 YTIFLYADLib-6.5.1.zip: OK,不一致时停止并重新下载,不能继续使用该文件。

mkdir -p YTIFLYADLib-6.5.1-manual
cd YTIFLYADLib-6.5.1-manual
curl --fail --location --output YTIFLYADLib-6.5.1.zip \
  https://download-adsdk.voiceads.cn/ios_sdk/6.5.1/yt/YTIFLYADLib-6.5.1.zip
curl --fail --location --output checksums.txt \
  https://download-adsdk.voiceads.cn/ios_sdk/6.5.1/yt/checksums.txt
awk '$1 == "Combined" && $2 == "YTIFLYADLib-6.5.1.zip" {sub(/^sha256=/, "", $3); print $3 "  " $2}' \
  checksums.txt > binary.sha256
shasum -a 256 -c binary.sha256 && ditto -x -k YTIFLYADLib-6.5.1.zip SDK

解压后应看到以下两个同级目录;不要只取 XCFramework 内部的一个平台切片:

SDK/
├── YTIFLYADLib.xcframework/
└── YTAdvSDK.bundle/
    └── PrivacyInfo.xcprivacy
操作文件
链接二进制SDK/YTIFLYADLib.xcframework
Copy Bundle ResourcesSDK/YTAdvSDK.bundle,完整保留内部隐私清单

可左右滚动查看完整表格

不要额外从 framework 内取出另一份隐私文件或重复添加同名 bundle。

加入自己的 Xcode 工程

  1. 在工程目录新建 Vendor/IFLYSDK/6.5.1/,放入上表要求的 XCFramework、完整 bundle 和隐私清单。保留文件名与 bundle 内部结构,不要引用“下载”目录中的临时文件。
  2. 在 Xcode 选择 File → Add Files to “YourApp”…,选中所需 .xcframework 根目录和资源。文件尚未位于工程目录时勾选 Copy items if needed(新版 Xcode 为 Copy files to destination),并勾选自己的 App target。不要选单个平台切片,也不要把整个下载目录拖入 target。
  3. 在 App target → General → Frameworks, Libraries, and Embedded Content 核对每个 XCFramework 只出现一次,全部设为 Do Not Embed。静态库参与链接,不使用 Embed & Sign。
  4. 在 App target → Build Phases → Copy Bundle Resources 加入上表所需资源。每个 .bundle 以完整包加入,不展开后逐个拖入图片;这里不能出现 XCFramework、ZIP、__MACOSX 或重复资源。framework 内部含资源不代表资源已经复制到 App。
  5. 在 Build Settings → Other Linker Flags 中,为 Debug 和 Release 保留 $(inherited) 并添加 -ObjC。在 Build Phases → Link Binary With Libraries 添加 AdSupport.framework,把 AppTrackingTransparency.framework 的 Status 设为 Optional。
  6. 按下文导入模块并编译。完成安装检查后,再按本渠道隐私与广告指南发起请求;仅添加 SDK 不会自动请求广告。

导入与共存

三种安装方式的代码导入一致:

#import <YTIFLYADLib/YTIFLYADLib.h>
import YTIFLYADLib

不要在同一 App 混装其他渠道或重复安装本 SDK。

安装结果检查

  1. 在 Xcode 选择 App scheme 和已安装的 iOS Simulator,执行 Product → Build。应完成编译与链接,没有模块缺失、重复符号或重复资源输出错误。
  2. 手动集成时,在 Products 下找到自己的 .app,右键 Show in Finder,再 Show Package Contents。应看到 YTAdvSDK.bundle,内部包含 PrivacyInfo.xcprivacy。不要只检查下载 ZIP 中存在资源。
  3. CocoaPods/SwiftPM 的资源可能位于生成的资源 bundle 中;检查最终 App 内能找到 SDK 资源和隐私清单,不要求目录与手动方式完全相同。可把下方路径替换为实际构建得到的 .app 路径,在终端列出:
find "/绝对路径/YourApp.app" \( -name '*.bundle' -o -name 'PrivacyInfo.xcprivacy' \) -print
  1. 按隐私配置接入授权和请求前配置,再按广告指南验证加载、就绪、展示、失败与退出流程。编译通过不代表有广告填充、真机行为或上架审核通过。

安装失败排查

现象检查与处理
下载为 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、设备标识和业务敏感参数。