繼上一節課,我們已經簡要說明了將圖片保存到相冊的流程和方法。
這節課我們圍繞這個問題,展開講解獲取用戶權限,將網絡圖片下載到臨時文件,最後保存到相冊。
獲取用戶權限 wx.authorize
使用方法如下:
// 可以通過 wx.getSetting 先查詢一下用戶是否授權了
wx.getSetting({
success(res) {
if (!res.authSetting[scope]) {
wx.authorize({
scope: scope,
success() {
console.log('授權成功')
}
})}}})
這裏的scope有5種參數,使用中間那行接口的時候,就要獲取相應的scope權限。
這裏我們拿scope.writePhotosAlbum爲例。
我們在小程序初始化的時候獲取權限,也可以在要保存圖片的時候獲取權限。
保存運行效果如下:
這裏還有一個調試小技巧。
調試技巧
清楚授權緩存,就可以不斷調試授權。
下載文件wx.downloadFile
我們在點擊圖片的響應事件裏面調用下載文件的方法
showImg:function(event){
var imgSrc = event.currentTarget.dataset.imgSrc;
//下載文件
wx.downloadFile({
url:imgSrc,
success:function (res){
console.log(res);
}
})
},
保存運行,點擊圖片。可以在console中查看日誌。
這裏的tempFilePath就是下載到本地的臨時文件。
可以進一步的調用wx.saveFile將臨時文件保存爲永久文件。
注意這個文件大小限制了10M。
保存到相冊wx.saveImageToPhotosAlbum
接下來我們將本地的臨時文件,保存到相冊裏。
wx.saveImageToPhotosAlbum({
filePath: res.tempFilePath,
success:function(data){
console.log(data);
},
fail:function(err){
console.log(err);
}
})
這裏的res就是我們調用下載文件的回調數據,實際代碼結構如下:
保存運行,點擊圖片。
在工具上調試,會彈出保存窗口。
可以點擊確定、取消。
到這裏我們的功能就都完成了。
接下來我們來看幾種錯誤情況。
1、最開始用戶點擊了拒絕授權。(使用上面的調試技巧,清空一下授權記錄)
錯誤碼:errMsg:”saveImageToPhotosAlbum:fail auth deny”
2、用戶點擊了取消。
錯誤碼:errMsg:”saveImageToPhotosAlbum:fail cancel”
3、如果一開始用戶點擊了拒絕授權,那就一直是拒絕的。
我們在保存錯誤回調中加入一下測試代碼
運行結果
用戶拒絕授權重新授權
但是我們有很多小程序的設計都是在用戶同意授權的情況下,才能正常使用的。
這裏我們可以通過調用wx.openSetting的方法打開授權設置頁面。
修改我們的測試代碼。
保存運行。點擊圖片。
就會打開授權管理頁面。
用戶設置完成點擊確定,會響應success函數。
但是不管用戶是否重新打開都是響應同一個函數。
所以我們可以判斷我們需要的權限是否打開,
然後分別給出提示。
我們修改wx.openSetting函數,保存運行。點擊圖片。
wx.openSetting({
success(settingdata){
console.log(settingdata)
if (settingdata.authSetting.scope.writePhotosAlbum){
console.log('獲取權限成功,給出再次點擊圖片保存到相冊的提示。')
}else{
console.log('獲取權限失敗,給出不給權限就無法正常使用的提示')
}
}
})
這裏有一個報錯,我們的代碼裏settingdata.authSetting.scope.writePhotosAlbum這樣的取值猛地一看並沒有錯誤,這也是一個比較容易犯的一個錯誤,可能覺得沒有錯,後面的scope.writePhotosAlbum對應圖中紅框中的屬性名。但是按程序理解的話,上面的數據結構如下:
settingdata:{
authSetting:{
scope:{
writePhotosAlbum:false
}
}
}
所以這裏我們修改一下settingdata.authSetting.scope.writePhotosAlbum,改成settingdata.authSetting[‘scope.writePhotosAlbum’]。這裏就是js中的兩種取值方式了,點取值和中括號取值,中括號有一個最大的有點就是中括號內可以寫一個變量。
保存運行,點擊圖片。先直接點擊關閉,再點擊圖片,勾選權限,再點擊關閉。日誌如下:
源代碼:百度雲 鏈接:http://pan.baidu.com/s/1dFgtiHN 密碼:77yw
這節課的內容就到這裏結束了。
感謝您的閱讀。
我是莽夫,希望你開心。
如果你覺得本文對你有幫助,請掃描文末二維碼,支持博主原創。
希望大家關注我的個人公衆號ionic_