wx.saveImageToPhotosAlbum的使用
具体如何使用可以查看官方的文档:官方文档
注:本文是在微信调试基础库2.13.2版本下的测试结果
根据文档我们已经正确调用了,也经过测试没问题了,但是就是后面测试的时候发现了有时候有的手机就出问题了,无法弹出授权页面,也没有任何提示,就是保存不成功,这样子的交互是很不友好的,于是开始解决这个问题。
分析问题的原因
经过大量的真机测试发现了微信小程序中,如果用户在拒绝过授权,下次再请求时是不会再次弹出授权窗口的所以需要先判断授权状态,手动弹出授权提醒。
这个时候wx.openSetting往往也是不能触发授权弹窗,应该是处于防止骚扰考虑。
一般都是提示:
"saveImageToPhotosAlbum:fail authorize no response"
"saveImageToPhotosAlbum:fail auth deny"
……
无法授权的提示
//这种写法是无效的,测试过
wx.saveImageToPhotosAlbum({
filePath: res.tempFilePath,
success: function(res) {},
fail: function(res) {
wx.openSetting({})//再次获取授权
}
})
那么如何解决?
在调用wx.saveImageToPhotosAlbum()这个API之前先做个判断,判断是否有这个权限了:
wx.getSetting()这个就可以获取这信息
res.authSetting.hasOwnProperty(‘scope.writePhotosAlbum’)如果有这个字段,状态是false,说明拒接过,这种情况是不会再次自动弹出授权窗口的
这个时候可以做两种处理:
- 调用弹窗出来重新授权,这个是在参考其他开发人员的方案,本人测试后发现还是有的手机无法获取授权,同样获取不了权限,大家可以试试效果。
wx.getSetting({ success: (res) => { if(res.authSetting.hasOwnProperty(‘scope.writePhotosAlbum’)=== false ){ wx.showModal({ title: '提示', content: '需要获取相册权限', success: function (res) { if (res.confirm) { // 打开授权页面,让用户手动打开权限 wx.openSetting({ success: function (data) {} }) } } } }
- 由于用户拒绝过无法再次弹窗提示授权,这个时候只能做个提示,提示用户到小程序的设置功能中去打开相册的授权。这个方式任何机型有用!
怎么打开这个设置可以看这个:微信小程序设置管理
这边提示没给授权的用户进行操作即可,温馨的提示足以做到人性化的交互。