【微信小程序开发(七)】订阅消息


订阅消息

在这里插入图片描述


一、小程序订阅消息逻辑处理

可以将其挂在APP上,使用起来会更加便捷

subscribeMessage: (val, callback) => {
    //需要订阅的消息模板,在微信公众平台手动配置获取模板ID
    let message = val; // 模板id
    //如果总是拒绝(subscriptionsSetting,2.10.1库才支持)
    // wx.setStorageSync("subType",1)
    if (versionCompare('2.10.1')) {
      wx.getSetting({
        withSubscriptions: true,//是否同时获取用户订阅消息的订阅状态,默认不获取
        success: (res) => {
          console.info("res",res)
          if (res.subscriptionsSetting && res.subscriptionsSetting.itemSettings &&
            res.subscriptionsSetting.itemSettings[message] == "reject") {
            //打开设置去设置
            openConfirm('检测到您没打开推送权限,是否去设置打开?');
          } else if (res.subscriptionsSetting && res.subscriptionsSetting.itemSettings &&
            res.subscriptionsSetting.itemSettings[message] == "accept") { // 已有授权过
            console.log('已有订阅授权过')
            wx.requestSubscribeMessage({
              tmplIds: message,
              success: (res) => {
                if (res[message] == 'accept') {
                  console.log("resrequestSubscribeMessage",res)
                  //用户允许
                 
                }
                callback()
              },
              fail: (res) => { console.log("res",res)
                  callback()
              },
            })
          } else {
            wx.requestSubscribeMessage({
              tmplIds: message,
              success: (res) => {
                if (res[message] == 'accept') {
                  console.log("resrequestSubscribeMessage",res)
                  //用户允许
                  
                }
                callback()
              },
              fail: (res) => { console.log("res",res) 
                callback()
              },
            })
          }
        }
      })
    } else if (versionCompare('2.4.4')) {
      wx.requestSubscribeMessage({
        tmplIds: message,
        success: (res) => {
          if (res[message] == 'accept') {
            //用户允许
            
          }
          callback()
        },
        fail: (res) => { console.info(res) 
          callback()
        },
      })
    }
    //打开设置
    function openConfirm(message) {
      wx.showModal({
        content: message,
        confirmText: "确认",
        cancelText: "取消",
        success: (res) => {
          //点击“确认”时打开设置页面
          if (res.confirm) {
            wx.openSetting({
              success: (res) => {
                console.log(res.authSetting)
              },
              fail: (error) => {
                console.log(error)
              }
            })
          } else {
            console.log('用户点击取消')
          }
        }
      });
    }
    //基础库版本比较
    function versionCompare(v) {
      const version = wx.getSystemInfoSync().SDKVersion
      if (compareVersion(version, v) >= 0) {
        return true
      } else {
        return false
      }
    }
    function compareVersion(v1, v2) {
      v1 = v1.split('.')
      v2 = v2.split('.')
      var len = Math.max(v1.length, v2.length)
  
      while (v1.length < len) {
        v1.push('0')
      }
      while (v2.length < len) {
        v2.push('0')
      }
  
      for (var i = 0; i < len; i++) {
        var num1 = parseInt(v1[i])
        var num2 = parseInt(v2[i])
  
        if (num1 > num2) {
          return 1
        } else if (num1 < num2) {
          return -1
        }
      }
      return 0
    }
  },

二、使用步骤

    app.subscribeMessage(['这里放模板ID'],()=>{

      // 订阅后的回调方法
    });

三、不订阅也能收到一次性模板消息?

用户点击一次就相当于订阅了一次,相当于你拥有了一次获取系统通知的门票,理论上用户多次点击就相当于订阅了多次,此时是会将这些订阅次数储存起来,如果服务器下发通知时就会消耗一次订阅次数(实际是这样的,文档没有说,需要确保每次下发前触发一次订阅交互);产品是可以接受的。不是bug.

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

左钦杨

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

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

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

打赏作者

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

抵扣说明:

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

余额充值