uni-app uni.chooseMedia 在 iOS 下捕获异常 [已解决]

uni-app uni.chooseMedia 在 iOS 下捕获异常 [已解决]

开发环境 版本号 项目创建方式
Mac 15.4.1 HBuilderX
产品分类:uniapp/App

PC开发环境操作系统:Mac

PC开发环境操作系统版本号:15.4.1

HBuilderX类型:正式

HBuilderX版本号:4.64

手机系统:iOS

手机系统版本号:iOS 18

手机厂商:苹果

手机机型:iPhone XR

页面类型:vue

vue版本:vue2

打包方式:离线

项目创建方式:HBuilderX

### 示例代码:

```javascript
uni.chooseMedia({  
    count: 1,  
    mediaType: ['image'],  
    sizeType: ['original', 'compressed'],  
    sourceType: ['camera'],  
    camera: 'front',  
    success: async (res) => {  
    }  
})

操作步骤:

调用 uni.chooseMedia 无任何反应, 所以把它 包在 try catch 里, 捕获了异常

undefined is not an object (evaluating 'yu().invokeSync') 

预期结果:

调用前摄像头

实际结果:

报错了

bug描述:

uni.chooseMedia 在 iOS 下捕获异常 undefined is not an object (evaluating 'yu().invokeSync'),同样代码在 Android 下没有问题


更多关于uni-app uni.chooseMedia 在 iOS 下捕获异常 [已解决]的实战教程也可以访问 https://www.itying.com/category-93-b0.html

7 回复

已找到问题,
因为 chooseMedia 是 UTS 插件
https://nativesupport.dcloud.net.cn/AppDocs/usesdk/ios.html#添加uts依赖
并且 依赖 DCloudUTSExtAPI.framework
这些在文档里没有说明,全靠猜出来的。 管用了

更多关于uni-app uni.chooseMedia 在 iOS 下捕获异常 [已解决]的实战教程也可以访问 https://www.itying.com/category-93-b0.html


您好,麻烦发个可复现demo,以便更好的排查问题

复现demo已回复在下方 debug.zip

你好,请问有IOS企业证书吗

没有企业证书,下面有复现 demo debug.zip

这个是测试项目, 我刚用 4.64 的离线打包SDK 中的 HBuilder-ExampleDemo 仅替换了发布的内容测试了

dbug.zip 是复现 demo

这个错误通常是由于iOS平台特有的兼容性问题导致的。以下是解决方案:

  1. 首先确保使用的是最新版HBuilderX和uni-app基础库

  2. 检查manifest.json中是否配置了正确的相机权限:

"ios": {
    "permissions": {
        "CAMERA": "描述使用相机的目的"
    }
}
  1. 建议改用以下兼容性更好的调用方式:
try {
    const res = await uni.chooseMedia({
        count: 1,
        mediaType: ['image'],
        sourceType: ['camera'],
        camera: 'front'
    });
    console.log(res);
} catch (e) {
    console.error('选择媒体失败:', e);
    uni.showToast({
        title: '无法访问相机',
        icon: 'none'
    });
}
回到顶部