uni-app HTML5+应用在线打包 在IOS17以上系统无法正常加载UIWebview
uni-app HTML5+应用在线打包 在IOS17以上系统无法正常加载UIWebview
Bug 描述
HTML5+应用在线打包,在iOS 17以上系统无法正常加载UIWebview,manifest中配置了plus.kernal.ios=“UIWebview”,也在模块配置中勾选了UIWebview模块(permissions.UIWebview)。在iOS 16及以下系统可以正常加载。
操作步骤
manifest.json 中配置了plus.kernal.ios=“UIWebview”,模块配置中勾选UIWebview模块(permissions.UIWebview)进行在线打包。
预期结果
if (navigator.userAgent.match(/html5Plus/i)) {
// UIWebview加载正常,正常执行到这里
}
实际结果
if (navigator.userAgent.match(/html5Plus/i)) {
// 判断条件不满足,无法执行到这里
}
开发环境信息
参数 | 信息 |
---|---|
产品分类 | HTML5+ |
HBuilderX版本号 | 4.36 |
手机系统 | iOS |
手机系统版本号 | iOS 17 |
手机厂商 | 苹果 |
手机机型 | iPhone 11 |
打包方式 | 云端 |
@DCloud_CHB @DCloud_App_Array @DCloud_iOS_XHY @DCloud_heavensoft 有大佬帮忙看看吗,现在换任何版本HBuilder X打包都有问题,旧的包 ios 证书快过期用不了了。
针对你提到的uni-app在iOS 17及以上系统上使用HTML5+应用在线打包时无法正常加载UIWebView的问题,这主要是因为从iOS 13开始,Apple已经逐步弃用了UIWebView,并在后续版本中进一步限制或禁止了它的使用。为了解决这个问题,我们需要确保uni-app应用使用的是WKWebView,这是Apple推荐的新一代WebView组件。
在uni-app中,通常不需要直接处理WebView的具体实现,因为uni-app框架已经为我们封装好了底层的WebView适配。但是,如果你遇到的是特定于iOS 17及以上版本的问题,可能需要进行一些配置或代码调整来确保应用使用的是WKWebView。
以下是一些可能的解决方案和代码示例,你可以尝试在你的uni-app项目中应用:
-
确保manifest.json配置正确: 在uni-app的
manifest.json
文件中,检查app-plus
下的webview
配置,确保没有强制使用UIWebView。"app-plus": { "webview": { "render": "auto" // 或者明确设置为 "wkwebview" } }
-
使用条件编译: 针对iOS平台,你可以使用条件编译来确保在iOS上使用WKWebView。虽然uni-app通常自动处理这些,但你可以通过条件编译来强制设置或调试。
#ifdef APP-PLUS-IOS // iOS特定代码,这里通常不需要手动设置WebView类型,除非有特殊需求 #endif
-
检查iOS原生插件: 如果你的应用使用了原生插件,并且这些插件依赖于UIWebView,那么你需要更新这些插件以使用WKWebView。这通常涉及到原生iOS开发,你可能需要与插件开发者联系或自己进行原生代码修改。
-
更新uni-app和HBuilderX: 确保你的uni-app框架和HBuilderX编辑器都是最新版本。新版本通常包含了对最新iOS版本的适配和修复。
-
iOS原生配置: 对于高级用户,你可能需要在Xcode中手动配置项目的Info.plist文件,以确保应用使用的是WKWebView。这通常不是uni-app用户的常规操作,但在某些特殊情况下可能是必要的。
由于uni-app框架的设计初衷就是为了简化跨平台开发,它通常会自动处理WebView的适配问题。如果你遇到了特定于iOS 17的问题,建议首先检查是否有可用的框架更新或官方指南,因为这些问题很可能已经被官方团队解决或提供了官方解决方案。