uni-app iOS 18.1版本无法选择相册图片
uni-app iOS 18.1版本无法选择相册图片
selectImage() {
var that = this
var count = this.maxImgCount;
var imageCount = this.pickImages.length
var otherCount = count - imageCount;
if (otherCount <= 0) {
uni.showToast({
icon: 'none',
title: '最多' + count + '张截图'
})
return;
}
uni.chooseImage({
count: otherCount,
success(res) {
console.log("选择的图片: " + JSON.stringify(res));
that.uploadAllImages(res.tempFilePaths)
},
complete(res) {
console.log("选择的完成");
},
fail(res) {
console.log("选择的失败: " + JSON.stringify(res));
}
})
},
iOS 18.x 进入选择相册后 一直显示在处理中,而且页面没有出现 确认按钮
2 回复
https://ask.dcloud.net.cn/question/199774 这个帖子统一处理 ios18 到问题,如果不是一个问题,请回复我
针对您提到的uni-app在iOS 18.1版本上无法选择相册图片的问题,这通常与权限请求或API调用有关。在iOS系统中,尤其是从iOS 14开始,苹果加强了对用户隐私的保护,应用需要明确请求并获得用户的许可才能访问相册。以下是一些可能帮助解决问题的代码示例和检查点:
1. 确保已请求相册权限
在uni-app中,您需要在manifest.json
文件中声明所需的权限,并在代码中动态请求权限。尽管manifest.json
主要用于Android权限声明,iOS的权限请求主要通过代码实现。
在代码中请求权限(示例使用Vue.js语法):
// 引入uni的权限管理模块
const permission = uni.getSetting();
if (!permission.authSetting['scope.album']) {
uni.authorize({
scope: 'scope.album',
success() {
console.log('用户同意授权访问相册');
// 这里可以调用选择相册图片的API
chooseImage();
},
fail() {
console.log('用户拒绝授权访问相册');
// 提示用户授权或处理拒绝情况
}
});
} else {
// 用户已经授权,直接调用选择相册图片的API
chooseImage();
}
function chooseImage() {
uni.chooseImage({
count: 9, // 默认9
sizeType: ['original', 'compressed'], // 可以指定是原图还是压缩图,默认二者都有
sourceType: ['album', 'camera'], // 可以指定来源是相册还是相机,默认二者都有
success(res) {
const tempFilePaths = res.tempFilePaths;
console.log(tempFilePaths);
},
fail(err) {
console.error('选择图片失败', err);
}
});
}
2. 检查Info.plist配置
确保在Xcode的Info.plist
文件中添加了必要的权限描述键,如NSPhotoLibraryUsageDescription
和NSCameraUsageDescription
(如果使用了相机)。
<key>NSPhotoLibraryUsageDescription</key>
<string>应用需要访问您的相册以选择图片</string>
<key>NSCameraUsageDescription</key>
<string>应用需要访问您的相机以拍摄照片</string>
3. 调试和测试
- 使用Xcode运行您的uni-app项目,查看控制台是否有权限请求失败的错误信息。
- 确保在真机上测试,模拟器可能无法完全模拟真实的权限请求行为。
通过上述步骤,您应该能够定位并解决uni-app在iOS 18.1上无法选择相册图片的问题。如果问题依旧存在,建议检查是否有最新的uni-app框架更新或者iOS系统的特定限制。