Skip to content

iOS SDK 更新日志 ​

版本号日期说明
Compat 3.4.92026.11.01旧 Xcode 兼容线首发(UjuAdCoreCompat 3.4.9 / UjuAdExtCompat 3.5.10 / UjuCsjAdapterCompat 1.0.0):供 Xcode 26.4~26.6(Swift 6.3.x)宿主接入。主线包的 Swift 模块由 Xcode 27(Swift 6.4)工具链编译,Swift 二进制模块跨编译器版本不兼容,旧编译器导入即报 module compiled with Swift 6.4 cannot be imported by the Swift 6.3.3 compiler(历届主线包均为 6.4 编译,降版本无法绕开)。Compat 线内容与主线同版本完全一致,Swift 模块改以 swift.org swift-6.3-RELEASE(Swift 6.3.0)工具链整链重编,模块名不变,业务代码零改动,仅 Podfile 换 pod 名(三件整组替换,严禁与主线混用,详见 FAQ Q23)。边界:Swift 模块跨版本双向不兼容,Compat 线仅限 Xcode 26.4~26.6;升级 Xcode 27 后换回主线 pod 名即可
3.4.92026.10.30修复热启动开屏偶发丢回调:开屏展示后、倒计时尚未启动时 App 切后台,回前台后无人恢复倒计时,开屏永不关闭——onAdDismissed / onAdError 均不回调,宿主侧 presenting 守卫永久卡死,后续每轮热启动被静默跳过(接入方 2026-10-22 真机日志,此前需 App 侧切后台强制结束上一轮自救)。修复:① 倒计时未启动即切后台时挂起待补标记,回前台自动补启动;② 新增展示期看门狗(倒计时时长 + 10s,后台暂停 / 前台续跑),渲染完成回调丢失、后台挂起、present 卡住等病态路径一律兜底关闭,保证关闭回调在有界时间内必达,集成方 App 侧兜底可移除。不影响接入方式与公开 API,可搭配 UjuAdExt 3.5.10
3.4.82026.10.30UjuAdExt 3.5.10(发版说明勘误与修复,配套 UjuAdCore 3.4.8):① 修复动态库 dSYM 为空壳的问题——3.5.4~3.5.9 随包的 Adx33_Core(3.5.7 及以下还包括 Adx22_SSL)dSYM 是用二进制本体构造的 UUID 匹配壳:UUID 正确、可函数级符号化,但不含 DWARF(零编译单元),无法行级符号化,也不能作为有效符号通过 App Store Connect 校验(我们此前文档声称"≥ 3.5.4 即解决"是错误的,向受影响的接入方致歉;完整 dSYM 补发包与历史版本处理方式见 FAQ Q19);本版起随包 DSP 原厂完整 dSYM(真机切片 281 / 模拟器切片 562 个编译单元,UUID 与既有二进制一致),并在打包期新增 dSYM 内容审计(UUID 匹配 + 编译单元 > 0 + 孤儿/壳特征阻断,与 3.5.9 的资源存在性审计互补);② 剔除随包 Adx33_Core.framework 内残留的 DSP 调试脚本 debug.lua(二进制内无引用,随包属打包卫生缺陷);③ 集成文档修正:Vendor 目录"全部静态库"的错误表述更正(Adx33_Core 为动态库,须 Embed & Sign、绝不能 -force_load),dSYM 随包版本口径统一(此前 3.5.4 / 3.5.7 两个说法并存);④ 新增 Adx22 剔除迁移指引(FAQ Q22),补齐 UjuAdCore 发版附件 sha256
3.4.82026.10.30预算源模版渲染加固(配套 UjuAdExt 3.5.9,podspec 已要求 UjuAdCore ~> 3.4.8):① UjuAdExt 3.5.9 补齐 Adx28 资源 bundle——该预算源 SDK 按名加载的模版 UI 素材(关闭按钮 / 静音 / 播放按钮 / 滑动引导 / 广告标识等 14 项)此前从未随包分发,模版渲染时静默缺失,现随包分发,并在打包期新增资源完整性审计(扫描二进制的 bundle / 素材引用并与随包内容、podspec 声明三方校验,同类缺失此后构建期即拦截);② 信息流 / 横幅模版挂载几何统一:模版视图尺寸就绪时经等比缩放宿主挂载,不再把展示时刻的帧高度用 required 约束钉死(渲染异步完成时该值可能过期 / 为 0),横幅模版实际高度与容器槽高失配时保持真实比例并回调 FeedAdObjectListener.onAdSizeChanged(不再被四边贴齐拉伸 / 裁切),比例一致时行为与此前完全一致;③ 素材链路失败显式化:核心自渲主图下载失败不再静默空白(显式日志 + 自动重试一次),Adx32 预算源多图创意截断 / icon 下载失败 / 视频降级为静态图补观测日志
3.4.72026.10.28UjuAdExt 3.5.8:剔除 Adx22 预算源(其第三方 SDK 静态库导出未加前缀的全局符号,与接入方 App 同时集成的部分第三方 SDK 冲突,产生 duplicate symbol 链接失败;SDK 反射未发现该适配器时自动跳过,其余预算源不受影响)。Vendor/ 目录调整为 5 个(Adx21 / Adx24 / Adx28 / Adx32 / Adx33),zip 体积约 123 MB,动态库仅剩 Adx33_Core;仍在使用 Adx22 的广告位请改配其他预算源,或暂时保持 UjuAdExt 3.5.7。迁移清单见 FAQ Q22
3.4.72026.10.28初始化策略拉取失败自愈(配套 UjuAdExt 3.5.7,podspec 已要求 UjuAdCore ~> 3.4.7):① 首次 App 策略拉取失败时立即应用默认策略并放行初始化(不再阻塞数秒),后台按 3s / 10s / 30s 退避自动补拉,补拉成功的账号配置直接初始化对应预算源适配器(此前迟到的账号配置会滞留不再处理,表现为宿主安装后策略长期不更新、全部预算源"适配器未初始化");② 插屏请求 slot 与展示媒体区统一为 0.82 窗宽 × 3:4 口径,创意不再因比例失配被裁切,插屏卡片新增不出窗约束保证关闭按钮 / 广告角标始终可见,H5 模版超宽时自动等比缩放(shrink-to-fit);③ 补充策略加载 / 定时刷新观测日志。UjuAdExt 3.5.7 为配套版本(无功能变更,依赖收紧 UjuAdCore ~> 3.4.7)
3.4.72026.10.28UjuRevGromoreAdapter 3.4.7:信息流适配器实现 FeedAdObjectListener.onAdSizeChanged,折叠屏展开 / 收起时同步 GroMore 模板视图尺寸;新增调试比价倍率开关(UserDefaults key uju.debug.gromoreEcpmMultiplier,默认 1 不生效,仅用于比价落败排查);兼容穿山甲融合 SDK 7.9.x(7.9.0.0 真机验证通过),podspec 依赖放开 Ads-CN-Beta ~> 7.8、收紧 UjuAdCore ~> 3.4.7。详见 GroMore 自定义接入
3.4.62026.10.27iOS 27.1 / iPhone Duo 折叠屏适配(配套 UjuAdExt 3.5.6,podspec 已要求 UjuAdCore ~> 3.4.6):① 屏幕尺寸 / 缩放 / 方向改为以宿主当前窗口场景实时读取(不再使用初始化时快照、不再依赖已废弃的 UIScreen.main),竞价 slot 尺寸与各预算源模版加载尺寸随折叠 / 展开 / 分屏 / 旋转变化;② UjuAdConfig.adViewSize 正式生效(单位逻辑点,作为横幅 / 原生的竞价 slot 与模版加载尺寸,宽度不超过窗口宽);③ 新增 FeedAdObjectListener.onAdSizeChanged(width:height:)(默认空实现),横幅 / 原生渲染后尺寸变化时回调;④ 插屏卡片 regular 宽度限宽 420pt,并修正宽窗口 / 横向下卡片可能溢出屏幕的约束优先级问题;激励页 regular 宽度内容列居中限宽并响应 size class 切换;⑤ UjuAdExt 3.5.6:预算源模版视图随容器宽度自动重新缩放(不再停留在首次展示的缩放结果),开屏视图随窗口 resize,去掉按竖屏归一化请求尺寸的逻辑。详见 FAQ Q21
3.4.52026.10.22竞价底价生效:广告位策略按预算源下发的竞价底价,现随各预算源的询价请求一并传递(需搭配 UjuAdExt 3.5.5,podspec 已要求 UjuAdCore ~> 3.4.5);UjuAdExt 3.5.5 同时修复 3.5.4 zip 中 dSYM 目录布局问题(XCFramework 手动集成场景受影响,CocoaPods 集成不受影响)
3.4.52026.10.22UjuRevGromoreAdapter 3.4.5:修复适配器回调丢失(bridge 改为强持有,此前 GroMore 释放 loader 后回调可能丢失,表现为广告加载成功但聚合层无填充记录、竞价不生效);mediatedAdStatus 对齐官方参考实现(仅返回 valid 状态);信息流适配器补充 deinit 兜底销毁;新增 bridge 回调派发日志。3.4.3 集成方建议升级
3.4.42026.10.22SDK 稳定性加固(不影响接入方式与公开 API):① 崩溃捕获不再触碰 SIGPIPE,并保存/还原宿主先于 SDK 注册的崩溃处理器(不再顶掉 Bugly/Crashlytics 等);② 退后台统计上报改为后台队列执行(原在主线程同步等待网络最长 30s,弱网下可触发系统 watchdog 终止宿主 App);③ 服务器下发竞价价格统一净化(NaN/Infinity/超范围值不再导致崩溃)。UjuAdExt 3.5.4 podspec 已要求 UjuAdCore ~> 3.4.4,建议所有集成方升级
3.4.32026.10.22UjuAdExt 3.5.4:随包携带两个动态库第三方 SDK(Adx22_SSL / Adx33_Core)的 dSYM(xcframework 同级 .dSYMs 目录 + xcframework 内置),修复 App Store Connect 上传符号报 "Upload Symbols Failed / missing dSYM";CocoaPods 集成归档自动包含 dSYM,手动集成的处理方式见 FAQ Q19。[2026-10-30 勘误] 该批随包 dSYM 实为函数级符号壳(零编译单元,不可行级符号化),本行"修复"表述不成立;完整 dSYM 补发与修复见 FAQ Q19
3.4.32026.10.21UjuAdExt 3.5.3:修复 3.5.2 中两个动态库类型的第三方 SDK 在真机运行时加载失败的问题,集成方式与 3.5.2 完全一致;3.5.2 集成方建议尽快升级到 3.5.3
3.4.32026.10.21错误码规范化:广告无填充(优聚 ADX 无出价及聚合预算源无广告返回)onLoadError 统一回调 code=102 / message="无填充",其他加载失败仍为 code=100;配套发布 UjuAdExt 3.5.1(预算扩展包),并修复部分聚合预算源广告无法展示的问题。UjuAdExt 3.5.1 必须搭配 UjuAdCore ≥ 3.4.3 使用
3.4.32026.10.21新增 UjuRevGromoreAdapter 3.4.3(穿山甲 GroMore 反向适配器,自定义 ADN,支持 Client Bidding,自动依赖 Ads-CN-Beta 7.8.x);UjuRevToBidAdapter 5.7.4 / UjuCsjAdapter 1.0.0 自动依赖对应第三方 SDK
3.4.32026.10.21CocoaPods 集成修复:各组件 podspec 统一注入 -force_load / SWIFT_INCLUDE_PATHS(真机与模拟器均可正常链接),部署目标统一为 iOS 15.0;UjuAdExt 3.5.1 暂不支持 CocoaPods 集成,请使用手动集成
3.4.32026.10.21UjuAdExt 3.5.2:第三方 DSP SDK 内层 framework 与外层中性名一致,CocoaPods 集成可用(模拟器需按文档 post_install 以 x86_64 构建);手动集成方式不变
3.4.22026.8.15新增 UjuAdExt 预算包:扩展广告填充来源;新增 UjuAdExt.podspec + 构建脚本(支持按需编译);接入文档补充 UjuAdExt 集成说明。
3.4.22026.8.9集成修订:Build Settings 新增 -force_load 与 ENABLE_DEBUG_DYLIB=NO 必填项;修复 Xcode 26 下 ManagedAtomic.__allocating_init EXC_BAD_ACCESS 崩溃(详见 FAQ Q12);UjuGRPCStatic 重新合并入 UjuAdCore.xcframework(单 xcframework 分发)。
3.4.22026.7.26初版发布:支持 5 种广告格式(开屏 / 激励视频 / 插屏 / 横幅 / 原生);XCFramework + CocoaPods 双集成方式;符号混淆(strip -x);内置 ADX 自有广告源;区域配置(.domestic / .singapore)。

联系我们 ​

  • 技术支持:marco@ujuad.com

相关链接 ​