uni-app uni.chooseMedia 当mediaType: ['mix'] 在android的机型上可以同时选择图片或者视频,并且成功 但是在ios上 选择图片成功 选择视频失败

uni-app uni.chooseMedia 当mediaType: [‘mix’] 在android的机型上可以同时选择图片或者视频,并且成功 但是在ios上 选择图片成功 选择视频失败

示例代码:

uni.chooseMedia({  
    mediaType: ['mix'],  
    sourceType: ['album', 'camera'],  
    maxDuration: 30,  
    camera: 'back',  
    success(res) {  
        console.log(res)  
    },  
    fail(err) {  
        console.log(err)  
    },  
})

android机型 同时选择图片视频返回:

{  
    "tempFiles": [  
        {  
            "tempFilePath": "wxfile://tmp_3bcb77e5ceb3aa8bf72748cd3c46bd894754dcd8920b7fad.jpg",  
            "size": 180005,  
            "fileType": "image"  
        },  
        {  
            "tempFilePath": "wxfile://tmp_5f2b18cc38c13560486d1b82b76d17ed2c6314c2074b8f40.jpg",  
            "size": 143061,  
            "fileType": "image"  
        },  
        {  
            "tempFilePath": "wxfile://tmp_3de54b4a36c887fe54da7d9313cfbb7d49287e81db538115.mp4",  
            "thumbTempFilePath": "wxfile://tmp_cbb3cd687781b65cfb6203d0a3cf87cabbb5495e633fb06adda5cd358a0a4613.jpeg",  
            "duration": 37,  
            "height": 796,  
            "width": 360,  
            "size": 1720754,  
            "fileType": "video"  
        },  
        {  
            "tempFilePath": "wxfile://tmp_6d4fec2435bf4e4d310b03f6cb716f908490ebcea8b7ea74.mp4",  
            "thumbTempFilePath": "wxfile://tmp_89929d0867feb2e386ad4dc75b97221bba4ca3d43395aef46c0638ecaf30f9c3.jpeg",  
            "duration": 36,  
            "height": 796,  
            "width": 360,  
            "size": 2636341,  
            "fileType": "video"  
        }  
    ],  
    "type": "mix",  
    "errMsg": "chooseMedia:ok"  
}

ios 机型 选择视频返回:

{
    "tempFiles":[],
    "errMsg":"chooseMedia:fail",
    "type":"mix",
    "failedCount":1
}

操作步骤:

  • mediaType: [‘mix’], ios上,选择视频失败;

预期结果:

  • mediaType: [‘mix’], ios上,选择视频成功;

实际结果:

  • mediaType: [‘mix’], ios上,选择视频失败;

bug描述:

uni.chooseMedia,当mediaType: [‘mix’],在android的机型上可以同时选择图片或者视频,并且成功;但是在ios上,选择图片可以成功,选择视频失败;


更多关于uni-app uni.chooseMedia 当mediaType: ['mix'] 在android的机型上可以同时选择图片或者视频,并且成功 但是在ios上 选择图片成功 选择视频失败的实战教程也可以访问 https://www.itying.com/category-93-b0.html

4 回复

你可以测试一下使用微信原生的 wx. chooseMedia 测试一下看看结果是不是符合预期

更多关于uni-app uni.chooseMedia 当mediaType: ['mix'] 在android的机型上可以同时选择图片或者视频,并且成功 但是在ios上 选择图片成功 选择视频失败的实战教程也可以访问 https://www.itying.com/category-93-b0.html


回复 1***@qq.com: 那这就是 wx 的问题了,这个 api 经过编译之后,调用的就是wx. chooseMedia ,帮你订了一下

这是一个iOS平台上的已知兼容性问题。在iOS系统中,当mediaType设置为['mix']时,系统原生的选择器不支持同时选择图片和视频,这导致了选择视频时失败。

问题分析:

  • iOS的UIImagePickerController在混合模式下存在限制
  • 选择视频时系统无法正确处理混合媒体类型的请求
  • 返回的failedCount: 1表明有1个文件选择失败

解决方案: 建议采用以下替代方案:

  1. 分别选择图片和视频
// 分别调用图片和视频选择
uni.chooseImage({
  success: (res) => {
    // 处理图片
  }
})

uni.chooseVideo({
  success: (res) => {
    // 处理视频
  }
})
  1. 使用条件判断
// 根据业务需求分别处理
if (需要图片) {
  uni.chooseImage({...})
}
if (需要视频) {
  uni.chooseVideo({...})
}
  1. 平台判断
// 针对不同平台使用不同策略
if (uni.getSystemInfoSync().platform === 'ios') {
  // iOS使用分别选择
} else {
  // Android使用mix模式
  uni.chooseMedia({
    mediaType: ['mix'],
    // ...其他参数
  })
}
回到顶部