zoukankan      html  css  js  c++  java
  • 小程序 订阅消息 wx.requestSubscribeMessage()

    前端通过wx.requestSubscribeMessage(Object object)调起客户端小程序订阅消息界面,返回用户订阅消息的操作结果。用户勾选订阅面板中“总是保持以上选择,不再询问”时,模板消息会被添加到用户的小程序设置页,通过wx.getSetting接口可以获取用户对相关模板消息的订阅状态。

    订阅消息:

    export default{
              data() {
                  return {
                            subscribeMes: true,
                  }
              }
    }
    
    methods:{
          talkOrAsk() {
          const that = this;
          if (compareVersion(global.globalData.SDKVersion, "2.8.2") >= 0) {
            wx.requestSubscribeMessage({
              tmplIds: ["tml8xm_ZUAVzUgepzU-2zyyy2DXkfZnwS04OcMbVNm4"],//需要订阅的消息模板的id的集合,一次调用最多可订阅3条消息
              // 消息模板id在[微信公众平台(mp.weixin.qq.com)-功能-订阅消息]中配置
              success(res) { // 接口调用成功的回调函数
                console.log(res,'compareVersion')
                if (
                  res["tml8xm_ZUAVzUgepzU-2zyyy2DXkfZnwS04OcMbVNm4"] == "accept"
                  // Object res   [TEMPLATE_ID]是动态的键,即模板id,值包括'accept'、'reject'、'ban'。
                  // 'accept'表示用户同意订阅该条id对应的模板消息,'reject'表示用户拒绝订阅该条id对应的模板消息,'ban'表示已被后台封禁。
                ) {
                  if (that.subscribeMes) {
                    wx.showToast({
                      title: "订阅成功!",
                      duration: 1500,
                      icon: "success",
                      success(data) {
                        that.subscribeMes = false;
                      }
                    });
                  }
                  mpvue.navigateTo({
                    url: `/pages/chat/main`
                  });
                } else {
                  mpvue.navigateTo({
                    url: `/pages/chat/main`
                  });
                }
              },
              fail(res) { // 接口调用失败的回调函数
                if (res.errCode === 20004) {
                  wx.showModal({
                    title: "温馨提示",
                    content: "您已拒绝授权,将无法在微信中收到回复通知!",
                    showCancel: false,
                    success: res => {
                      if (res.confirm) {
                        mpvue.navigateTo({
                          url: `/pages/chat/main`
                        });
                      }
                    }
                  });
                }
              }
            });
          } else {
            wx.showModal({
              title: "温馨提示",
              content: "您的微信版本过低,将无法在微信中收到回复通知!",
              showCancel: false,
              success: res => {
                if (res.confirm) {
                  mpvue.navigateTo({
                    url: `/pages/chat/main`
                  });
                }
              }
            });
          }
        },
    }

    兼容问题:

    版本号兼容(wx.getSystemInfo / wx.getSystemInfoSync 可以获取当前小程序运行的基本库的版本号  SDKVersion),

    function compareVersion(v1, v2) {
      v1 = v1.split('.')
      v2 = v2.split('.')
      const len = Math.max(v1.length, v2.length)
    
      while (v1.length < len) {
        v1.push('0')
      }
      while (v2.length < len) {
        v2.push('0')
      }
    
      for (let i = 0; i < len; i++) {
        const num1 = parseInt(v1[i])
        const num2 = parseInt(v2[i])
    
        if (num1 > num2) {
          return 1
        } else if (num1 < num2) {
          return -1
        }
      }
    
      return 0
    }
  • 相关阅读:
    BootstrapValidator 解决多属性被同时校验问题《转》
    SSRS 浮动表头设置
    ToString(string format)输出格式简述
    配置AutoMapper映射规则《转》
    IE浏览器上传图片预览兼容(IE 7 8 9 10 11)
    SQL : IN 和 Exists 的区别
    BitArray简单例子
    Rx.net 例子——(1)基础
    C# Pinvoke判断是UEFI模式还是BIOS模式
    wpf Route Event Code Snippet
  • 原文地址:https://www.cnblogs.com/lpp-11-15/p/13200421.html
Copyright © 2011-2022 走看看