小程序订阅消息流程及案例

       没有接触的过小程序订阅的 估计和我一样 刚刚开始的时候 一脸懵逼 不知道从哪里下手 下面就一起来看下吧  小编刚开始做的是一个模板 都来因为需求变更 就多加了一个模板 下面是两个授权模板 这个要是看明白了 一个的就更简单了 

先看下官网的介绍吧 小程序订阅消息

然后看下订阅的截图 

 

代码:  第一次接触的 建议你多点击 打点断点 好好看看每一步是做什么的 这样的话 一遍就很清晰了 才能更好的吸收和理解 

appointmentChange() {
    let self = this
    //模板id
    const str_1 = 'AK5ITnaPus4k9ai58m981s1gVAEE7kEQ4g4Fnoq95kU'; 
    const str_2 = 'tpEJVwAJBn3I2isFSPIGUOfyHJjLnZWZoawZLJipXi0'; 
    wx.getSetting({
      withSubscriptions: true,
      success: (value)=>{
        //判断用户是否点击关闭不在询问
        if(value.subscriptionsSetting.mainSwitch == true){     
          let moIdState = value.subscriptionsSetting.itemSettings? value.subscriptionsSetting.itemSettings[str_1]:'';  // 用户同意的消息模板id
          let moIdState2 = value.subscriptionsSetting.itemSettings? value.subscriptionsSetting.itemSettings[str_2]:'';  // 用户同意的消息模板id
          if(moIdState === 'reject' && moIdState2 === 'reject'){   
            wx.showModal({
              title: '提示',
              content: '检测到您没打开消息推送权限,是否去授权',
              cancelText: '不授权',
              cancelColor: '#999',
              confirmText: '授权',
              confirmColor: '#f94218',
              success(res) {
                if (res.confirm) {
                  //调起客户端小程序设置界面,返回用户设置的操作结果。
                  wx.openSetting({
                    success (res) {
                      console.log(res,'用户的是否允许消息通知')
                      //调用已经授权通知的接口
                      wx.getSetting({
                        withSubscriptions: true,
                        success: (value2)=>{
                           //没有什么用处 多个的话 查看拒绝还是接受 
                          let childMoIdState2 = value2.subscriptionsSetting.itemSettings? value2.subscriptionsSetting.itemSettings[str_2]:'';   
                          if(childMoIdState2 === 'accept'){ 
                            // _this.timedPushMessages()
                          }
                        }
                      })  
                    }
                  })
                } else{
                  self.handelApotion()
                }
              }
            })
          }else{
            wx.requestSubscribeMessage({
              tmplIds: [str_1,str_2],
              success: (res) => {
                console.log("Ces",11)
                //调用已经授权通知的接口
                if (res[str_1] === 'accept' && res[str_2] === 'accept') {
                console.log("Ces",22)
                  self.setData({
                    code1: true,
                    code2: true
                  })
                } else {
                  // 如果其中一个拒绝了就只传一个
                  self.setData({
                    code1: res[str_1] === 'accept' ? true : false,
                    code2: res[str_2] === 'accept' ? true : false
                  })
                }
                // 其中一个有提醒就表示已授权提醒
                if (res[str_1] == 'accept' || res[str_2] === 'accept') {
                  self.setData({
                    switchStatus: true
                  })
                  self.timedPushMessages() // 如果同意过了,直接调用提醒接口
                } else {
                  console.log("Ces",44)
                  self.setData({
                    switchStatus: false
                  })
                }
              },
              fail: (value) => {
                console.log(value)
              },
              complete:()=>{
                self.handelApotion()
              }
            })
            
          }
        }else{
          
          wx.requestSubscribeMessage({
            tmplIds: [str_1,str_2],
            success: (res) => {
              console.log(res, '用户的是否允许消息通知')
              //调用已经授权通知的接口
              if (res[str_1] === 'accept' && res[str_2] === 'accept') {
                self.setData({
                  code1: true,
                  code2: true
                })
              } else {
                // 如果其中一个拒绝了就只传一个
                self.setData({
                  code1: res[str_1] === 'accept' ? true : false,
                  code2: res[str_2] === 'accept' ? true : false
                })
              }
              // 其中一个有提醒就表示已授权提醒
              if (res[str_1] == 'accept' || res[str_2] === 'accept') {
                self.setData({
                  switchStatus: true
                })
                self.timedPushMessages() // 如果同意过了,直接调用提醒接口

              } else {
                self.setData({
                  switchStatus: false
                })
              }
            },
            fail: (value) => {
              console.log(value)
            },
            complete:()=>{
               //继续走下面的逻辑
              self.handelApotion()
            }
          })
        }      
      }
    })
  },

Guess you like

Origin blog.csdn.net/xy19950125/article/details/121145700