微信小程序开发之订阅消息

微信小程序开发之订阅消息

2023年7月2日发(作者:)

微信⼩程序开发之订阅消息微信⼩程序开发中我们常常可能会遇到这样的需求,⽤户执⾏某⼀操作后,需要在未来某⼀时刻给予⽤户反馈通知,⽐如在⼀些餐厅点餐后发送的取餐提醒,某些打卡应⽤的打卡提醒,等等。这些都必须在⼩程序外部给到⽤户有效的通知,所以实现此功能的⽅式只有⼀种——订阅消息。订阅消息 主要分为两步:订阅 和 发布。⼀、订阅⼩程序要发送消息,⾸先它得知道发送给谁,然后就是该什么时候发送。因此,订阅 是必须要有的操作,就好⽐公众号,你若想要某个公众号能在每次发布⽂章时你能收到推送,就必须关注该公众号才⾏。但是,和公众号不同的是,⼩程序只能实现 ⼀次性消息订阅 ⽽⾮永久,也就是说你订阅后消息只要发送后该订阅就失效了,以后若想要再次收到消息通知就必须再次订阅。订阅消息代码⼤致如下:tSubscribeMessage({ tmplIds: [''], // 需要订阅的消息模板的id的集合 success (res) { } // 接⼝调⽤成功的回调函数})那么tmplIds数组中的消息模板id在哪获取呢?⼆、发布订阅消息之后,⼩程序还需要根据订阅时提供的相关信息(⽤户ID等)来发布消息。上⾯提到的订阅操作是⽤户操作,体现在前端,也就是⼩程序端,⽽发布操作则体现在后端,也就是服务端,这时我们可以直接使⽤云开发来实现。1. 定义云函数我们可以定义个发布消息的云函数,代码⼤致如下:const cloud = require('wx-server-sdk') // 必须先安装({ env: C_CURRENT_ENV // 云环境ID}) = async (event, context) => { try { const result = await ({ touser: 'OPENID', // 接收者(⽤户)的 openid page: 'pages/index/index', // 点击模板卡⽚后的⼩程序跳转页⾯ lang: 'zh_CN', // 语⾔类型 data: {}, // 模板内容 templateId: 'TEMPLATE_ID', // 所需下发的订阅模板id miniprogramState: 'developer' // 跳转⼩程序类型,默认是正式版 }) return result } catch (err) { return err }}有⼏个地⽅可能需要注意:① 上述代码是云函数中的云调⽤,需要⽤到wx-server-sdk可以通过npm install --save wx-server-sdk@latest进⾏安装,注意必须安装在当前云函数所在⽂件⽬录下。例如:wx-server-sdk安装在其中② 需在

中配置

API 的权限{ "permissions": { "openapi": [ "" ] }}当然,⽂件也必须放在当前云函数所在⽂件⽬录下。③ 有关 API参数data的具体配置这是我最近开发的⼀款⼩程序⽤到的消息模板就以我开发的 ⽬标管理助⼿ ⼩程序为例,消息模板我⽤了4个字段,分别为上图的thing1、thing2、date3、thing4,所以对应的参数data如下:({ data: { thing1: { value: '坚持⼀个⽉上班不迟到' }, thing2: { value: '你的好友已确认见证' }, date3: { value: '2020-01-17 12:30:00' }, thing4: { value: '请尽快处理哦' } }, // 其他参数...});当然,上⾯的字段值⽂字只是⽰例,可以根据需要⾃由填写。2. 调⽤云函数定义好云函数之后当然还得调⽤云函数才⾏,就像我们声明⼀个函数后得去执⾏它才能⽣效⼀样。调⽤云函数的⽅式有两种:⼿动调⽤ 和 ⾃动调⽤。① ⼿动调⽤⼿动调⽤ 顾名思义就是需要⽤户⼿动触发云函数执⾏,如果把上⾯发送消息的云函数命名为sendMessage,那么部署好后我们就可以直接在⽤户订阅消息成功后调⽤它了:tSubscribeMessage({ tmplIds: [''], // 需要订阅的消息模板的id的集合 success (res) { // 接⼝调⽤成功的回调函数 nction({ // 调⽤云函数 // 云函数名称 name: 'sendMessage', // 传给云函数的参数 data: { openid: '' // ⽤户openid }, success: function(res) { (res) } }) }})然后云函数就可以获取到传过来的参数openid:// ... = async (event, context) => { try { const result = await ({ touser: , // 接收者(⽤户)的 openid // 其他参数... }) return result } catch (err) { return err }}云函数接收两个参数:event和context,⽽调⽤云函数时所传递的参数都保存在event对象中。另外,event对象还⾃带⼀个userInfo属性,⽽userInfo属性下保存有⼩程序的appId和⽤户的openId,因此你也可以直接通过的⽅式获取⽤户的openId:const result = await ({ touser: , // 接收者(⽤户)的 openid // 其他参数...})② ⾃动调⽤⾃动调⽤ 顾名思义就是可以由程序⾃动调⽤⽽⽆需⽤户⼿动触发,这就需要⽤到云函数中的 定时触发器 了,通过它可以让云函数按照某个特定的周期不断⾃动执⾏。a) 在中添加triggers字段{ // triggers 字段是触发器数组,⽬前仅⽀持⼀个触发器,即数组只能填写⼀个,不可添加多个 "triggers": [ { // name: 触发器的名字 "name": "myTrigger", // type: 触发器类型,⽬前仅⽀持 timer (即 定时触发器) "type": "timer", // config: 触发器配置,在定时触发器下,config 格式为 cron 表达式 "config": "0 0 2 1 * * *" } ]}此处代表在每⽉的1⽇的凌晨2点⾃动触发云函数,也就是发布订阅消息。b) 右击选择“上传触发器”右键选择上传触发器重点总结① 微信⼩程序中的订阅消息只能实现⼀次性订阅,⽽且必须通过⽤户⼿动触发订阅;② 消息发布是通过调⽤云函数实现的,有⼿动调⽤和⾃动调⽤两种⽅式;③ 云函数和定时触发器都必须上传之后才能使⽤。

发布者:admin,转转请注明出处:http://www.yc00.com/xiaochengxu/1688279340a112515.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信