uni-app uni.chooseImage在iOS18系统下无法选择显示所有照片,仅显示相册中已有照片

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

uni-app uni.chooseImage在iOS18系统下无法选择显示所有照片,仅显示相册中已有照片

产品分类:uni小程序SDK
手机系统:iOS
手机系统版本号:iOS 18
手机厂商:苹果
手机机型:所有iOS18系统手机
页面类型:vue
SDK版本号:4.29

操作步骤:

  • 使用uni的uni.chooseImageAPI在iOS18系统下,选择相册中的图片,没有出现所有的照片

预期结果:

  • 显示相册中所有的图片

实际结果:

  • 没有显示所有的照片

bug描述:

  • 使用uni的uni.chooseImageAPI在iOS18系统下,选择相册中的图片,显示的是iOS18下相簿中每个存在的相簿和相对应的图片,并没有出现所有的照片,有许多照片不存在任何相簿中,无法选择

图片 图片

相关链接:


11 回复

已修复,小程序SDK重新下载4.29版本 离线SDK更新到4.31版本


这个是我自己创建的相册 名称叫系统而已 意思就是只能选择相溥里面的照片 不能选择所有的

我iOS集成小程序sdk,4.2.9,为何TZImagePickerController还是不能选择图库所有照片啊

离线SDK更新到4.31版本

目前只有Alpha版。商业环境建议使用吗?

现在有结果了么?

用xcode16.0以下版本打包没问题,目前只能等更新

回复 h***@163.com: 现在可以用xcode16打包了嘛?

有结果了吗

I just fixed the same bug by updating both HbuilderX and SDK to the version 4.36

在iOS 18系统下,uni-appuni.chooseImage接口可能遇到无法选择显示“所有照片”的问题,这通常是由于iOS系统权限或API适配问题引起的。针对这一问题,我们可以通过调整代码和配置来尝试解决。以下是一些可能的解决方案和代码示例:

1. 检查并请求相册访问权限

首先,确保你的应用已经请求并获得了访问相册的权限。在manifest.json中配置必要的权限:

"mp-weixin": { // 以微信小程序为例,其他平台类似
  "requiredPrivateInfos": ["chooseImage"]
},
"app-plus": {
  "distribute": {
    "ios": {
      "permissions": {
        "NSPhotoLibraryUsageDescription": "应用需要访问您的相册"
      }
    }
  }
}

在代码中,你可以使用uni.getSetting来检查权限状态,并使用uni.authorize请求权限:

uni.getSetting({
  success: function(res) {
    if (!res.authSetting['scope.writePhotosAlbum']) {
      uni.authorize({
        scope: 'scope.writePhotosAlbum',
        success: function() {
          // 用户同意授权后再次尝试调用 chooseImage
          chooseImages();
        },
        fail: function() {
          console.error('用户拒绝授权');
        }
      });
    } else {
      chooseImages();
    }
  }
});

function chooseImages() {
  uni.chooseImage({
    count: 9,
    sizeType: ['original', 'compressed'],
    sourceType: ['album', 'camera'], // 尝试同时从相册和相机选择
    success: function(res) {
      console.log('选择的图片路径:', res.tempFilePaths);
    },
    fail: function(err) {
      console.error('选择图片失败:', err);
    }
  });
}

2. iOS系统特定适配

由于iOS 18可能引入了新的隐私保护机制,确保你的uni-app和相关依赖库(如HBuilderX)已经更新到最新版本,以便适配最新的iOS系统。

3. 使用原生插件或自定义组件

如果上述方法仍然无法解决问题,可以考虑使用原生插件或自定义组件来绕过uni.chooseImage的限制。这通常涉及到iOS原生开发,需要编写Objective-C或Swift代码来调用原生相册选择界面,并通过JSBridge与uni-app进行通信。

注意事项

  • 在实际开发中,务必进行充分的测试,确保代码在目标iOS版本和其他平台上都能正常工作。
  • 如果问题依然存在,建议查阅uni-app官方文档或社区论坛,看是否有其他开发者遇到并解决了类似问题。

以上代码和配置仅供参考,具体实现可能需要根据实际情况进行调整。

回到顶部