记微信小程序订阅消息使用及拒绝后引导启用

本文介绍了一种在微信小程序中实现订阅消息授权的方法,并通过代码示例详细展示了如何检查用户的订阅状态,以及如何引导未授权用户进行授权操作。

原文

注意

  1. 订阅消息必需由tap事件触发
  2. 保持以上选择不在询问,这辈子都不会再弹窗了,需要openSetting去设置页打开。没勾选每次都会弹窗。用户引导很重要。

代码

// 判断是否授权微信订阅消息
    auditSubscriptionsSetting() {
      let that = this
      const tmplId = '把这个换成你自己的模板ID就彳亍了'
      wx.getSetting({
        withSubscriptions: true,
        success(res) {
          console.log(res)
          if (res.subscriptionsSetting && res.subscriptionsSetting.mainSwitch) {
            if (
              res.subscriptionsSetting.itemSettings &&
              res.subscriptionsSetting.itemSettings[tmplId]
            ) {
              let item = res.subscriptionsSetting.itemSettings[tmplId]
              if (item == 'reject') {
                console.log('提示:用户拒绝订阅消息')
                that.dingyueComfirm(tmplId)
              } else if (item == 'accept') {
                console.log('提示:您已经开启订阅消息')
              } else if (item == 'ban') {
                console.log('提示:您已经被后台封禁')
              }
            } else {
              console.log('提示:用户没有勾选订阅消息或者没有状态')
              that.dingyueComfirm(tmplId)
            }
          } else {
            console.log('提示:订阅消息主开关没打开')
            that.dingyueComfirm(tmplId)
          }
        }
      })
    },
// 订阅信息
    dingyueComfirm: function(tmplId) {
      wx.showModal({
        title: '订阅消息',
        content: '请同意我们给您推送信息,以便接受租户提交审核提醒。',
        success: res => {
          if (res.confirm) {
            wx.requestSubscribeMessage({
              tmplIds: [tmplId],
              success: res => {
                if (res[tmplId] === 'accept') {
                  wx.showToast({
                    title: '订阅成功!',
                    icon: 'success'
                  })
                } else if (res[tmplId] == 'reject') {
                  //引导用户,手动引导用户点击按钮,去设置页开启,## Modals是自定义组件
                  wx.showModal({
                    title: '订阅消息',
                    content: '您当前拒绝接受消息通知,是否去开启',
                    confirmText: '开启授权',
                    confirmColor: '#345391',
                    cancelText: '仍然拒绝',
                    cancelColor: '#999999',
                    success(res) {
                      if (res.confirm) {
                        console.log('用户点击确定')
                        wx.openSetting({
                          success(res) {
                            console.log(res.authSetting)
                          },
                          fail(err) {
                            //失败
                            console.log(err)
                          }
                        })
                      } else if (res.cancel) {
                        console.log('用户点击取消')
                      }
                    }
                  })
                }
              },
              fail(err) {
                //失败
                console.log(err)
              }
            })
          }
        }
      })
    },
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值