开发环境:uniapp
问题场景
在开发微信小程序的时候,遇到了在弹窗的后面加一个层级提示,当你选择了消息订阅提示框的“总是选择以上消息提醒”的时候,就要将这个背景隐藏掉。因为微信官方提供的uni.requestSubscribeMessage({})
API并没有直接返回是否选中“总是”的字段。所以这里我们需要配合使用另一个API(uni.getSetting)
。
如何判断是否选中“总是选择…”?
通过观察uni.getSetting()
返回的数据,发现关键部分:如果选中了“总是选择…”就会返回您的tempIds
中的内容。反之,则没有返回。那么我们就可以写以下的代码。
uni.getSetting({
withSubscriptions: true,
success (res) {
// 通过Object.keys() 获取返回的数据包含了哪些键名,返回的类型是个数组
let obj = Object.keys(res.subscriptionsSetting)
// mainSwitch 是消息订阅的总开关
if(!res.subscriptionsSetting.mainSwitch){
uni.showToast({
icon:'none',
title: '请去 "设置-消息订阅" 开启消息通知',
duration: 2000
});
} else {
// tempid 是消息模板ID,由于我这只有一个模板id就直接取了
if(obj.includes(tempid[0])){
uni.showToast({
icon:'none',
title: '您已经设置了总是提醒了哟',
duration: 2000
});
return
}
_this.showMask = true
uni.requestSubscribeMessage({
tmplIds: tempid,
success(res) {
if(res[tempid[0]] == 'accept'){
uni.showToast({
icon:'none',
title: '提醒设置成功',
duration: 2000
});
_this.showMask = false
}else{
_this.showMask = false
}
},
})
}
}
})