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

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

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

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,
          })
        }
      }
    })

到这里微信前端发起的一次性订阅就完成了。后端服务只要发送消息推送就微信用户就可以收到订阅消息,后端代码实现可以 【微信小程序,用户订阅消息,后端服务发送订阅消息-CSDN博客】

结尾:样例小程序二维码,自己做的一个免费好用的排班小程序

猜你喜欢

转载自blog.csdn.net/neterrrr/article/details/142097023