微信小程序消息订阅如何监听是否选中“总是选择以上....“?

开发环境: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
					}
				},
			})
		}
	}
})

猜你喜欢

转载自blog.csdn.net/weixin_41535944/article/details/110824723
今日推荐