微信小程序接收消息通知的方法及注意事项
微信小程序接收消息通知的方法有以下几种:统一服务消息、订阅消息(一次性订阅消息)、订阅消息(长期性订阅消息)和通过公众号发送模板消息。统一服务消息要求用户需要对小程序中的某个组件进行点击,获得消息通知机会;订阅消息(一次性订阅消息)要求用户打开小程序时,需同意授权小程序发送一次性订阅消息给用户;订阅消息(长期性订阅消息)要求用户打开小程序时,需同意授权小程序发送长期订阅消息给用户,可多次发送消息给用户;通过公众号发送模板消息需要公众号授权给第三方平台,用户关注公众号后,需要有个H5页面,让其授权,获取openID、unionID,通过公众号用户的unionID,关联小程序用户 。
随着移动互联网的发展,微信小程序已经成为了人们日常生活中不可或缺的一部分,小程序不仅提供了丰富的功能和服务,还能为用户带来便捷的使用体验,对于开发者来说,如何让小程序能够及时接收到用户的消息通知,以便第一时间为用户提供服务和解决问题,是一个值得关注的问题,本文将详细介绍如何在微信小程序中接收消息通知,以及在实际开发过程中需要注意的事项。
微信小程序接收消息通知的方法
1、使用云开发的云函数
微信小程序提供了云开发功能,开发者可以在云环境中部署和管理代码,通过云函数,我们可以在小程序接收到消息时自动触发执行相应的操作,具体步骤如下:
(1)开通云开发功能:在微信公众平台上开通云开发功能,获取AppID和密钥。
(2)创建云函数:在微信开发者工具中创建云函数,编写接收消息通知的逻辑。
// 云函数入口文件 const cloud = require('wx-server-sdk') cloud.init() // 云函数入口函数 exports.main = async (event, context) => { const wxContext = cloud.getWXContext() console.log('收到消息:', event) // 在此处编写接收消息通知的逻辑 }
(3)设置云函数触发条件:在微信公众平台上为云函数配置触发条件,例如接收到文本消息、图片消息等。
2、使用小程序的订阅消息功能
除了使用云函数外,我们还可以使用小程序的订阅消息功能来实现消息通知,订阅消息可以让用户在小程序内接收到特定类型的消息,而无需用户进行操作,具体步骤如下:
(1)登录微信公众平台,进入小程序管理后台。
(2)在“设置”>“公众号设置”>“功能设置”中,开启“订阅消息”功能。
(3)在“设置”>“开发者设置”>“服务器配置”中,添加服务器地址、Token等信息。
(4)编写发送订阅消息的接口和处理用户点击消息的事件:
// 发送订阅消息接口 function sendSubscribeMessage(openid, templateId, page, formId) { return new Promise((resolve, reject) => { wx.request({ url: 'https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=ACCESS_TOKEN', method: 'POST', data: { touser: openid, template_id: templateId, page: page, form_id: formId }, success(res) { resolve(res) }, fail(err) { reject(err) } }) }) }
// 处理用户点击订阅消息的事件 Page({ onLoad: function (options) { this.formId = options.formId; // 表单提交场景下,需要携带formId参数给后端服务器校验签名使用,此处为了简化示例没有展示具体的校验过程,实际项目中请根据需求自行处理。 }, // 当用户点击订阅消息时触发该方法,可以在这里处理用户的点击事件并返回模板数据给后端服务器生成订阅消息,templateData即为后端服务器返回的数据,templateData格式见下方说明,如果不需要处理用户点击事件,可以不写该方法,当用户取消订阅时也同样会触发该方法,注意不要在该方法中执行耗时操作或者调用网络请求库,否则可能导致订阅消息无法正常推送,同时也不要在该方法中直接返回任何内容,因为这样会导致订阅消息无法正常显示出来,建议在该方法中直接调用wx.request()方法发起请求并获取到后端服务器返回的模板数据后再返回给小程序前端进行渲染,templateMsg字段为空时表示用户取消了订阅,templateMsg字段非空时表示用户成功订阅了消息提醒,templateData字段为空时表示当前页面没有模板消息可展示,templateData字段非空时表示当前页面有模板消息可供展示,templateData中的data字段为空时表示该模板没有自定义数据需要传递给后端服务器,templateData中的data字段非空时表示需要传递给后端服务器的数据已经封装好并存储在data字段对应的JSON字符串里了,templateData中的first和last字段表示订阅消息的展现位置,其中first表示是否是第一次订阅,即首次打开订阅消息列表页时的位置;last表示是否是最后一次订阅,即最后一条订阅消息的位置;none表示不是首次或最后一条订阅消息;分别对应不同的展现位置,其他字段详见下方说明,templateData字段的具体格式请参考官方文档:https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_webpage_material.html#wechat_webpage_material_templatemsgs_subscribed_notice,onShow为自定义事件名,用于在模板消息被展示时通知后端服务器更新用户的模板消息列表缓存,onHide为自定义事件名,用于在模板消息被隐藏时通知后端服务器更新用户的模板消息列表缓存,onUnsubscribe为自定义事件名,用于在用户取消订阅时通知后端服务器更新用户的模板消息列表缓存,onFail为自定义事件名,用于在模板消息发送失败时报错并通知后端服务器更新用户的模板消息列表缓存,注意以上四个自定义事件均需按照上述格式定义才能正确触发相关方法,另外还需要根据实际情况修改模板ID、页面路径等参数值以匹配自己的小程序业务需求,最后别忘了在app.js中引入模板库组件并注册到页面实例上以便在页面中使用该组件渲染模板消息列表:wx.component({ name: 'my-template' })
与本文内容相关的知识文章: