对照实验(同一台 iOS 26.6.2 模拟器):
- 4.87 运行时(1.9.9.81635,非 UIScene):正常
- 5.33/5.34 运行时(1.9.9.81739,UIScene):必崩
- 5.33 离线打包 + 工程改回 AppDelegate:恢复正常
说明:与业务代码无关,新旧 shim 代码均崩,唯一相关变量是运行时版本与工程架构。
产品分类: uniapp/App
PC开发环境操作系统: Mac
PC开发环境操作系统版本号: macOS 15.8.2
HBuilderX类型: 正式
HBuilderX版本号: 5.34
手机系统: iOS
手机系统版本号: iOS 26
手机厂商: 苹果
手机机型: iPhone 17(iOS 26.6.2 模拟器环境实测,云包在 iOS26 真机同样反馈闪退)
页面类型: vue
vue版本: vue3
打包方式: 离线
项目创建方式: HBuilderX
对照实验(同一台 iOS 26.6.2 模拟器):
iOS 26 + UIScene 架构下,H5 的 alert/confirm 弹窗正常显示,不闪退。
App 闪退:NSObjectNotAvailableException — UIAlertView is deprecated and unavailable for UIScene based applications please use UIAlertController!,完整调用栈见问题描述。
【环境】
【崩溃信息】
*** Terminating app due to uncaught exception 'NSObjectNotAvailableException'
reason: 'UIAlertView is deprecated and unavailable for UIScene based applications please use UIAlertController!'
【崩溃调用栈(.ips 崩溃报告关键帧)】
UIKitCore +[NSException raise:format:] +128
UIKitCore -[UIAlertView initWithFrame:] +184
UIKitCore -[UIAlertView initWithTitle:message:delegate:cancelButtonTitle:otherButtonTitles:] +100
DCUniBase -[H5WEWKWebview webView:runJavaScriptAlertPanelWithMessage:initiatedByFrame:completionHandler:] +96
WebKit WebKit::UIDelegate::UIClient::runJavaScriptAlert +520
WebKit WebKit::WebPageProxy::runJavaScriptAlert(IPC 同步消息 dispatchSyncMessage)
【复现步骤】
【对照实验(同一台 iOS 26.6.2 模拟器)】
| 构建 | 运行时构建号 | 工程架构 | 结果 |
|---|---|---|---|
| 2026-07 云打包 | 1.9.9.81635(HBuilderX 4.87) | 非 UIScene | 正常 |
| 5.34 云打包 | 1.9.9.81739 | UIScene | 闪退 |
| 5.33 离线打包 | 1.9.9.81739 | UIScene | 闪退 |
| 5.33 离线打包(工程改回 AppDelegate 生命周期) | 1.9.9.81739 | 非 UIScene | 正常 |
【结论与诉求】
Ask小助手 - Ask社区AI助手
欢迎到专业群( uni-app 官方技术交流群 1 ) 咨询,群中有相关专业的管理员和群友。
感谢这份反馈。先给出评审结论:这是一份信息完整、证据链闭合的高质量 bug 反馈,问题成立,可直接进入官方排查流程。以下是具体评审意见。
一、反馈完整性评审
标题与问题描述:标题准确点明了“iOS 26 + UIScene 架构 + H5WEWKWebview + UIAlertView + 必现闪退”等关键要素;描述中附带了完整的异常信息原文(NSObjectNotAvailableException 及系统 reason)和 .ips 崩溃报告关键调用栈,从 UIKitCore 异常抛出、DCUniBase 中 H5WEWKWebview 的 runJavaScriptAlertPanelWithMessage: 实现,到 WebKit 的 IPC 同步消息链路完整清晰,官方人员可以直接定位到 WKUIDelegate 实现处的代码,无需二次排查崩溃点。描述清晰,无需要补充的核心内容。
代码示例:本反馈未附业务代码,但提供了四组对照实验,采用控制变量法,唯一变量是“运行时版本 + 工程架构”,同时排除了业务代码差异(新旧 shim 均崩)、打包方式差异(云打包/离线打包均崩),并验证了改回 AppDelegate 后恢复正常。对于这类框架层问题,对照实验比业务代码更有说服力,复现不依赖特定业务代码(任何触发 window.alert() 的 H5 页面均可复现)。如需进一步补充,建议以文字或代码形式直接贴出最小化复现工程的关键配置(如 Info.plist 的 UIApplicationSceneManifest 节点);需要说明的是,我无法识别附件,补充内容请直接以文本形式提供。
复现步骤:清晰可复现,按“5.34 云打包或 5.33/5.34 离线 SDK + UIScene 宿主工程 + iOS 26 + 触发 window.alert()”四步即可稳定触发,官方按此步骤可直接复现验证。
预期结果:合理。iOS 26 + UIScene 下 alert/confirm 正常显示符合系统规范;但结合当前官方适配状态(见下文),在 UIScene 架构下达成该预期需等待官方适配完成,当前版本的达成路径是回退 AppDelegate 生命周期。
实际结果:与崩溃栈、系统行为自洽,不属于误报,是真实的适配缺口。
分类信息:完整,包含 HBuilderX 版本、离线 SDK 版本、运行时构建号、iOS 版本、机型、Vue 版本等,满足归档与回归验证需要。
二、bug 成立性判断
该问题成立,且有官方已确认的同根因问题作为依据:
iOS 26 上,基于 UIScene 的应用创建 UIAlertView 会被系统直接抛出 NSObjectNotAvailableException 并强制要求改用 UIAlertController,你提供的崩溃栈与该系统行为完全吻合。
官方此前已确认过同根因问题——iOS 26 系统下 uniMP 内部使用 UIAlertView 发生崩溃,当时的官方结论为:“UniMPSDK 不支持 UIScene 的场景,将工程改成之前的 AppDelegate 即可”。你提到的 219977 的官方回复口径与此一致。
关于 UIScene 适配的整体进度,官方目前的口径是:官方此前回复 uni-app x 于 5.21 版本起支持 UIScene;uni-app(JS 引擎版)目前还没有排期;ask 社区中 2026 年 4 月已有开发者提问“什么时候适配基于 UIScene 场景的生命周期”,截至目前尚无官方回复,也未给出具体适配时间节点。
你对 runJavaScriptConfirmPanelWithMessage: 疑似同样使用 UIAlertView 的排查提示,以及要求在 UIScene 架构 + iOS 26 下验证 alert/confirm/prompt 全链路的建议,方向合理,属于官方适配 UIScene 时需要一并覆盖的范围。
三、当前可用方案与诉求回应
当前官方确认可用的规避方案仍是:将宿主工程改回 AppDelegate 生命周期。你的对照实验(5.33 离线打包 + 工程改回 AppDelegate 后恢复正常)也验证了该方案有效。
你指出的“Apple 已要求上架应用适配 UIScene,回退 AppDelegate 不可持续”这一反馈合理且有价值。关于将 UIAlertView 全部替换为 UIAlertController 并完成全链路验证的诉求,建议持续关注后续版本的发版说明;由于 uni-app 的 UIScene 适配目前尚无明确排期,我无法在此承诺具体修复版本和时间。
补充参考:官方此前回复 uni-app x 已于 5.21 版本起支持 UIScene,说明官方在 UIScene 方向已有适配动作;你当前使用的是 uni-app(JS 引擎版)项目,两者是不同体系,uni-app 侧的适配进度请以官方后续发版说明为准。
如需进一步跟进 UIScene 适配进度或交流该问题的细节,欢迎到专业群咨询,群中有相关专业的管理员和群友:uni-app 官方技术交流群 1