uni-app APP uni.chooseImage在ios系统版本为15.4时选择照片权限后,再次点击上传无反应

uni-app APP uni.chooseImage在ios系统版本为15.4时选择照片权限后,再次点击上传无反应

项目 信息
产品分类 uniapp/App
PC开发环境操作系统 Mac
PC开发环境操作系统版本号 11.6
HBuilderX类型 正式
HBuilderX版本号 4.29
手机系统 iOS
手机系统版本号 iOS 15
手机厂商 苹果
手机机型 ios 15.4
页面类型 vue
vue版本 vue2
打包方式 云端
项目创建方式 HBuilderX

操作步骤:

上传图片权限 选择了 选中的照片
再点击上传入口没有任何反应

预期结果:

上传图片权限 选择了 选中的照片
点击上传入口应调起相册或者请求权限的弹窗

实际结果:

上传图片权限 选择了 选中的照片
再点击上传入口没有任何反应

bug描述:

uni.chooseImage在ios系统版本为15.4,选择了图片权限为 选中的照片
点击上传入口是没有反应


更多关于uni-app APP uni.chooseImage在ios系统版本为15.4时选择照片权限后,再次点击上传无反应的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

缩小下问题范围,ios 模拟器是否正常,其他同事手机、ios 系统版本是否正常?你运行 helloUniApp 内置模版是否正常

更多关于uni-app APP uni.chooseImage在ios系统版本为15.4时选择照片权限后,再次点击上传无反应的实战教程也可以访问 https://www.itying.com/category-93-b0.html


ios模拟器也是正常的,其他同事的手机运行没有问题,安卓手机也没有问题,ios手机又运行了系统版本15.8以及系统18的都没有问题,只有系统为15.4的有这个问题

针对你提到的uni-app在iOS 15.4系统上使用uni.chooseImage接口时,用户在首次授权照片权限后,再次点击上传无反应的问题,这里提供一种可能的解决方案。首先,确保你的代码逻辑和权限处理是正确的。以下是一个基本的代码示例,用于展示如何在uni-app中调用uni.chooseImage,并处理可能的权限问题。

// 页面逻辑代码
Page({
    data: {
        filePaths: [] // 存储选中的图片路径
    },
    
    // 选择图片函数
    chooseImage() {
        uni.chooseImage({
            count: 9, // 最多可以选择的图片张数
            sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
            sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
            success: (res) => {
                // 选中图片后,将文件路径存储到data中
                this.setData({
                    filePaths: res.tempFilePaths
                });
                console.log('选中的图片路径:', res.tempFilePaths);
            },
            fail: (err) => {
                console.error('选择图片失败:', err);
                // 处理权限问题
                if (err.errMsg === 'chooseImage:fail permission denied') {
                    uni.showModal({
                        title: '提示',
                        content: '您已拒绝访问相册,请在设置中开启权限后重试。',
                        showCancel: false,
                        success: (modalRes) => {
                            // 引导用户去设置页开启权限
                            if (uni.getSystemInfoSync().platform === 'ios') {
                                uni.setClipboardData({
                                    data: '请前往设置中开启“XXX”的相册访问权限',
                                    success: () => {
                                        uni.showModal({
                                            title: '提示',
                                            content: '权限开启指引已复制到剪贴板,请前往设置粘贴并开启。',
                                            showCancel: false
                                        });
                                    }
                                });
                            } else {
                                // Android或其他平台处理方式(如果需要)
                            }
                        }
                    });
                }
            }
        });
    }
});

在上面的代码中,我们定义了一个chooseImage方法,该方法调用uni.chooseImage来选择图片。在fail回调中,我们检查错误信息是否为权限被拒绝(chooseImage:fail permission denied),如果是,则提示用户前往系统设置中开启权限。

注意:iOS 15及以上版本对应用权限的管理更加严格,用户可能会在首次授权后撤销权限。此外,iOS 14及以上版本引入了App隐私报告,用户可以在设置中查看应用的权限使用情况。

如果上述代码未能解决问题,建议检查以下几点:

  1. 确保uni-app和相关依赖库已更新到最新版本。
  2. 检查iOS项目的Info.plist文件,确保已正确配置了相册访问权限(NSPhotoLibraryUsageDescriptionNSPhotoLibraryAddUsageDescription)。
  3. 使用Xcode的模拟器或真机调试,查看控制台是否有更详细的错误信息。
回到顶部