【前端】微信小程序推送订阅消息
业务需要,商城类小程序,要在用户下单支付成功后,推送消息通知用户。首先想到的是小程序模板消息,微信公众号模板消息已经用过很多了,小程序模板消息确是第一次做。
前端框架:uniapp
1. 小程序模板消息
参考https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/template-message.html
小程序模板消息在2020年已经改版了,现在推送模板消息都会推送到服务通知里面,如下图
但是其是指还是模板消息。
2. 创建模板消息
登录微信小程序管理平台,找到模板消息,根据微信小程序的类型,选择自己需要的模板消息,并设置所需的字段
模板消息创建成功后就可以开始使用了。
3. 用户订阅模板消息
这是小程序模板消息和公众号模板消息另一个不一样的地方,公众号模板消息可以直接推送给用户,小程序确需要用户订阅后才能推送成功。
我们需要用到wx.requestSubscribeMessage接口
在小程序中这样调用:
wx.requestSubscribeMessage({ tmplIds: [''], success (res) { }})
其中tmplIds就需要传我们在第2 步创建好的模板ID。
注意:
这个方法不是随便调用的,从2.8.2版本开始,必须要用户点击或者支付回调后才能正常调起这个方法
我是在支付成功后调用该方法:
//订阅消息 onMessageAuth() { const app = this; var isAccept = app.onMpAppSetting(); if (!isAccept) { //未授权 wx.requestSubscribeMessage({ tmplIds:[app.orderTmpId], success(res){ // console.log('&&&&&&&&&&&&&'); // console.log(res) CashierApi.orderNotice({order_id:app.orderId}) }, fail (res){ // console.log('*****************************') // console.log(res) }, complete(res){ // console.log(res) //支付成功后跳转 app.onSuccessNav() } }) } else { //已授权 //支付成功后跳转 app.onSuccessNav() } },
调起效果如下
用户订阅分为一次订阅和永久订阅,这个方法调起都是一次性的,永久订阅需要用户自己勾选总是保持已上选择才可以。
这个设置可以在小程序设置里面关闭和打开
用户关闭后,就不能再就收通知消息。
如果用户同一订阅,并勾选了“总是保持已上选择”,则无法再次调起支付方法。
因此在调起订阅方法前,我做了一个判断,根据wx.getSetting()方法,获取用户小程序设置信息,可以判断是否已订阅对应的模板消息,如果没订阅,则调起订阅方法让用户订阅,如果已经订阅,就无需调用订阅方法了
https://developers.weixin.qq.com/miniprogram/dev/api/open-api/setting/wx.getSetting.html
其中需要加上subscriptionsSetting:true才能返回订阅消息配置
wx.getSetting({ success (res) { console.log(res.authSetting) // res.authSetting = { // "scope.userInfo": true, // "scope.userLocation": true // } }})
wx.getSetting({ withSubscriptions: true, success (res) { console.log(res.authSetting) // res.authSetting = { // "scope.userInfo": true, // "scope.userLocation": true // } console.log(res.subscriptionsSetting) // res.subscriptionsSetting = { // mainSwitch: true, // 订阅消息总开关 // itemSettings: { // 每一项开关 // SYS_MSG_TYPE_INTERACTIVE: 'accept', // 小游戏系统订阅消息 // SYS_MSG_TYPE_RANK: 'accept' // zun-LzcQyW-edafCVvzPkK4de2Rllr1fFpw2A_x0oXE: 'reject', // 普通一次性订阅消息 // ke_OZC_66gZxALLcsuI7ilCJSP2OJ2vWo2ooUPpkWrw: 'ban', // } // } }})
其中如果是一次订阅,返回结果是
模板ID:'reject'
如果是永久订阅,返回结果是
模板ID:'accept'
4.下发模板消息
服务端下发模板消息(订阅消息),可参考https://developers.weixin.qq.com/miniprogram/dev/OpenApiDoc/mp-message-management/subscribe-message/sendMessage.html,可指定跳转页面以及参数,此处不在赘述。
模板消息效果
点击模板消息可以跳转到已上线小程序对应页面,带参数的在对应页面做好接收参数的配置即可
已上就是本次前端微信小程序对接模板消息的全部内容。
猜你喜欢
- 【前端】2023年最流行的10款前端UI框架排名
- 上次我们发布了《2022年最流行的11款PHP框架》,争议很大!今天我们来继续探讨一下:2023年最流行的10款前端UI框架排名。一:前端UI框架是什么?前端UI框架是一种基于HTML、CSS、JavaScript等前端技术的开发工具集,提供了一系列的UI组件、样式、布局等基础功能,使得前端开发人员可以更加高效地开发出具有良好用户体验的Web应用。二:为什么要使用前端UI框架?前端UI框架可以大大减少前端开发人员的工作量,提高开发效
- 【前端】JavaScript判断数组对象是否含有某个值的方法(6种)
- 【JavaScript基础语法】web前端判断数组对象是否含有某个值的方法(6种)知识回调场景复现实现方式(6种)利用循环遍历数组元素利用some,filter方法利用array.indexOf方法利用array.includes方法利用array.find方法利用set中has方法本期小结知识回调文章内容文章链接vue3 antd table表格的增删改查(一)input输入框根据关键字搜索【后台管理系统纯前端filter过滤】https://blog.csdn.net/XSL_HR/arti
- 【前端】vite和webpack的区别是什么
- 区别:1、webpack服务器启动速度比vite慢;由于vite启动的时候不需要打包,也就无需分析模块依赖、编译,所以启动速度非常快。2、vite热更新比webpack快;vite在hrm方面,当某个模块内容改变时,让浏览器去重新请求该模块即可。3、vite用esbuild预构建依赖,而webpack基于node。4、vite的生态不及webpack,加载器、插件不够丰富。本教程操作环境:windows7系统、vue3版,DELL G3电脑。写在开头最近的vite比较火,而且发布了2.0版本,v
- 【前端】微信小程序跳转公众号的三种方式
- 最近因为项目需要,要在小程序页面添加按钮,点击跳转公众号对应页面,目前没有直接点击按钮从小程序跳转到公众号页面的方法,但也有变相的实现方法,最后采用小程序webview内嵌公众号页面的方法来实现相关功能,在此记录一下:相关参考:小程序跳转公众号的三种方法 | 微信开放社区 (qq.com)开放能力 / official-account (qq.com)方法: 1: 公众号组件<official-account></official-account>
- 【前端】全栈软件开发工程师需要具备哪些技能
- 全栈软件开发工程师需要具备前端、后端和数据库等多方面的技能,以便能够在整个应用开发周期中承担各种任务。以下是典型的全栈软件开发工程师的技能栈:一、前端技能:1.HTML/CSS/JavaScript:构建网页的基本技能,负责页面结构、样式和交互。2.前端框架:掌握至少一种前端框架,如 React.js、Vue.js、Angular,用于构建可维护的、高性能的前端应用。3.前端工具:使用构建工具(Webpack、Parcel)、包管理工具(npm、Yarn)、代码规范工具(ESLint、Prett
- 【前端】常用CMS网站框架介绍
- 内容管理系统(Content Management System)简称为CMS,CMS系统是网站建设走向成功的重要组成部分。目前网络上的内容管理系统比较繁杂,想要找一个优秀而又非常适合的管理系统也是一件很不容易的事情。国内和国外的CMS程序都比较多,如国外的WordPress在站长圈名气很大。这里,尹华峰SEO技术博客主要介绍十款国内常见的优秀内容管理系统,很多还是开源程序,方便各位站长二次开发满足不同的需求。一、织梦CMS织梦CMS就是dedecms,很多站长称呼它为得得cms,是目前国内安装
- 【前端】前端网络安全
- 今天思考下前端源码安全的东西(不是前端安全,只是针对于源码部分)。在我看来,源码安全有两点,一是防止抄袭,二是防止被攻破。实际上讲,前端的代码大多是没有什么可抄袭性,安全更是形同虚设的(任何前端输入都是不能相信的)。但如果还是想防止源码被查看,HTML、CSS并不能做什么,最终都会用露出来(最简单用Chrome开发者工具就可以看到),所以只能针对JS做文件的压缩合并和混淆。关于抄袭其实就前端来讲,代码没有什么好抄袭的,大多人都是抄UI设计(这个是躲不了),还有一些富前端的控件和算法,重要之处还是