小程序授权只提示一次的坑和处理方法

小程序在将图片保存到相册时,需要请求writePhotosAlbum的权限。但是小程序的坑就在于在第一次执行保存前如果检测到权限未开启会弹出提示,但是如果这时点击拒绝后,他喵的以后再保存的时候就不管了,导致点击的时候啥反应没有,非常尴尬。

截屏2022-02-08 下午2.26.43.png

就是这里,如果点击拒绝的话它以后再点保存就没用了。

作为一个成熟的小程序,我们当然不能容忍这样的情况出现。我们要在每次保存图片的时候使用微信提供的wx.getSetting api都来手动检查它的权限。有权限的话再执行保存操作。没有权限的话,就要用wx.openSetting api调起小程序的设置页面,让用户手动打开权限。

 // 保存图片(先检查权限)
  public saveCard = async() => {
    const settingRes = await Taro.getSetting();

    if (settingRes.authSetting['scope.writePhotosAlbum']) {
      this.saveToAlbum();
      return;
    }

    Taro.authorize({
      scope: 'scope.writePhotosAlbum',
      success() {
        this.saveToAlbum();
      },
      fail() {
        Taro.showModal({
          title: '提示',
          content: '保存到相册的权限已关闭,是否打开?',
          success: async(res) => {
            if (res.confirm) {
              const openRes = await Taro.openSetting();
              if (openRes.authSetting['scope.writePhotosAlbum']) {
                this.saveToAlbum();
              }
            }
          },
        });
      },
    });
  };

在这里,还要注意到的一点是这里调起的设置界面只会出现小程序已经向用户请求过的权限。因此,我们在使用这个api之前要先使用wx.authorize提前发起授权请求,在失败的回调中打开再打开设置页面,否则在设置页面中不会出现该权限的开关。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容