uni-app iPhone16问题 uni.chooseVideo不触发

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

uni-app iPhone16问题 uni.chooseVideo不触发

操作步骤:

  • iPhone16手机 调 uni.chooseVideo

预期结果:

  • 可以选择视频

实际结果:

  • 不可以选择视频

bug描述:

  • uni.chooseVideo 这个API 机型**【IPhone16 系列】**无法上传视频

| 信息类别       | 详细信息     |
|----------------|--------------|
| 产品分类       | uniapp/App   |
| PC开发环境操作系统 | Mac          |
| PC开发环境操作系统版本号 | 13.6.4       |
| HBuilderX类型  | 正式         |
| HBuilderX版本号 | 4.15         |
| 手机系统       | iOS          |
| 手机系统版本号  | iOS 18       |
| 手机厂商       | 苹果         |
| 手机机型       | iphone16promax|
| 页面类型       | vue          |
| vue版本        | vue3         |
| 打包方式       | 云端         |
| 项目创建方式   | HBuilderX    |

1 回复

针对您提到的 uni-app 在 iPhone 16(注意:目前市场上还没有发布 iPhone 16,这里假设您指的是较新的 iPhone 型号或泛指 iOS 最新系统环境)上 uni.chooseVideo 不触发的问题,我们可以从几个方面进行排查和修复。通常这类问题可能是由于权限设置、组件调用方式错误或系统兼容性问题引起的。

1. 权限检查与请求

首先确保应用有请求访问相机和相册的权限。在 uni-app 中,可以在 manifest.json 文件中配置相关权限,并在代码中动态请求权限(iOS 10 及以上需要)。

manifest.json 配置示例

"mp-weixin": {
    "requiredPrivateInfos": ["chooseMessageCard", "chooseImage", "chooseVideo"]
},
"app-plus": {
    "distribute": {
        "ios": {
            "permissions": {
                "NSCameraUsageDescription": "App需要您的同意才能使用相机",
                "NSPhotoLibraryUsageDescription": "App需要您的同意才能访问相册"
            }
        }
    }
}

动态请求权限代码(示例,基于 Vue.js)

// 假设使用的是 plus 运行时环境
if (window.plus) {
    const main = plus.android.runtimeMainActivity();
    const packageManager = main.getPackageManager();
    const hasCameraPermission = packageManager.checkPermission("android.permission.CAMERA") === packageManager.PERMISSION_GRANTED;
    if (!hasCameraPermission) {
        plus.android.requestPermissions([
            "android.permission.CAMERA",
            "android.permission.READ_EXTERNAL_STORAGE",
            "android.permission.WRITE_EXTERNAL_STORAGE"
        ], function(event) {
            // 处理权限请求结果
        });
    }
}

2. 调用 uni.chooseVideo 示例

确保 uni.chooseVideo 的调用方式正确。以下是一个基本的调用示例:

uni.chooseVideo({
    sourceType: ['camera', 'album'], // 可选值:['camera'], ['album'], ['camera', 'album']
    maxDuration: 60, // 最大录制时长,单位秒
    camera: 'back', // 前置或后置摄像头
    success: function (res) {
        console.log('视频路径:', res.tempFilePath);
    },
    fail: function (err) {
        console.error('选择视频失败:', err);
    }
});

3. 兼容性处理

对于 iOS 特定版本的问题,可以尝试在调用 uni.chooseVideo 前添加一些兼容性处理,比如检查系统版本,或者尝试捕获异常进行错误处理。

4. 调试与日志

使用 Xcode 或其他 iOS 开发工具进行真机调试,查看控制台输出,分析是否有更详细的错误信息。

由于您提到的是“不触发”,这通常指向权限或调用方式的问题,按照上述步骤进行排查和修复,应该能解决问题。如果问题依旧,请提供更详细的错误日志或系统信息以便进一步分析。

回到顶部