天天看点

微信小程序订阅消息:用云服务编写订阅消息超详细描述

一.什么是订阅消息

微信里有一个服务通知,我们经常收到的各种消息,就是通过订阅消息进行发送的,订阅消息分为二种:

微信小程序订阅消息:用云服务编写订阅消息超详细描述

进一步了解跳转到官方文档中去学习吧官方解释

二.在小程序中使用订阅消息

业务:用户点击按钮,我们返回用户如下信息:

微信小程序订阅消息:用云服务编写订阅消息超详细描述

2.1第一步:创建模板

1.进入到小程序官网首页,点击订阅消息

微信小程序订阅消息:用云服务编写订阅消息超详细描述

公共模板>任务模板>选择红框框里的哪一个>选用

微信小程序订阅消息:用云服务编写订阅消息超详细描述

选择参数,下面的场景说明也要填写,然后提交

微信小程序订阅消息:用云服务编写订阅消息超详细描述

注意模板ID是一个很重要的参数,点击详情

微信小程序订阅消息:用云服务编写订阅消息超详细描述

进行详情页面,记住thing1和thing2参数【模板不一样参数名也不一样】

微信小程序订阅消息:用云服务编写订阅消息超详细描述

2.2 第二步:创建云服务

由于我已经创建过云服务的环境了,这里可能有点不一样但是,大概过程差不多

进行微信小程序开发工具里>云开发

微信小程序订阅消息:用云服务编写订阅消息超详细描述

编写环境名称,和支付方式

微信小程序订阅消息:用云服务编写订阅消息超详细描述

这里注意一下按量收费,我使用的是预付费,用的免费套餐,但是免费套餐现在一天可访问人数为500有点坑:

微信小程序订阅消息:用云服务编写订阅消息超详细描述
微信小程序订阅消息:用云服务编写订阅消息超详细描述

找到自己的环境ID

微信小程序订阅消息:用云服务编写订阅消息超详细描述

2.3 第三步:云服务项目配置

第一个app.js中进行配置

//云数据
wx.cloud.init({
  env:"你的环境ID"
})
           
微信小程序订阅消息:用云服务编写订阅消息超详细描述

然后创建红框框里的三个文件

微信小程序订阅消息:用云服务编写订阅消息超详细描述

第一个文件创建方式为,箭头指向的文件夹,点击创建文件夹名为cloud

微信小程序订阅消息:用云服务编写订阅消息超详细描述

另外二个创建方式如下:文件名分别对应:getopenid,sendmessage

微信小程序订阅消息:用云服务编写订阅消息超详细描述

getopenid里面关心红框框里的即可:

微信小程序订阅消息:用云服务编写订阅消息超详细描述

,这里的DYNAMIC_CURRENT_ENV其实就是环境id只是动态的获取环境Id

微信小程序订阅消息:用云服务编写订阅消息超详细描述

getopenid文件就是获取openid,这个openid可以理解为用户家的地址,我要给用户发消息肯定要知道该用户家在哪里吧

微信小程序订阅消息:用云服务编写订阅消息超详细描述

index.js内容如下:

// 云函数入口文件
const cloud = require('wx-server-sdk')

cloud.init({
  env: cloud.DYNAMIC_CURRENT_ENV
})

// 云函数入口函数
exports.main = async (event, context) => {
  const wxContext = cloud.getWXContext()

  return {
    event,
    openid: wxContext.OPENID,
    appid: wxContext.APPID,
    unionid: wxContext.UNIONID,
  }
}
           
微信小程序订阅消息:用云服务编写订阅消息超详细描述

sendmessage里,主要关心红框框里的内容:

微信小程序订阅消息:用云服务编写订阅消息超详细描述
// 云函数入口文件
const cloud = require('wx-server-sdk')

cloud.init({
  env: cloud.DYNAMIC_CURRENT_ENV
})

// 云函数入口函数
exports.main = async (event, context) => {
  try{
    let  tmplId='模板ID'
    let index='pages/index/index'
    const result = await cloud.openapi.subscribeMessage.send({
       touser: event.openId,
       page: index,
       data: {
          thing1: {
            value:event.thing1
        },
        thing2: {
          value:event.thing2
        }
      },
      templateId: 模板ID
    })
  return result
  }catch(err){
    console.log(err)
      return err
  }

}
           
微信小程序订阅消息:用云服务编写订阅消息超详细描述
微信小程序订阅消息:用云服务编写订阅消息超详细描述

里面的参数一定要填对!

上面的配置完了就上传到云服务中去!

微信小程序订阅消息:用云服务编写订阅消息超详细描述

部署完之后就是通过云服务进行查看是否上传成功!

微信小程序订阅消息:用云服务编写订阅消息超详细描述

2.3 第三步:项目使用订阅消息

在utils中创建一个messagepush.js文件

微信小程序订阅消息:用云服务编写订阅消息超详细描述

这里的send就是用来发送消息的函数,实现方式就三步

  • 进行授权
  • 获取openid
  • 进行发送

具体操作看源码,解释查找官方文档:

  • 详见小程序端消息订阅接口wx.requestSubscribeMessage
  • 详见服务端消息发送接口 subscribeMessage.send
function send(thing1,thing2){
  //【1】进行授权
  let  tmplId='Xl-JeelQZqmAWcUy9VlyDc7eWy2HoPTdenK4pbr1V4w'
  wx.requestSubscribeMessage({
    tmplIds: [tmplId],
    success (res) { 
      console.log('授权成功',res)
      //【2】获取openid
      wx.cloud.callFunction({
        name:'getopenid'
      }).then(res=>{
        //【3】进行发送
        wx.cloud.callFunction({
          name:'sendmessage',
          data:{
            openId:res.result.openid,
            thing1:thing1,
            thing2:thing2
          }
        }).then(res=>{
        console.log('发送成功',res)
        }).catch(res=>{
        console.log('发送失败',res)
        }) 
      }).catch(res=>{
        console.log("获取失败",res)
      })
    },fail(res){
      console.log('授权失败',res)
    }
  })

}


module.exports = {
  send: send
}
           

小程序中创建一个buttion的按钮:

在点击事件中,调用send方法进行发送消息即可

微信小程序订阅消息:用云服务编写订阅消息超详细描述
微信小程序订阅消息:用云服务编写订阅消息超详细描述
微信小程序订阅消息:用云服务编写订阅消息超详细描述

最后运行效果:

微信小程序订阅消息:用云服务编写订阅消息超详细描述

继续阅读