微信小程序保存圖片拒絕授權後的操作

這個地方還是有些困惑人的,拒絕了保存圖片的授權,處理不好再次保存圖片的時候就沒有反應了,還是很急人的,那麼我們來記錄一下這個地方。
大家都知道,微信小程序保存圖片等都需要獲取相對應的權限纔可以進行接下來的操作可行,那麼如果我們一開始就拒絕了授權,再次想要保存的時候也還是要打開權限才行,所以我們來認識兩個跟小程序授權相關的api。

獲取用戶當前的設置

要使用保存圖片權限之前我們首先要看看設備有沒有這個權限,所以要獲取一下用戶當前的設置

wx.getSetting({
  success (res) {
    console.log(res.authSetting)
    // res.authSetting = {
    //   "scope.userInfo": true,
    //   "scope.userLocation": true
    // }
  }
})

有上面的代碼可以看到,這個api的返回值中包含了用戶已經打開的設置,那麼對於我們來說,如果使用的時候已經打開了保存圖片的權限scope.writePhotosAlbum是true,我們就可以直接保存圖片到本地;但是如果非true,那麼我們就要了解一下怎麼打開這個權限了~

設置需要打開的權限

注意:設置界面只會出現小程序已經向用戶請求過的權限。
2.3.0 版本開始,用戶發生點擊行爲後,纔可以跳轉打開設置頁,管理授權信息。詳情

這段話的意思就是,我們要向設置我們想要用的設置,必須是我們之前拒絕過的,有拒絕記錄的,才能在這個地方找到把那個可以設置打開。

wx.openSetting({
  success (res) {
    console.log(res.authSetting)
  }
})

書接上面,如果我們使用保存權限時發現我們已經拒絕了授權,就是並沒有打開這項權限,所以使用打開權限的api,然後就會去到設置權限的頁面
在這裏插入圖片描述
打開這個權限回去就可以保存圖片了。
上代碼:

saveImg1() {
    let that = this;
    //看看是否有保存圖片的權限,沒有就去打開權限
    let openSetting = function(resourse) {
      wx.getSetting({
        success: (res) => {
          console.log('getSetting', res);
          if (res.authSetting['scope.writePhotosAlbum']) {
            saveImg(resourse)
          }else{
            wx.showModal({
              title: '是否授權保存到相冊',
              content: '需要獲取您的保存圖片權限,請確認授權,否則圖片將無法保存到相冊',
              success: function (tip) {
                if (tip.confirm) {
                  wx.openSetting({
                    success: function (data) {
                      if (data.authSetting["scope.writePhotosAlbum"] === true) {
                        applyApi.toast("授權成功");
                        saveImg(resourse)
                      } else {
                        applyApi.toast("授權失敗");
                      }
                    }
                  })
                }
              }
            })
          }
        },
        fail: function(res) {},
        complete: () => {}
      })
    }
    let saveImg = function(resourse) {
      console.log("保存圖片:",resourse);
      wx.saveImageToPhotosAlbum({
        filePath: resourse.tempFilePath,
        success: function(res) {
          console.log(res)
          applyApi.toast('保存成功!')
        },
        fail: function(res) {
          console.log(res)
          console.log('fail-saveImageToPhotosAlbum')
          //這個地方加個緩存的意思就是,爲了拒絕過了之後緩存爲true,再次操作的時候纔會去核實保存圖片權限的問題
          if(wx.getStorageSync("saveImg") == true){
            openSetting(resourse)
          }
          wx.setStorageSync("saveImg",true);
        }
      })
    }
    wx.downloadFile({
      url: that.QRCodeUrl,
      success: function(res) {
        console.log(res)
        saveImg(res)
      },
      fail: function() {
        console.log('fail-downloadFile')
      }
    })
  }

授權成功後返回保存頁面圖片就會執行保存程序了。
OK,以上就是小程序保存圖片的內容咯,有問題歡迎評論留言~

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章