uni-app uni.chooseImage 访问相册在 iOS18 系统下异常
uni-app uni.chooseImage 访问相册在 iOS18 系统下异常
类别 | 信息 |
---|---|
产品分类 | uniapp/App |
PC开发环境操作系统 | Mac |
PC开发环境操作系统版本号 | 版本15.0.1 (24A348) |
HBuilderX类型 | 正式 |
HBuilderX版本号 | 4.29 |
手机系统 | iOS |
手机系统版本号 | iOS 18 |
手机厂商 | 苹果 |
手机机型 | iPhone12 |
页面类型 | vue |
vue版本 | vue2 |
打包方式 | 云端 |
项目创建方式 | HBuilderX |
示例代码:
uni.chooseImage({
count: 6, //默认9
sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有
sourceType: ['album'], //从相册选择
success: function (res) {
console.log(JSON.stringify(res.tempFilePaths));
}
});
操作步骤:
uni.chooseImage({
count: 6, //默认9
sizeType: ['original', 'compressed'], //可以指定是原图还是压缩图,默认二者都有
sourceType: ['album'], //从相册选择
success: function (res) {
console.log(JSON.stringify(res.tempFilePaths));
}
});
预期结果:
正常显示相册所有照片
实际结果:
显示的是相册目录 无法查看全部图片
bug描述:
uni.chooseImage 访问相册在 iOS18 系统下异常 如图
目前测试 iOS18版本以下的系统正常 可以直接查看所有照片
麻烦紧急看看 影响客户使用
3 回复
麻烦官方人员给看看
针对 uni-app
中 uni.chooseImage
在 iOS 18 系统下访问相册出现异常的问题,这通常涉及到权限管理或 API 适配的问题。iOS 18 对应用权限管理进行了进一步的增强,因此在使用相册功能时,需要确保应用已经正确获取了相关权限,并且 API 调用方式符合最新的系统要求。
以下是一个基本的代码示例,展示了如何在 uni-app
中请求相册权限并使用 uni.chooseImage
来选择图片。注意,这只是一个基础示例,你可能需要根据实际情况进行调整。
- 请求相册权限(在 iOS 18 及以上版本中,权限请求可能需要在应用启动时或在调用相关功能前显式进行):
// 检查并请求相册权限(注意:uni-app 本身没有直接的 API 来请求权限,这通常需要原生插件或原生代码)
function requestPhotoLibraryPermission() {
// 这里假设你有一个原生插件或原生代码来处理权限请求
// 例如,使用 uni-app 的原生模块功能或第三方插件
// 伪代码示例:
if (uni.getSystemInfoSync().platform === 'ios' && parseFloat(uni.getSystemInfoSync().version) >= 18) {
// 调用原生方法请求权限(需要原生支持)
// uni.requireNativePlugin('YourPluginName').requestPhotoLibraryPermission().then(permissionGranted => {
// if (permissionGranted) {
// // 权限已授予,继续调用 chooseImage
// chooseImages();
// } else {
// // 处理权限拒绝情况
// console.error('Photo library permission denied');
// }
// }).catch(error => {
// console.error('Error requesting photo library permission', error);
// });
} else {
// 直接调用 chooseImage(在其他平台或未明确需要请求权限的 iOS 版本)
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('Failed to choose image', err);
}
});
}
// 调用函数请求权限并选择图片
requestPhotoLibraryPermission();
注意:
- 上述代码中的权限请求部分是一个伪代码示例,因为
uni-app
本身没有直接的 API 来请求 iOS 权限。这通常需要借助原生插件或直接在原生代码中实现。 - 在实际项目中,你可能需要集成一个原生插件来处理 iOS 权限请求,或者使用
uni-app
提供的原生模块功能。 - 确保你的应用已经在
Info.plist
中声明了必要的权限,例如NSPhotoLibraryUsageDescription
。 - 由于 iOS 系统的不断更新,建议持续关注 Apple 的官方文档,以确保你的应用符合最新的权限管理要求。