微信小程序开发订阅消息
小程序开发
浏览:1076 次

在微信小程序的开发中,我们可能经常会遇到在用户执行操作后,需要在未来某个时间向用户发出反馈通知的情况,例如在一些餐厅点餐后发送的取餐提醒、一些打卡app中的打卡提醒等,所以只有一种方法可以实现这个功能&订阅消息。
订阅消息有两个主要步骤:订阅和发布。
1、 订阅
要发送消息,小程序必须首先知道要发送给谁,然后知道何时发送。因此,订阅是一项必要的操作,就像公众号一样。如果你想让公众号在每次发表文章时都能收到推送,你必须关注公众号。
然而,与公众号不同的是,小程序只能实现一次性消息订阅,而不是永久消息订阅,这意味着订阅后消息一旦发送,订阅将失效。如果您希望以后再次收到消息通知,则必须再次订阅。
订阅消息代码大致如下:
wx.requestSubscribeMessage(请求订阅消息)({
TmplIds:[“”],//要订阅的消息模板ID的集合
成功(res){}//接口成功调用回调函数
})
在哪里可以获取tmplIds数组中的消息模板ID?
首先,我们需要自己添加配置消息模板,可以在[微信公众平台()-功能-订阅消息]中进行配置。配置消息模板后,我们可以获得其模板ID。
有关订阅消息的更多详细信息,可以直接在官方微信文档-小程序()中查看。
2、 发布
订阅消息后,小程序还需要根据订阅时提供的相关信息(用户ID等)发布消息。
上面提到的订阅操作是一种用户操作,体现在前端即小程序端,而发布操作则体现在后端即服务器端。此时,我们可以直接使用云开发来实现它。
1.定义云功能
我们可以定义一个发布消息的云函数。代码大致如下:
const cloud=require('wx server sdk')//必须首先安装wx server sdk
云.init({
env:云。DYNAMIC_ CURRENT_ ENV//云环境ID
})
出口。main=异步(事件、上下文)=>{
尝试{
const结果=等待cloud.openapi.subscribeMessage.send({
Touser:“OPENID”,//接收方(用户)的OPENID

页面:“pages/index/index”,//单击模板卡后面的小程序跳转到页面
lang:'zh_ CN',//语言类型
数据:{},//模板内容
templateId:'TEMPLATE_ID',//要发布的订阅模板ID
MiniprogramState:“developer”//跳转到小程序类型。默认为官方版本
})
返回结果
}捕获(错误){
返回错误
}
}
具体参数配置可以直接在微信官方文档-小程序()中查看。
有几点可能需要注意:
① 上面的代码是cloud函数中的一个云调用,它需要wx服务器sdk
您可以通过npm安装进行保存wx-server-sdk@latest将其安装在当前云函数的文件目录中。例如:
其中安装了wx服务器sdk
有关云呼叫的更多详细信息,请参见官方微信文档小程序()
② 在config中,在发送API的json权限中配置subscribeMessage
{
“权限”:{
“openapi”:[
“templateMessage.send”
]
}
}
当然,配置。json文件也必须放在当前云函数的文件目录中。

③ 关于subscribeMessage发送API参数数据的特定配置
这是我最近开发的一个小程序使用的消息模板
以我开发的目标管理助手小程序为例,我在消息模板中使用了四个字段,即上图中的thing1、thing2、date3和thing4,因此对应的参数数据如下:
云.openapi.subscribeMessage.send({
数据:{
事情1:{
价值观:“坚持工作一个月不迟到”
},
事情2:{
值:“您的朋友已确认证人”
},
日期3:{
值:“2020-01-17 12:30:00”
},
事情4:{
值:“请尽快处理”
}
},
//更多参数
});
当然,上面的字段值文本只是一个示例,可以根据需要自由填写。
2.调用云功能
定义云函数后,必须调用云函数,就像必须执行函数才能生效一样。
有两种方法可以调用云函数:手动和自动。
① 手动呼叫
顾名思义,手动调用要求用户手动触发云函数的执行。如果发送上述消息的云函数是name