生成海報保存到手機(jī)相冊聊疲,
用戶拒絕后就無法再次使用未授權(quán)時彈出的授權(quán)頁面袭异,
遇到的問題:
觸發(fā)openSetting需要通過tap的調(diào)用
- 通過button來調(diào)用
- 則是通過點(diǎn)擊showModal的回調(diào)來調(diào)用openSetting, 主要講通過showModal這種方式
我用的是taro框架铛碑,所以一開始在程序中Promise 的來處理回調(diào)藻丢,報錯:openSetting:fail can only be invoked by user TAP gesture. (官方回答:不能使用promise的方式去處理回調(diào)犁跪,需要改成直接普通的回調(diào)方式, promise是異步的法希,“點(diǎn)擊行為允許調(diào)用”這個機(jī)制要求是同步的)
Taro.getSetting().then((res)=>{
console.log(res)
// 假如用戶未授權(quán)枷餐,則彈出授權(quán)框讓用戶選擇
if(!res.authSetting['scope.writePhotosAlbum']){
Taro.authorize({
scope:'scope.writePhotosAlbum'
}).then(()=>{
// 授權(quán)成功,則執(zhí)行生成海報的程序
}).catch((err)=>{
// 如果用戶拒絕了授權(quán)苫亦,則彈出提示框提示用戶毛肋,用戶點(diǎn)擊彈出框確認(rèn)按鈕,則通過Taro.openSetting去重新授權(quán)相冊
console.log(err)
// 拒絕后屋剑,錯誤提示有這幾種润匙,看別人都做if判斷,我這邊就不錯判斷
// err.errMsg == 'authorize:fail:auth deny' 這種是android上返回的(vivo)
// err.errMsg == 'authorize:fail auth deny' 這種是ios上第一次拒絕后返回的唉匾,還有開發(fā)者工具上也是返回這種
// err.errMsg == 'authorize:fail authorize no response' 這種是ios拒絕后孕讳,用戶再次點(diǎn)擊后返回的信息
Taro.showModal({
title:'提示',
content: '若不微信授權(quán),則無法使用保存圖片或視頻到您的相冊',
success: s=>{
Taro.openSetting({
success(settingdata) {
if (settingdata.authSetting['scope.writePhotosAlbum']) {
// 重新授權(quán)成功巍膘,則執(zhí)行生成海報的程序
}else {
// 用戶再次拒絕授權(quán)厂财,則提示用戶
Taro.showToast({
title: '獲取權(quán)限失敗,無法使用保存圖片或視頻到您的相冊',
icon: 'none'
})
}
}
})
}
})
})
}else{
console.log("b")
that.createImg(user);
}
that.setState({
isCanvas: true
})
})