uni-app ios15保存图片到相册提示错误

uni-app ios15保存图片到相册提示错误

saveImageToPhotosAlbum:fail [Gallery:3302]未能完成操作。(PHPhotosErrorDomain错误3302。)

接口:uni.saveImageToPhotosAlbum

描述:把图片保存到相册时报错

图片

11 回复

是指app端吗?注意:filePath,图片文件路径,不支持网络图片路径 详见文档说明
【社区问题咨询正确姿势】

更多关于uni-app ios15保存图片到相册提示错误的实战教程也可以访问 https://www.itying.com/category-93-b0.html


是app端,我是通过上面的图片网络地址调用接口uni.downloadFile保存到本地,再调用uni.saveImageToPhotosAlbum报错的

回复 8***@qq.com: 我也是这样的问题,请问你解决了吗

回复 2***@qq.com: 还没有解决

回复 8***@qq.com: 要用uni.getImageInfo 获取到真正的图片路径,不要用临时路径

解决了吗?我也遇到了

你好,请问解决了吗

8年iOS开发,iOS相关的问题可以找我,解决不了不要钱,解决了给瓶水钱就行,我QQ752562065

回复 iOSDeveloper: 那个问题解决了吗

在 uni-app 中,保存图片到相册时遇到错误,尤其是在 iOS 15 上,可能是由于以下几个原因导致的。以下是一些常见的解决方案:

1. 权限问题

iOS 15 对相册权限的管理更加严格。确保你已经正确请求了相册的写入权限。

// 在需要保存图片的地方,先检查权限
uni.authorize({
    scope: 'scope.writePhotosAlbum',
    success() {
        // 用户已经同意授权
        saveImageToAlbum();
    },
    fail() {
        // 用户拒绝授权,提示用户打开权限
        uni.showModal({
            title: '提示',
            content: '请开启相册权限以保存图片',
            success(res) {
                if (res.confirm) {
                    uni.openSetting();
                }
            }
        });
    }
});

function saveImageToAlbum() {
    uni.saveImageToPhotosAlbum({
        filePath: '图片路径',
        success() {
            uni.showToast({
                title: '保存成功',
                icon: 'success'
            });
        },
        fail(err) {
            uni.showToast({
                title: '保存失败',
                icon: 'none'
            });
            console.error(err);
        }
    });
}

2. 图片路径问题

确保你提供的图片路径是正确的,并且是本地路径。如果是网络图片,需要先下载到本地再保存。

uni.downloadFile({
    url: '网络图片地址',
    success(res) {
        if (res.statusCode === 200) {
            uni.saveImageToPhotosAlbum({
                filePath: res.tempFilePath,
                success() {
                    uni.showToast({
                        title: '保存成功',
                        icon: 'success'
                    });
                },
                fail(err) {
                    uni.showToast({
                        title: '保存失败',
                        icon: 'none'
                    });
                    console.error(err);
                }
            });
        }
    }
});

3. iOS 15 特定问题

iOS 15 可能会有一些特定的问题,比如某些 API 的行为发生了变化。确保你的 uni-app SDK 是最新版本,并且已经适配了 iOS 15。

4. 检查错误信息

在保存图片时,fail 回调会返回错误信息。你可以通过 console.error(err) 来查看具体的错误信息,以便更好地定位问题。

uni.saveImageToPhotosAlbum({
    filePath: '图片路径',
    success() {
        uni.showToast({
            title: '保存成功',
            icon: 'success'
        });
    },
    fail(err) {
        uni.showToast({
            title: '保存失败',
            icon: 'none'
        });
        console.error(err); // 打印错误信息
    }
});

5. 使用 uni.saveFile 保存到本地

如果直接保存到相册失败,可以尝试先将图片保存到本地,然后再保存到相册。

uni.downloadFile({
    url: '网络图片地址',
    success(res) {
        if (res.statusCode === 200) {
            uni.saveFile({
                tempFilePath: res.tempFilePath,
                success(savedFile) {
                    uni.saveImageToPhotosAlbum({
                        filePath: savedFile.savedFilePath,
                        success() {
                            uni.showToast({
                                title: '保存成功',
                                icon: 'success'
                            });
                        },
                        fail(err) {
                            uni.showToast({
                                title: '保存失败',
                                icon: 'none'
                            });
                            console.error(err);
                        }
                    });
                }
            });
        }
    }
});

6. 检查 uni-app 版本

确保你使用的 uni-app 版本是最新的,因为旧版本可能存在一些兼容性问题。你可以通过以下命令更新 uni-app:

npm update -g [@vue](/user/vue)/cli [@vue](/user/vue)/cli-service-global
回到顶部