微信小程序,用户订阅消息,判断订阅消息是否已经订阅

微信订阅消息的基础知识:

微信订阅消息分为一次性订阅和长期订阅

1、一次性订阅就是要用户点击一次触发订阅,服务端才能发送一次信息。点击多少次就能发送多少次。

2、长期订阅。服务端可以无限,但是教育、交通、医疗等行业才有长期订阅。

用户对小程序订阅权限的开关有两个开关,设置操作如下

点击小程序右上角的三个点,在弹出窗中找到设置。

点通知管理,可以看到【接收通知】这里是一个通知的总开关,下面是小程序相关具体提醒的开关

进点去可以看到【消息提醒】的开关。

微信小程序代码实现订阅

下面主要是实现一次性订阅消息的代码:

wxml文件

    <button type="primary" bindtap="subscribeMessage">订阅提醒</button>

获取模版id

订阅消息发送消息时需要用到模板id.

开发者需要登录小程序管理后台 ,在「功能-订阅消息-公共模版库-一次性订阅」中查询可以申请的模板,审核通过后可使用。

模版有对应类目要求,符合类目要求的小程序可在公共模版库优先看到新版模版。

类目需要搜合适的模板

勾选需要的字段

提交

这里注意一下模板是和目录相关联的,如果选择不到可能是因为类目没有添加备忘录,要去增加一下。

js文件

加入订阅消息代码:wx.requestSubscribeMessage(Object object)

  //授权订阅提醒
  subscribeMessage(){
    console.info('订阅消息!!!');
    let tmplId ='LGpkXsxxxxPFE02z6Oxxxxv_eez0xxxxego';
    wx.requestSubscribeMessage({
      tmplIds: [tmplId],
      success (res) {
        if(res[tmplId]=='accept'){//如果点击允许
          wx.showToast({
            title: '订阅成功',
          })
        }
      }
    })
  }

 效果点击出现订阅效果

判断订阅消息是否已经订阅

let id = 'LGpkXsQ396mr-xxxxxxxxxx6Ovd5w4v_eez0pYoQego'
    wx.getSetting({
      withSubscriptions: true,
      success(res) {
        debugger
        console.log(res)
        if (res.subscriptionsSetting.mainSwitch) { // 用户打开了订阅消息总开关
          if (res.subscriptionsSetting.itemSettings) { // 用户同意总是保持是否推送消息的选择, 这里表示以后不会再拉起推送消息的授权
            let moIdState = res.subscriptionsSetting.itemSettings[id]; // 用户同意的消息模板id
            if (moIdState === 'accept') {
              wx.requestSubscribeMessage({
                tmplIds: ['LGpkXsQ396mr-xxxxxxxxxx6Ovd5w4v_eez0pYoQego'],
                success(res) {
                  wx.showToast({
                    title: '不会再拉起推送消息的授权,订阅成功',
                  })
                },
              })
            } else if (moIdState === 'reject') {
              console.log('拒绝了消息推送');
              wx.showToast({
                title: '拒绝了消息推送',
              });
              wx.openSetting({
                withSubscriptions: true,
              });
            } else if (moIdState === 'ban') {
              wx.showToast({
                title: '已被后台封禁',
              })
            }
          } else {
              wx.requestSubscribeMessage({
                tmplIds: ['LGpkXsQ396mr-xxxxxxxxxx6Ovd5w4v_eez0pYoQego'],
                success(res) {
                  wx.showToast({
                    title: '订阅成功',
                  })
                },
              })
          }
        } else {
          wx.openSetting({
            withSubscriptions: true,
          })
        }
      }
    })

到这里微信前端发起的一次性订阅就完成了。后端只发送消息推送就微信用户就可以收到订阅消息,后端代码实现将在以后发出来,谢谢阅读!~

最近做的一个排班的小程序,需要的可以用一用看看。不需要的就当帮我加一下热度啦,谢谢,^_^ !~

  • 11
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

neter.asia

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值