uni-app Hbuilderx4.29 版本uni.chooseImage 离线打包ios时照片展示不全
uni-app Hbuilderx4.29 版本uni.chooseImage 离线打包ios时照片展示不全
操作步骤:
uni.chooseImage({
count: 9, //默认9
success(chooseImageRes) {}
)
预期结果:
ios 相册权限全部给的情况下,可以选择全部图片
实际结果:
只有个别文件如QQ,微博文件夹下的部分图片能看到,其他的相册文件看不到。 如果将权限设置成部分图片,那么选择图片那里就全是空的。
bug描述:
uniapp API:uni.chooseImage 离线打包app ,在 IOS18 的手机相册中,全部照片权限给了的情况下,却只展示一部分照片。
Hbuilderx离线打包使用的是版本4.29 。
开发环境 | 版本号 | 项目创建方式 |
---|---|---|
Windows | HBuilderX | |
windows10 | ||
正式 | ||
4.29 | ||
iOS | iOS 18 | |
手机厂商 | 苹果 | |
手机机型 | ipone12pro | |
页面类型 | vue | |
vue版本 | vue3 | |
打包方式 | 离线 |
6 回复
Huilderx 也需要更新吗?
sdk 4.31-alpha 版本 是4.32 版本吧?
测试是可以了,麻烦你啦
现在发现了一个问题 是4.31-alpha 版本 iOS 定位ui.getLocation 系统定位授权弹框展示不出来。想问一下4.31 稳定版本什么时候能出来。
在uni-app中使用uni.chooseImage
接口时,如果在离线打包iOS应用后发现照片展示不全,这通常可能是由于图片路径处理不当、图片资源未正确打包或者iOS设备特有的缓存机制等问题导致的。以下是一些可能的解决方案和相关的代码示例,帮助你排查和解决问题。
1. 确认图片路径正确
确保选择的图片路径在iOS设备上也是有效的。可以通过打印路径来检查:
uni.chooseImage({
count: 9,
success: function (res) {
console.log(JSON.stringify(res.tempFilePaths)); // 打印选择的图片路径
res.tempFilePaths.forEach(function (filePath) {
const img = document.createElement('image');
img.src = filePath;
img.onload = function () {
console.log('Image loaded:', filePath);
};
img.onerror = function (error) {
console.error('Failed to load image:', filePath, error);
};
document.body.appendChild(img); // 临时添加到DOM以测试显示
});
},
fail: function (err) {
console.error('Failed to choose image:', err);
}
});
2. 确保图片资源已正确打包
在manifest.json
中配置好需要打包的资源,特别是如果图片是放在static
目录下的,确保路径正确无误。
3. 使用本地存储解决缓存问题
iOS设备可能对临时文件有更严格的管理,可以考虑将选择的图片保存到应用的本地存储中,然后再进行展示:
uni.chooseImage({
count: 9,
success: function (res) {
res.tempFilePaths.forEach(function (filePath) {
uni.getFileSystemManager().readFile({
filePath: filePath,
encoding: 'base64',
success: function (data) {
// 将图片数据保存到本地存储,例如使用uni.setStorageSync
const imageKey = 'image_' + new Date().getTime();
uni.setStorageSync(imageKey, data.data);
// 展示图片时,可以从本地存储读取并转换为Data URL
const imgSrc = 'data:image/png;base64,' + data.data;
const img = document.createElement('image');
img.src = imgSrc;
document.body.appendChild(img);
},
fail: function (err) {
console.error('Failed to read file:', err);
}
});
});
},
fail: function (err) {
console.error('Failed to choose image:', err);
}
});
4. 检查iOS项目配置
确保Xcode项目中配置了正确的图片资源访问权限,以及检查了Info.plist中是否有必要的权限声明。
以上方法可以帮助你定位和解决uni-app在离线打包iOS时照片展示不全的问题。如果问题依旧存在,建议检查更详细的iOS日志,以便进一步分析。