uni-app.11.开发微信小程序实现消息订阅(代码片段)

潮汐先生 潮汐先生     2022-12-04     388

关键词:

开发微信小程序实现消息订阅

使用场景

在我们开发的小程序中司机首次登录需要先认证从业资质和车辆。司机在小程序端提交资料后,后台需要审核相关资料。审核结束后需要向司机推送相关的审核结果,这里就需要实现微信小程序的消息订阅

订阅消息

订阅消息包括两种:一次性订阅消息长期订阅消息

一次性订阅消息

一次性订阅消息用于解决用户使用小程序后,后续服务环节的通知问题。用户自主订阅后,开发者可不限时间地下发一条对应的服务消息;每条消息可单独订阅或退订。

长期订阅消息

一次性订阅消息可满足小程序的大部分服务场景需求,但线下公共服务领域存在一次性订阅无法满足的场景,如航班延误,需根据航班实时动态来多次发送消息提醒。为便于服务,我们提供了长期性订阅消息,用户订阅一次后,开发者可长期下发多条消息。

目前长期性订阅消息仅向政务民生、医疗、交通、金融、教育等线下公共服务开放,后期将逐步支持到其他线下公共服务业务。

实现步骤

1.获取模板ID

在微信公众平台手动配置获取模板 ID:登录https://mp.weixin.qq.com 获取模板,如果没有合适的模板,可以申请添加新模板,审核通过后可使用。

我们可以通过关键字搜索找到符合我们使用场景的模板,点击选用即可

如上图所示,每个应用最多同时只能使用50个模板。上面我们也说了可以自定义模板,待系统审核通过后才可以使用,自定义模板的按钮在公共模板库的最后一页(就是这么神奇O(∩_∩)O哈哈~)

2.uni.requestSubscribeMessage

我们的小程序是使用uni-app开发的,uni-app官方也给我们提供了相应的api即uni.requestSubscribeMessage,具体的介绍如下图

需要注意的是这个需要用户的点击行为才能触发,而且是一次性订阅消息,所以需要在用户指定的需要接收订阅消息的页面由用户的点击操作来触发。

在本小程序中,用户的从业资质认证车辆认证页面都需要订阅审核消息,而且在后台审核不通过后重新提交认证资料后仍需要订阅下一次的审核消息,所以我们采取的策略是在用户提交认证资料之前先订阅消息,然后再保存数据

saveVehicleData: function() 
    var checkRes = graceChecker.check(_self.formData, rule);
    if(checkRes)
        uni.requestSubscribeMessage(
            provider: 'weixin',
            tmplIds: ['您的模板ID'],
            success: function(res) 
            console.log(JSON.stringify(res));
            ,
            fail: function() 

            ,
            complete: function() 
                // 保存认证信息数据
                _self.submitVehicleAuth();
            
        );
     else 
        _self.message = graceChecker.error;
        _self.$refs.toast.show();
        return;
    
,

3.subscribeMessage.send

通过官方的api我们可以看到该接口需要以HTTPS调用,对于该接口的使用我们先定义一个方法

public static JSONObject sendSubscribeMessage(String accessToken, SubscribeMessageVO subscribeMessageVO) 
        String requestUrl = " https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=" + accessToken;
        JSONObject data = JSONObject.parseObject(JSONObject.toJSONString(subscribeMessageVO));
        return JSONObject.parseObject(HttpClientUtils.httpClientPostJSON(requestUrl,
                data));
    

至于参数accessToken的获取,我们可以看微信小程序的官方文档,如下图

对于accessToken的获取,我们定义如下方法

public static String getAccessToken(RedisUtils redisUtils, String appId, String appSecret) 
		return Optional.ofNullable(redisUtils.get("accessToken_" + appId)).orElseGet(() -> 
				String requestUrl = "https://api.weixin.qq" +
                    ".com/cgi-bin/token?grant_type=client_credential&appid=" + appId + "&secret=" + appSecret;
				JSONObject jsonObject = JSONObject.parseObject(HttpClientUtils.httpClientGet(requestUrl));
				if (jsonObject.getIntValue("errcode") != 0) 
						// 获取token失败
            log.error("获取token失败 errcode: errmsg:", jsonObject.getIntValue("errcode"),jsonObject.getString("errmsg"));
            throw new RuntimeException(jsonObject.getString("errmsg"));
        
        redisUtils.set("accessToken_" + appId, jsonObject.getString("access_token"),jsonObject.getLongValue("expires_in"));
            return jsonObject.getString("access_token");
        ).toString();

这里我们首先从redis里面获取accessToken,redis里面没有我们再调用接口获取,将获取到的accessToken保存到redis中

最后我们就可以在需要下发订阅消息的方法中直接调用上面定义的方法sendSubscribeMessage即可。

4.测试

我们在小程序的车辆认证页面订阅了审核消息,当提交认证资料的时候会弹出订阅消息提示框,如下图我们选择“允许”

之后我们在后台的车辆审核里面点击审核不通过,如下图

随后我们在微信中就会收到系统推送的订阅消息,如下

uni-app开发微信小程序实现消息订阅就到这里了,老铁们给个赞啊(#.#)

开发微信小程序要下载git吗

参考技术A你好,开发微信小程序不需要下载git。微信小程序管理后台只有一个管理员可以登录,可以同时绑定10个开发者和20个体验者,开发者们可以通过版本管理工具(比如SVN或者Git等)共同开发,但是向微信后台提交代码只... 查看详情

微信小程序怎么实现消息推送

微信小程序怎么实现消息推送需要用户在微信小程序中订阅。就是当用户在小程序内点击特定按钮后会弹出申请订阅弹窗,同意后小程序才会在后续任意时间给该用户推送服务通知。但是微信订阅消息有如下几个特点:1、选择... 查看详情

django实战开发微信小程序项目教程

资源目录: 下载地址:百度网盘下载 查看详情

开发微信小程序的时候都要注意啥问题

1、小程序名称可以由中文、数字、英文。长度在3-20个字符之间,一个中文字等于2个字符。2、小程序名称不得与公众平台已有的订阅号、服务号重复。如提示重名,请更换名称进行设置。3、小程序名称在帐号信息设置时完成,... 查看详情

怎么使用sublime来开发微信小程序怎么预览

...方,最终运行结果还是得看官方的IDE,所以使用sublime开发微信小程序的流程是这样的:创建小程序项目,直接将整个项目文件夹拖入sublime,即可在sublime里面进行编辑,而官方的IDE就只是单纯用来调试用的!!!让代码提示加速... 查看详情

uni-app开发微信小程序使用微信小程序的插件(代码片段)

假如使用uni-app开发微信小程序需要用到官方插件----OCR插件,插件地址如下:OCR插件申请方式见插件地址介绍。本文主要记录调用方式1.在manifest.json的“mp-weixin”里添加"plugins":"ocr-plugin":"version":"3.0.1",... 查看详情

开发微信小程序需要哪些技术

开发微信小程序需要用到以下技术:1、wxml,小程序常用语言为wxml,wxml是微信但是你熟悉wxml之后会发现其实它的编程理念和HTML的网页编程比较类似。2、wxss,wxss更趋向于CSS,wxss,其实主要的实现思想理念也和网页的开发技术差... 查看详情

轻松开发微信小程序实现用户增删改查功能(代码片段)

文章目录前言创建微信小程序项目创建项目目录结构编写首页页面编写编辑页面实现增删改查功能展示最终效果总结写在最后前言上一篇博客中我们学习了什么是小程序以及开发一个小程序的具体步骤。在本篇博客中,我们... 查看详情

uniapp开发微信小程序使用腾讯地图获取具体位置信息(代码片段)

先解释一下为什么要用腾讯地图实现自动定位?uniapp可以通过uni.getLocation获取用户定位,但是获取到的定位没有中文地址,所以我们需要通过第三方SDK例如高德地图或者腾讯地图来获取中文定位信息。之所以使用腾讯... 查看详情

uniapp开发微信小程序使用腾讯地图获取具体位置信息(代码片段)

先解释一下为什么要用腾讯地图实现自动定位?uniapp可以通过uni.getLocation获取用户定位,但是获取到的定位没有中文地址,所以我们需要通过第三方SDK例如高德地图或者腾讯地图来获取中文定位信息。之所以使用腾讯... 查看详情

go开发微信小程序有哪些不错的第三方sdk

...MySQL、Redis和开源工具等等相关内容。最近准备用Go语言开发微信小程序,发现会调用很多微信小程序的服务端接口,并且还需要自己封装。于是想着去GitHub上看看,是否有第三方现成的SDK直接拿来使用,结果发现两个非常不错的... 查看详情

微信小程序订阅消息调研

...收消息的权利交给用户呢?  众所周知,根据微信小程序模板消息规则,商家则可在不经用户同意的情况下,在限定时间内向用户发起限定条数的消息。比如原来使用模板消息支付完成后商家可在7天内发送3条模板消息... 查看详情

c#开发微信小程序系列接入服务器验证token

目前官方小程序验证只有PHP的,暂未发现C#版本的 ,本人研究后贴出来大家分享下。有不懂的请留言,本人会尽快回复的:  废话不多说直接上代码:   ///<summary>///C#微信小程序接入author:huochengyan///</summ... 查看详情

微信小程序用啥语言开发微信小程序用啥语言开发

参考技术A1、微信小程序开发所需要的语言比较特别,首先介绍一下需要使用到的文件类型大致分为:WXML(WeiXinMarkLanguage微信标记语言)、WXSS(WeiXinStyleSheet微信样式表)、JS(JavaScript小程序的主体);2、首先是WXML,它与Android... 查看详情

uniapp开发微信小程序富文本编辑器(样式仿腾讯文档)

参考技术A照着腾讯文档小程序开发了微信小程序富文本编辑器组件,这几天做个整理,如有这个需求可以前往腾讯文档小程序操作看看实际效果。毕竟参照的是微信自家小程序,无法做到百分百效果,只能按现有开放api尽可能... 查看详情

如何开发微信小程序数据库

这个对开发技能的要求较高,如果懂得开发的话,可以根据自己的需求进行开发;也可以通过专业的开发公司进行开发,这个主要要看怎么选择,比如:一种是定制开发,不过这种开发价格较高,几万甚至十几万不等,还有就是... 查看详情

怎样用php开发微信小程序的后端?

可以去看小程序的开发文档,结合你公司的功能进行开发。追问具体看文档的哪部分?追答。。。你看符合你功能的那部分开发文档啊,,,你是开发?追问后台应该看哪部分?参考技术A用php写API接口给小程序使用追问能详细说一... 查看详情

java开发微信小程序的框架,附面试答案

架构原则:“4要1不要”如果你是一个架构师,你首先要勾勒出一个轮廓,想一想如何构建一个超大流量并发读写、高性能,以及高可用的系统,这其中有哪些要素需要考虑?我把这些要素总结为“4要1不... 查看详情