微信小程序服务通知(订阅消息)定时推送消息功能

首先先说项目需求:向预约参观的用户提前一天晚上8点推送消息。小程序端主要用到的API我是小程序用到的API。以及服务端用到的API我是服务端用到的API

1. 开通订阅消息功能

(1)、 首先需要在小程序管理后台开通订阅消息功能。没开通前如下图所示:
开通订阅消息
(2)、开通之后可根据自己的需求选择适合的公共模板。模板里的标题还有常见关键字不能修改。注意:公共模板是根据小程序的服务类目展示的。如下图所示:
在这里插入图片描述

2. 小程序端开发阶段

小程序端需要调起客户端订阅页面,并返回用户的操作结果。这部分比较简单,代码如下:

在这里插入图片描述
到这里,已经可以在小程序端查看效果了,需要注意的是,截止这篇文章发布时,订阅消息弹窗已经默认不推送并且总是保持以上选择。
在这里插入图片描述

3. 向服务端发送推送请求

小程序端订阅完成之后,需要向服务端发送请求,这样服务端才能知道什么时候去发请求,因为推送消息是服务端发。并且有些参数需要携带给服务端(例如:openid),消息模板里可能需要动态内容。
在这里插入图片描述
到这里,前端的部分就结束了,接下来就是后端同学的工作了,后端我不太懂,可以看小程序的官方文档拼接一个JSON就行了。JSON大致内容如下:

在这里插入图片描述

这里全部完成的话,消息已经可以实时推送至用户了,但是我标题写的是定时发送,例如前一天晚上,或者延后10小时推送,那么就让后端同学将收到的发送请求先存到redis队列,再用定时线程触发就完事了.

以下仅供参考:
在这里插入图片描述

### Java 后端实现向微信小程序推送订阅消息 #### 准备工作 为了能够顺利地完成Java后端向微信小程序推送订阅消息的任务,需先准备好以下几项: - **微信公众平台账号**:确保已拥有并登录了一个有效的微信公众平台账号,并创建了相应的小程序项目[^3]。 - **获取必要的参数**: - `AppID` 和 `AppSecret`: 这些信息可以在微信公众平台上找到,用于后续API调用的身份验证。 - `OpenID`: 用户唯一标识符,在用户授权给小程序之后可以得到该用户的openid。 - **配置服务器环境** - 设置好开发者服务器的相关URL地址以及Token和EncodingAESKey等安全设置。这些配置将在接收来自微信消息时起到校验作用[^2]。 #### 获取 Access Token Access Token 是调用微信开放接口的前提条件之一,它是一个临时票据,有效期为7200秒(即两小时),因此建议定时刷新以保持有效性。可以通过如下HTTP GET请求来获得此令牌: ```http GET https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET HTTP/1.1 Host: api.weixin.qq.com ``` 响应数据通常会返回JSON格式的内容,其中包含了所需的access_token字段值[^1]。 #### 发送订阅消息 当获得了合法的access_token之后,则可以根据实际需求构建具体的订阅消息体并向指定的目标用户发送通知。以下是简化后的POST请求示例代码片段: ```java import java.io.OutputStream; import javax.net.ssl.HttpsURLConnection; public class WeChatPushService { private static final String PUSH_URL = "https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token="; public void sendSubscribeMessage(String accessToken, String openId, String templateId){ try { // 构建完整的url路径 URL url = new URL(PUSH_URL + accessToken); HttpsURLConnection conn = (HttpsURLConnection) url.openConnection(); conn.setRequestMethod("POST"); conn.setDoOutput(true); // 创建json对象作为post body的数据结构 JSONObject jsonBody = new JSONObject(); jsonBody.put("touser", openId); // 接收者(openid) jsonBody.put("template_id", templateId); // 模板ID // 添加其他必要参数... OutputStream os = conn.getOutputStream(); byte[] input = jsonBody.toString().getBytes("utf-8"); os.write(input, 0, input.length); int responseCode = conn.getResponseCode(); System.out.println("\nSending 'POST' request to URL : " + url); System.out.println("Response Code : " + responseCode); BufferedReader in = new BufferedReader( new InputStreamReader(conn.getInputStream())); String output; StringBuffer response = new StringBuffer(); while ((output = in.readLine()) != null) { response.append(output); } in.close(); // 打印结果 System.out.println(response.toString()); } catch (Exception e) { e.printStackTrace(); } } } ``` 上述代码展示了如何利用HTTPS POST方法提交带有特定格式化内容的消息微信服务器上。需要注意的是,这里仅提供了一种基本框架;具体应用中可能还需要考虑更多细节处理,比如错误重试机制、日志记录等功能扩展。
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值