uni-app 苹果16+ios18系统无法使用uni.chooseVideo?

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

uni-app 苹果16+ios18系统无法使用uni.chooseVideo?

开发环境 版本号 项目创建方式
Windows Windows10 HBuilderX

产品分类:uniapp/App

PC开发环境操作系统:Windows

HBuilderX类型:正式

HBuilderX版本号:4.24

手机系统:iOS

手机系统版本号:iOS 18

手机厂商:苹果

手机机型:苹果16

页面类型:vue

vue版本:vue2

打包方式:云端

项目创建方式:HBuilderX

示例代码:

uni.chooseVideo({
	count: 1,
	camera: "front",
	maxDuration: 3,
	sourceType: ['camera'],
	compressed: true,
	success: res => {
		console.log(res)
		const file = res;
		that.uploadFile(file, num, id);
	},
	fail: (err) => {
		console.log(err)
	}
});
uploadFile(file, num, id, which) {
	uni.showLoading({
		title: '加载中'
	});
	let url = this.requestUrl + "/file/videoFileUpload";
	console.log("file----" + file.tempFilePath)
	console.log('url:-----0', url)
	uni.uploadFile({
		url: url,
		fileType: "video",
		filePath: file.tempFilePath,
		name: 'file',
		header: {
			"Content-Type": "multipart/form-data",
			"authorization": "Bearer " + uni.getStorageSync("user_token"),
		},
		success: (uploadFileRes) => {
			console.log(uploadFileRes)
			let result = JSON.parse(uploadFileRes.data);
			console.log('result=====', result)
			if (num == 2 || num == 4) {
				setTimeout(() => {
					uni.showLoading({
						title: '加载中...'
					});
					this.punchClock2(objectBody, which)
				}, 300);
			}
		},
		fail: (err) => {
			console.log('chooseImage fail', err)
			uni.showToast({
				title: "视频上传失败!",
				icon: "none",
			});
		},
		complete: () => {
			uni.hideLoading();
		}
	});
}

操作步骤:

点击录制视频确定使用视频后未走uni.chooseVideo组件里面的方法

预期结果:

uni.chooseVideo组件里面的that.uploadFile(file, num, id);方法正常运行

实际结果:

点击录完视频后uni.chooseVideo组件里面的that.uploadFile(file, num, id)没有正常走到

bug描述:

苹果16使用uni.chooseVideo组件来录制视频点击录完却没走里面的代码逻辑是为什么,别的苹果机正常走


15 回复

uni.chooseVideo 的回调走了么

是的,没有回调

该问题在IOS18中出现,我们原生App也遇到这个问题,修改后就OK了

回复 FireFlyTest: 原生怎么改的

回复 FireFlyTest: 咋修改的

回复 巷子: 未复现 这边测试 iOS18系统是正常的

回复 DCloud_iOS_WZT: ios18系统是正常的 但是使用苹果16调用没有反应 这是啥情况

回复 DCloud_iOS_WZT: 我们也是遇到这情况,把iphone14升级到ios18是正常的,但是iphone16就是不走回调

回复 h***@163.com: 你到找解决的办法了嘛 是不是uni.chooseVideo 不兼容 还是什么

回复 nnnullll: 没解决啊

请问解决了吗 uniapp 提交了 issue 都不回复的 https://issues.dcloud.net.cn/pages/issues/detail?id=11727

在针对uni-app在iOS 16及以上版本中遇到的uni.chooseVideo无法正常使用的问题时,首先需要确认几个关键点:uni-app的版本、HBuilderX的版本、以及iOS系统的具体版本和设备的兼容性。由于uni-app框架会不断更新以适配最新的操作系统,确保你使用的uni-app和HBuilderX都是最新版本是非常重要的。

以下是一个基本的uni.chooseVideo调用示例,以及如何在代码中处理可能的兼容性问题或错误。请注意,直接的代码修改可能无法解决所有系统级别的兼容问题,但可以提供一些调试和错误处理的思路。

// 调用uni.chooseVideo方法
uni.chooseVideo({
    sourceType: ['album', 'camera'], // 可以指定来源为相册或相机
    maxDuration: 60, // 最大录制时长,单位秒
    camera: 'back', // 使用后置摄像头
    success: function (res) {
        console.log('选择视频成功', res.tempFilePath);
        // 在这里处理视频路径,如上传等
    },
    fail: function (err) {
        console.error('选择视频失败', err);
        // 处理失败情况,可能是权限问题,系统限制等
        if (err.code === 1001) {
            uni.showToast({
                title: '请先授权相机和相册权限',
                icon: 'none'
            });
        } else if (err.code === 1002) {
            uni.showToast({
                title: '录制视频失败,请检查设备状态',
                icon: 'none'
            });
        } else {
            uni.showToast({
                title: '未知错误:' + err.message,
                icon: 'none'
            });
        }
    }
});

在上述代码中,我们使用了uni.chooseVideo方法,并提供了成功和失败的回调函数。在失败回调中,根据错误码判断可能的错误原因,并给用户相应的提示。这里的错误码是假设的,实际开发中需要根据uni-app官方文档或错误日志来确定具体的错误码。

如果确认代码无误但问题依旧存在,建议采取以下步骤:

  1. 检查权限:确保应用已获得相机和相册的访问权限。
  2. 查看日志:使用Xcode运行应用并查看控制台日志,可能会有更详细的错误信息。
  3. 更新环境:确保uni-app、HBuilderX和iOS系统都是最新版本。
  4. 社区和官方渠道:访问DCloud社区或uni-app官方论坛,看看是否有其他开发者遇到并解决了类似的问题。

最后,如果问题依旧无法解决,可能需要向uni-app官方提交bug报告,等待官方修复。

回到顶部