前言:上章基本实现保存图片到手机相册的功能了,但是还有这么几个问题没有解决,本章解决这几个问题。
GitHub:https://github.com/Ewall1106/miniProgramDemo
1、授权问题
(1)如果用户第一次点击的时候,对弹出来的微信授权弹窗点击了拒绝,那么之后点击保存图片就没用了:
如果用户第一次点击了拒绝授权(2)所以我们应该做下用户授权判断,首先我们应该调用wx.getSetting(OBJECT)方法获取用户的当前设置,看看用户请求过的权限中是否存在保存到相册这个权限。
图片来自小程序官网wx.getSetting({
success(res) {
if (!res.authSetting['scope.writePhotosAlbum']) {
// ...
} else {
// ....
}
}
});
(3)如果用户没有保存到相册这个权限,那么,我们就应该使用wx.authorize(OBJECT)向用户发起授权请求。
图片来自小程序官网调用后会立刻弹窗询问用户是否同意授权小程序使用某项功能或获取用户的某些数据,但不会实际调用对应接口。如果用户之前已经同意授权,则不会出现弹窗,直接返回成功。
wx.getSetting({
success(res) {
if (!res.authSetting['scope.writePhotosAlbum']) {
wx.authorize({
scope: 'scope.writePhotosAlbum',
success() {
// ...
},
fail() {
}
});
} else {
// ...
}
}
});
(4)当授权成功,我们应该执行保存图片到本地的saveImage
函数(上一章写好的),否则,如果fail
则执行wx.opoenSetting(OBJECT)方法调起客户端设置界面让用户可以再次同意授权。
这样我们就解决了在保存图片的时候关于用户授权的问题。
2、手机打开调试模式可以保存图片,但是关闭调试模式就不能保存图片了。
-
这个问题很简单,因为在打开调试模式的时候,我们一般勾选了不校验合法域名,所以可以保存图片:
项目设置
-
因为将图片保存到本地需要调用
添加downloadFile合法域名wx.downloadFile(OBJECT)
这个api,所以解决的方法就是在微信公众平台中添加downloadFile
合法域名就可以解决这个问题了
参考学习
https://developers.weixin.qq.com/miniprogram/dev/api/
https://mp.weixin.qq.com/wxopen/home
https://github.com/Ewall1106/miniProgramDemo
网友评论