uni-app iOS平台 uni.chooseImage 报错:webviewReady[7][6] not match __ERROR

发布于 1周前 作者 wuwangju 来自 Uni-App

uni-app iOS平台 uni.chooseImage 报错:webviewReady[7][6] not match __ERROR

类别 信息
产品分类 uniapp/App
PC开发环境 Mac
PC操作系统版本 macOS Ventura 13.2.1
HBuilderX类型 正式
HBuilderX版本 3.98
手机系统 iOS
手机系统版本 iOS 16
手机厂商 苹果
手机机型 iPhone11 16.1.1
页面类型 vue
vue版本 vue2
打包方式 离线
项目创建方式 HBuilderX

操作步骤:

调用uni.chooseImage 拍照或从相册选择照片,拍照确定或从相册选中照片确定返回后,页面会白屏并重新加载
uni.chooseImage 传入参数只有sourceType和count为1

预期结果:

拍照返回后页面不应白屏并重新加载

实际结果:

拍照返回后页面会白屏并重新加载

bug描述:

iOS 真机iPhone11 16.1.1 uni.chooseImage 拍照或从相册选择照片 控制台报错:webviewReady[7][6] not match __ERROR,相机拍照确定后返回,页面会白屏并重新加载(高概率出现)


6 回复

感谢您的回复,我描述的不严谨,uni.chooseImage 传入参数只有sourceType为[‘camera’,‘album’]和count为1

而且这种情况只在iphone 11 16.1.1上出现,在安卓和iOS其它机型都正常

解决了吗?我也遇到相同的问题

解决了吗?同样遇到这个问题

在使用 uni-app 开发 iOS 应用时,如果你在调用 uni.chooseImage 方法时遇到 webviewReady[7][6] not match __ERROR 的错误,这通常是由于 WebView 的通信机制出现问题导致的。以下是一些可能的解决方案:

1. 检查 HBuilderX 版本

确保你使用的是最新版本的 HBuilderX。旧版本可能存在一些已知的 bug,更新到最新版本可能会解决这个问题。

2. 检查 manifest.json 配置

manifest.json 文件中,确保你已经正确配置了 iOS 平台的相关设置。特别是 app-plus 节点下的 ios 配置。

{
  "app-plus": {
    "ios": {
      "webview": {
        "ready": true
      }
    }
  }
}

3. 检查 WebView 的初始化

确保 WebView 已经正确初始化。你可以在 onLoadonReady 生命周期钩子中调用 uni.chooseImage 方法,以确保 WebView 已经准备好。

onReady() {
  uni.chooseImage({
    count: 1,
    success: (res) => {
      console.log(res.tempFilePaths);
    },
    fail: (err) => {
      console.error(err);
    }
  });
}

4. 检查权限

确保你的应用已经获取了访问相册的权限。你可以在 manifest.json 中配置权限:

{
  "app-plus": {
    "distribute": {
      "ios": {
        "permissions": {
          "PHPhotoLibrary": {
            "description": "需要访问相册以选择图片"
          }
        }
      }
    }
  }
}

5. 检查网络请求

如果你在调用 uni.chooseImage 时涉及到网络请求,确保网络请求已经正确配置,并且没有跨域问题。

6. 调试和日志

在开发过程中,可以使用 console.loguni.showToast 来输出调试信息,帮助你定位问题。

7. 重新编译和运行

有时候,重新编译和运行项目可以解决一些临时性的问题。你可以尝试清理项目并重新编译。

8. 检查插件和依赖

如果你使用了第三方插件或依赖,确保它们与当前版本的 uni-app 兼容。

9. 联系官方支持

如果以上方法都无法解决问题,建议联系 uni-app 官方支持或在社区中寻求帮助。

示例代码

以下是一个简单的示例代码,展示如何在 onReady 生命周期钩子中调用 uni.chooseImage

export default {
  onReady() {
    uni.chooseImage({
      count: 1,
      success: (res) => {
        console.log(res.tempFilePaths);
      },
      fail: (err) => {
        console.error(err);
      }
    });
  }
}
回到顶部
AI 助手
你好,我是IT营的 AI 助手
您可以尝试点击下方的快捷入口开启体验!