微信小程序图片保存到相册API有时无法保存无法授权的问题解决

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,说明拒接过,这种情况是不会再次自动弹出授权窗口的

这个时候可以做两种处理:

  1. 调用弹窗出来重新授权,这个是在参考其他开发人员的方案,本人测试后发现还是有的手机无法获取授权,同样获取不了权限,大家可以试试效果。
    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) {}
         })
         }
      }
     }
    }

     

  2. 由于用户拒绝过无法再次弹窗提示授权,这个时候只能做个提示,提示用户到小程序的设置功能中去打开相册的授权。这个方式任何机型有用!

     怎么打开这个设置可以看这个:微信小程序设置管理

     这边提示没给授权的用户进行操作即可,温馨的提示足以做到人性化的交互。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值