uni-app HTML5+应用在线打包 在IOS17以上系统无法正常加载UIWebview

发布于 1周前 作者 eggper 来自 uni-app

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
打包方式 云端

2 回复

@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项目中应用:

  1. 确保manifest.json配置正确: 在uni-app的manifest.json文件中,检查app-plus下的webview配置,确保没有强制使用UIWebView。

    "app-plus": {
      "webview": {
        "render": "auto" // 或者明确设置为 "wkwebview"
      }
    }
    
  2. 使用条件编译: 针对iOS平台,你可以使用条件编译来确保在iOS上使用WKWebView。虽然uni-app通常自动处理这些,但你可以通过条件编译来强制设置或调试。

    #ifdef APP-PLUS-IOS
    // iOS特定代码,这里通常不需要手动设置WebView类型,除非有特殊需求
    #endif
    
  3. 检查iOS原生插件: 如果你的应用使用了原生插件,并且这些插件依赖于UIWebView,那么你需要更新这些插件以使用WKWebView。这通常涉及到原生iOS开发,你可能需要与插件开发者联系或自己进行原生代码修改。

  4. 更新uni-app和HBuilderX: 确保你的uni-app框架和HBuilderX编辑器都是最新版本。新版本通常包含了对最新iOS版本的适配和修复。

  5. iOS原生配置: 对于高级用户,你可能需要在Xcode中手动配置项目的Info.plist文件,以确保应用使用的是WKWebView。这通常不是uni-app用户的常规操作,但在某些特殊情况下可能是必要的。

由于uni-app框架的设计初衷就是为了简化跨平台开发,它通常会自动处理WebView的适配问题。如果你遇到了特定于iOS 17的问题,建议首先检查是否有可用的框架更新或官方指南,因为这些问题很可能已经被官方团队解决或提供了官方解决方案。

回到顶部