uni-app Hbuilderx4.29 版本uni.chooseImage 离线打包ios时照片展示不全

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

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 回复

离线SDK更新到4.31-alpha版本


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日志,以便进一步分析。

回到顶部