1.2.0(2026-07-31)
Added
- WebView 预热能力(五端统一):新增
TencentQianWebViewPrewarmer(OC 版 TQWebViewPrewarmer)统一入口,纯新增、不改任何已放开 API。两个正交维度——网络预热(省网络加载时间)+ WebView 复用池(省实例创建 100–300ms)。- 意图三档
PrewarmLevel { MINIMAL, LIGHT, HEAVY }:MINIMAL = 纯 DNS 预解析(无需 bizType);LIGHT = 内核/进程首次初始化(鸿蒙 initializeWebEngine + prepareForPageLoad、Android/iOS 离屏预建空实例);HEAVY = 池实例加载 warmup.html 网络热身。SDK 内部按档位叠加补做低档动作,单调去重不允许降级重热。 - 多环境
PrewarmEnvironment { PROD, BETA }(默认 PROD)+ manifestUrl 覆盖;在线 warmup-manifest.json 为唯一数据源。 - manifest
configure 后台拉 + prewarm 懒兜底 + stale-while-revalidate,TTL 读自响应头 Cache-Control: max-age(默认 300s);manifest version 变化整体重置去重状态。 - WebView 复用池:容器模式
open() 透明复用预热态实例。Android + 鸿蒙 = 跨流程借还池(归还 about:blank + clearHistory 不销毁,客户主动 release/releaseAll 释放);iOS = 单流程一次性(无 clearHistory,关闭销毁,靠共享 WKProcessPool + .default() DataStore 复用)。池容量固定为 1。 open(url) 环境错配检测(仅 3 个已知 quick.* 环境搭错才告警,非 quick 域名不告警,不阻断)。getMenuBizTypes(callback)(五端对齐):异步返回 manifest 可用于菜单展示的业务列表,manifest 新增可选 menuBizTypes 字段(精选子集,缺省回退全量 bizTypes keys)。PrewarmConfig 新增 preferredLanguage(语言偏好;L4 拼 &lang= 委托 warmup.html、L3 按 i18nAutoDetect 门控)、injectUserAgent + userAgentExtra(池实例按 UA 创建,复用门控改为预热 UA == open config UA)。- 鸿蒙
TencentQianWebViewComponent(嵌入模式)新增 reusePrewarmPool 开关(默认 false),开启后复用预热池。 - 平台能力:HarmonyOS = L1 DNS + L2 预连接 + HEAVY NodeContainer 离屏池;Android = L1 + 借还池 + L4(
warmup.html);iOS = L1 + 一次性池 + L4(共享 .default() DataStore 磁盘缓存跨实例复用)。 - 全程 best-effort:任何预热失败静默降级,绝不阻塞 / 影响
open() 主流程;容器模式池复用对客户透明。
- 鸿蒙嵌入模式(
TencentQianWebViewComponent)宿主联动能力补齐:此前嵌入模式仅暴露 onSignResult / onSdkEvent,宿主自绘顶栏 / 进度条 / 错误处理时缺少必要的联动与控制手段(Page 模式已内置)。本次对齐补齐两类能力,全部可选、向后兼容:- 感知回调:新增
onTitleChanged(H5 标题 + 可后退快照,供自绘顶栏)、onProgressChanged(加载进度,供自绘进度条)、onRenderUnrecoverable(渲染进程连续崩溃且 SDK 放弃自动恢复的终态,供显示错误页 / 返回 / 重试;与 RenderProcessGoneEvent 的「每次崩溃」语义互补)。 - 控制能力:新增
TencentQianWebViewController(供 TencentQianWebViewComponent 使用),宿主可主动 canGoBack() / goBack() / handleBack()(逐级后退 H5 历史,覆盖 SPA 软路由)/ reload()(配合不可恢复回调做「重试」),修正此前宿主返回按钮只能直接退出、绕过 H5 多级历史的问题。
- 渲染进程崩溃恢复(三端对齐):池实例在预热/借出/归还三态的渲染进程崩溃回调均正确善后。Android/iOS 走"销毁 + 新建"(精准回退崩溃前页面)、鸿蒙走"原地重载(
loadUrl 优先、refresh 兜底)";重试上限 3 + 冷却窗口 30s + 延迟恢复(防必崩页面死循环 / 二次崩溃);鸿蒙借出态崩溃"脱池不销毁活节点"原地恢复。对客户透明,不新增公开 API。
Changed
- Android 最低系统要求降至 Android 5.0(API 21):
minSdk 从 24 降至 21,Java 编译目标降至 1.8(sourceCompatibility/targetCompatibility = 1.8,Kotlin jvmTarget = 1.8)。SDK 源码改用 androidx.core.util.Consumer/Supplier 替代 java.util.function.*,"UTF-8" 字符串替代 StandardCharsets,不引入 core library desugaring,AAR / 源码集成客户无需额外配置。JDK 17 仍为构建工具链,源码不使用任何 JDK 9+ 语法或标准库 API,兼容客户的 Java 8 编译目标 - iOS 最低部署目标降至 iOS 11.0:Deployment Target 从 14.3 降至 11.0。SDK 对 iOS 13+/14+ API(
WKWebpagePreferences、os.Logger、UIColor 系统颜色、SF Symbols、UIStatusBarStyle.darkContent、HTTPURLResponse.value(forHTTPHeaderField:))增加 #available/@available 版本分支与兼容层,iOS 11-12 降级为旧 API / 静态颜色 / 文字符号(返回 ‹、关闭 ✕)/ NSLog。safeAreaLayoutGuide 与 httpCookieStore 恰为 iOS 11,无需改动 - WebRTC / getUserMedia 系统门槛不变:仍需 Android 7.0+(API 24)/ iOS 14.3+,由系统 WebView 内核决定。低版本系统(Android 5.0~6.x / iOS 11~14.2)走
<input type="file" capture> 系统相机录制/拍照上传路径,本次改造确保该路径在 minSdk 21 / iOS 11 正常工作
Fixed
- 修复 iOS 渲染进程崩溃恢复白屏隐患:容器
webViewWebContentProcessDidTerminate 从 reload 改为"销毁 + 新建 WKWebView",消除原 reload 导致的白屏问题 - 修复 iOS(Swift + OC)下载文件名路径穿越:新增
sanitizedFilename 归一化文件名,防服务器返回含 ../ 或 / 的恶意文件名写入任意目录 - 修复鸿蒙下载文件名路径穿越:
DownloadHandler 文件名 sanitize 加固,防 ../ 路径穿越写入任意目录
1.1.0(2026-07-17)
Added
- iOS SPM(Swift Package Manager)本地源码包集成支持:新增
ios-swift/Package.swift(TencentQianWebViewSDK module)与 ios-objective-c/Package.swift(TencentQianWebView module),Swift / Objective-C 客户均可通过 Xcode「File → Add Packages → Add Local…」一键引入源码集成,Xcode 自动编译、自动处理架构、保留模块边界 - iOS xcframework 二进制分发:
scripts/build-ios-swift.sh 与 scripts/build-ios-objectivec.sh 新增 xcframework 子命令,合成含 ios-arm64 + ios-arm64_x86_64-simulator 双 slice 的 .xcframework,解决 Apple Silicon Mac 模拟器 arm64 架构冲突(传统 fat framework 在 Apple Silicon 上直接编译报错的硬伤) - iOS SPM + xcframework 集成验证脚本
scripts/verify-ios-integration.sh:覆盖 SPM Add Local / xcframework 两种集成方式 × Swift 版 + OC 版 × simulator + device 的全量验证矩阵,全程无需开发者证书 - iOS Objective-C 工程:新增
DemoSwift target,作为纯 Swift 应用通过 framework module 消费 OC 版 TencentQianWebView 的集成范本,适用于 Swift 主语言存量客户接入 OC 版 SDK
Changed
- 更新 Android 端混淆规则说明
- 收拢 ios-objective-c 公共头文件到
Public/ 目录,使 SPM 单 publicHeadersPath 约束可满足,并简化 project.yml 头文件可见性配置 - 更新 iOS 集成文档(usage-guide / integration-checklist / troubleshooting):明确集成方式优先级(SPM 源码包 > xcframework 二进制 > 源文件直拖),补充 Apple Silicon arm64 冲突排错
- 更新 qianuni UniApp web-view 接入指南
- UA 版本号固定在源码中,方便多种集成方式使用
1.0.5(2026-06-25)
Changed
- 文档补齐 HarmonyOS 接入自检清单、协议常量、排错决策树与三端下载行为对照,同步修正 iOS 权限文案与 HarmonyOS module.json5 权限配置
1.0.4(2026-06-18)
Fixed
- Android 与 鸿蒙 SPA 路由切换导致进度条误显示且无法关闭
1.0.3(2026-06-12)
Fixed
- 鸿蒙端手动关闭容器不回调 EMPTY,与其他端对齐
1.0.2(2026-06-12)
Fixed
- 修复 SignResult.EMPTY 共享 Map 污染、关闭流程双回调、Component 网络监听泄漏,并补齐外部 scheme 失败上报与下载文件名路径穿越防御
1.0.1(2026-06-12)
Changed
1.0.0(2026-06-11)
Added
- Android Kotlin SDK:容器模式
TencentQianWebView.open 与配置模式 TencentQianWebViewConfigurator.apply - Android Java SDK:与 Kotlin 版功能与 API 对等的纯 Java 实现(
Builder 模式 Config、abstract class + static final 子类替代 sealed class),适用于不引入 Kotlin 运行时的存量工程 - iOS Swift SDK:容器模式
TencentQianWebView.open 与配置模式 TencentQianWebViewConfigurator.apply - iOS Objective-C SDK:与 Swift 版 1:1 对齐的纯 OC 实现(ARC),适用于 100% Objective-C 代码库存量客户
- HarmonyOS ArkTS SDK:基于 ArkWeb 的容器模式
TencentQianWebView.open 与配置模式 TencentQianWebViewConfigurator.apply qianapp:// 协议解析:跨端一致的 SignResult 结构(action / result / flowId / from / extras)- 三端 UA 注入
qianwv/<version> 标识,便于 H5 侧识别 SDK 容器 - 文件下载兼容(Android
DownloadListener、iOS URLSession + 分享 sheet、HarmonyOS request.downloadFile + DocumentViewPicker) - 文件选择器、JS 弹窗、
getUserMedia 权限链路、SSL 错误处理、渲染进程崩溃恢复等三端兼容性适配 - 接入指南、
qianapp:// 协议规范、自检清单、排错决策树 + 常见问题