cocos-creator使用记录29_微信授权将图片保存到相册

1.前言
将图片保存到相册,可使用微信接口wx.saveImageToPhotosAlbum,但需要提前授权。
https://blog.csdn.net/zkn_2439656793/article/details/78039924

2.网上的代码
//获取相册授权
wx.getSetting({
    success(res) {
        if (!res.authSetting['scope.writePhotosAlbum']) {
            wx.authorize({
                scope:'scope.writePhotosAlbum',
                success() {
                        console.log('授权成功')
                }
            })
        }
    }
})

//文件下载
var imgSrc = "http://data.zhenkuaisong.com/2017-6-13/20170914/1505375270554.jpg"
wx.downloadFile({
    url: imgSrc,
    success:function (res) {
        console.log(res);
        //图片保存到本地
        wx.saveImageToPhotosAlbum({
            filePath: res.tempFilePath,
            success:function (data) {
                console.log(data);
            },
            fail:function (err) {
                console.log(err);
                if (err.errMsg === "saveImageToPhotosAlbum:fail auth deny") {
                    console.log("用户一开始拒绝了,我们想再次发起授权")
                    console.log('打开设置窗口')
                    wx.openSetting({
                        success(settingdata) {
                            console.log(settingdata)
                            if (settingdata.authSetting['scope.writePhotosAlbum']) {
                                console.log('获取权限成功,给出再次点击图片保存到相册的提示。')
                            }else {
                                console.log('获取权限失败,给出不给权限就无法正常使用的提示')
                            }
                        }
                    })
                }
            }
        })
    }
})

3.实际使用的代码
onSaveImageBtn: function(){ //保存图片到本地
    if(!(cc.sys.platform === cc.sys.WECHAT_GAME)) return;
    var self = this;
    var value = common.levelMap[common.currentLevel - 1];
    var imgSrc = "https://www.mysite.net/wb_webview/zqddn_zhb/codeShare/codeShare" + value + ".jpg";
    wx.getSetting({
        success(res) {
            if (!res.authSetting['scope.writePhotosAlbum']) { //未授权
                wx.authorize({
                    scope:'scope.writePhotosAlbum',
                    success() {
                        console.log('授权成功')
                        wx.downloadFile({
                            url: imgSrc,
                            success:function (res1) {
                                console.log(res1);
                                wx.saveImageToPhotosAlbum({
                                    filePath: res1.tempFilePath,
                                    success:function (data) {
                                        console.log(data);
                                        self.showTipsUI("题目图片保存成功");
                                    },
                                    fail:function (err) {
                                        console.log(err);
                                    }
                                });
                            }
                        });
                    },
                    fail() {
                        console.log("授权失败");
                        wx.showModal({
                            title: '提示',
                            content: '点击确定,保存图片到相册。',
                            success:function(res){
                                if (res.confirm){
                                    wx.openSetting({
                                        success(res){
                                            console.log("重新获得保存图片授权状态");
                                            if (res.authSetting["scope.writePhotosAlbum"]){ //如果用户重新同意了授权登录
                                                wx.downloadFile({
                                                    url: imgSrc,
                                                    success:function (res1) {
                                                        console.log(res1);
                                                        wx.saveImageToPhotosAlbum({
                                                            filePath: res1.tempFilePath,
                                                            success:function (data) {
                                                                console.log(data);
                                                                self.showTipsUI("题目图片保存成功");
                                                            },
                                                            fail:function (err) {
                                                                console.log(err);
                                                            }
                                                        });
                                                    }
                                                });
                                            }
                                        },
                                        fail(){
                                            console.log("重新获得保存图片授权状态失败");
                                        }
                                    }) 
                                }
                            }
                        })
                    }
                });
            }else{ //已授权
                wx.downloadFile({
                    url: imgSrc,
                    success:function (res1) {
                        console.log(res1);
                        wx.saveImageToPhotosAlbum({
                            filePath: res1.tempFilePath,
                            success:function (data) {
                                console.log(data);
                                self.showTipsUI("题目图片保存成功");
                            },
                            fail:function (err) {
                                console.log(err);
                            }
                        });
                    }
                });
            }
        }
    });
},
以上代码实现了即使用户一开始点击的取消,也可以在下次提示玩家去开启设置的功能。

你可能感兴趣的:(cocos,creator)