- 用户保存图片到相册授权问题。
问题描述:大家可能会遇到这样的问题,有一个保存图片到相册的功能,我们利用wx.saveImageToPhotosAlbum() api,正常情况下很简单用户点击按钮,系统询问是否授权,用户点击授权图片保存成功。 但是事情往往不是我们想到那样简单,用户的操作可谓是什么操作都有。当系统询问是否授权时,非常敏感的用户一看到授权2话不说,直接拒绝。心想:“握草,想获取我的隐私?”。不一会自己又感觉不对劲,我要保存图片啊,我怎么点了取消。然后又去点保存,发现什么反应都没,心想:“握草怎么没反应,是不是手机坏了,什么鬼”,强迫症患者这个情况怕不是要疯了。 为什么会出现这种情况,根据微信小程序api发现 wx.saveImageToPhotosAlbum() api 只会在用户第一次调用的时候发起授权弹窗,如果用户拒绝授权,wx.saveImageToPhotosAlbum()调用失败,这个时候wx.saveImageToPhotosAlbum()走了失败回调,我们在控制台打印 console.log(“用户授权api调用失败,几率0.01%”) console.log(“用户拒绝授权,几率99.99%”) 用户拒绝授权怎么办,么慌。根据微信小程序文档我们会知道,这种情况下需要用户主动到授权管理页面打开相应的授权开关,高级微信用户都是到入口在那,一般用户授权:“授权管理页面是什么鬼?“,我们不能把希望寄托在他们身上了,他们不是会再一次去点击保存按钮吗? 来一个偷梁换柱,wx.saveImageToPhotosAlbum()调用失败检测是否未授权 this.get_setting() 发现用户未授权,将页面按钮换成 <button open-type=‘openSetting’ bindopensetting=‘bind_load’ class=‘fenxiang_bot_box nobutton’></button> 打开授权管理页面, 用户发现自己“看到了不该看的,握草,用户信息,保存相册,敢获取我的信息,都关掉”,哈哈,用户已经知道是怎么回事了,“不行我得把保存相册打开,这个图片太好了我要保存”; get_setting(t) { wx.getSetting({ success: (res) => { if (res.authSetting[‘scope.writePhotosAlbum’] == undefined) { this.setData({ img_status: true }); } else { this.setData({ img_status: res.authSetting[‘scope.writePhotosAlbum’] }); } if (t) { t() } } }) }, wx.saveImageToPhotosAlbum({ filePath: this.data.img, success(res) { wx.showToast({ title: ‘保存成功’ }) }, fail: (res) => { [代码] this.get_setting(() => { if (this.data.img_status) { wx.showToast({ title: '保存失败', icon: 'none' }) } else { wx.showToast({ title: '权限不足', icon: 'none' }) } }); } }) [代码] 用户同意授权,打开开关返回bindopensetting=‘bind_load’ bind_load 事件触发保存操作, 保存成功^ _^
2019-07-03 - 小程序调用uni.saveImageToPhotosAlbum无法保存图片到相册
我调用saveImageToPhotosAlbum在工具中都好使,一到真机或者是线上就没办法保存,直接点击无效啥也不触发,合法域名,隐私协议,等等又是配置好了的。能解答一下疑问吗?
2023-11-08