Nodejs和uni-app实现微信小程序订阅消息功能

介绍:

消息能力是小程序能力中的重要组成部分,微信官方提供了订阅消息能力,以便实现开发者实现服务的闭环和更优的体验。可以支持在用户自主订阅后,推送消息到用户端(服务通知),用户点击查看详情可跳转至小程序的页面,实现服务的闭环,提高活跃度和用户粘性。

业务场景:

用户在微信小程序使用某个服务,比如购买、预约等服务,在用户预约成功后向该用户推送一条预约成功的消息提醒。

在这里插入图片描述

发送订阅消息步骤:

  • 开通消息订阅:开发者可以申请开通订阅消息能力,开启后开发者可以调用接口向用户推送消息;
  • 配置消息模板:申请生成消息模板ID,确定模板详情:标题、内容等;
  • 前端订阅消息:通过按钮或者支付回调向用户发起订阅消息的询问;
  • 后端进行推送:用户同意订阅后,后端请求微信消息推送接口携带模板ID、模板内容(可理解成数据字段)用户open_id、跳转地址等参数进行推送;
  • 用户收到消息:用户在服务通知中收到该模板消息的卡片,点击可转向小程序中的跳转地址,可传参。

一、开通消息订阅

  • 打开微信公众平台地址,扫码登录后台, 并找到订阅消息
  • 若您未开通消息订阅模板, 会先提示您去开通此功能.

在这里插入图片描述

二、配置消息模板

  • 登录微信公众平台之后,消息模板的配置入口在小程序管理后台中的基础功能 - 订阅消息里,你会看到下面这张图展示的内容:
  • 点击选用按钮,进入公共模板库中

在这里插入图片描述

  • 由于长期性订阅消息,目前仅向政务民生、医疗、交通、金融、教育等线下公共服务开放,后期将逐步支持到其他线下公共服务业务。仅就线下公共服务这一点,长期性订阅消息就和大部分开发者无缘了。 所以我们这里只能以使用一次性订阅消息为例。
  • 手动配置模板ID(若在公共模板库中没有找到合适的,可以申请添加新模板、审核通过后即可使用).

在这里插入图片描述

  • 根据自身业务需求,选择创建适合自己的模板
  • 点击选用模板,进入模板详情页
  • 填写模板参数,并提交审核

在这里插入图片描述

  • 配置完成后提交, 你就会在我的模板看到该条订阅消息相关信息.
  • 需等待微信官方审核通过后,方可使用。

注意:创建模板提交审核,尽量提前创建模板,避免审核失败。

在这里插入图片描述

  • 点击详情按钮进入模版详情页,可以看到我们配置的信息:
  • 下图的模板ID就是我们需要的。

在这里插入图片描述

三、前端订阅消息 前端 uni-app 代码实现

1、替换你的请求基础地址:

// 请求基础地址
const requestBaseUrl = 'YOUR_URL_ADDRESS'

2、替换你的模版Id:

// 模版id
const tmplId = 'your_template_id'

3、代码示例:

<template>
	<view style="display: flex;align-items: center;justify-content: center;height: 100vh;">
		<button @click="subscribe">点我唤起订阅面板</button>
	</view>
</template>
<script setup>
	import {
      ref } from 'vue'
	
	// 用户 openId
	const openId = ref(null)
	// 请求基础地址
	const requestBaseUrl = 'http://192.168.43.245:3000/api/weChatMp'

	// 发送订阅消息
	async function subscribe() {
     

		// 如果没有 openId 就代表未登录
		if (!openId.value) {
     
			await wechatLogin()
		}

		// 模版id
		const tmplId = 'GAcYabm1vG_YJwl75R_vXntgqe5q2Li3N-0XTCOEehE'

		// 接口文档地址:https://developers.weixin.qq.com/miniprogram/dev/api/open-api/subscribe-message/wx.requestSubscribeMessage.html
		uni.requestSubscribeMessage({
     
			tmplIds: [tmplId],
			success(res) {
     
				console.log('接口调用成功的回调函数', res)
				if (res[tmplId] == 'accept') {
      // 用户同意后
					// 发送请求给后端进行通知
					uni.request({
     
						url: `${
       requestBaseUrl}/sendSubscribeMsg`,
						method: 'POST',
						data: {
     
							touser: openId.value, // 接收者(用户)的 openid
							page: `/pages/index/index`, // 点击模板卡片后的跳转页面,仅限本小程序内的页面。支持带参数,(示例index?foo=bar)。该字段不填则模板无跳转
							template_id: tmplId, // 所需下发的订阅模板id
							data:
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值