微信小程序-消息订阅整体流程

news/2024/7/20 2:49:45 标签: 微信小程序, 小程序

1.首先登录微信公众平台,网址:微信公众平台

2.找到“订阅消息”,如果订阅消息没开启,可以点击开启,然后根据自己的消息需求到公共模版里找合适的,然后点击选用,如果没有比较合适的可以申请模版

3.申请模版步骤(如果找到合适的模版可以不申请直接跳过这步),这里在公共模板里面跳到最后一页,就可以看见‘帮助我们完善模板库’,点击去申请模板,

点进去之后长这样

填写案例:类似这种,根据自己的需求填写,一般如果审核不通过的话,会很详细的告诉你是哪里的问题,根据他告诉你的改就可以啦,审核通过以后,在公共模板里搜索你添加的模板,然后选中

4.选中模板之后我们就可以开始写程序了,先复制一下选中的模板的ID

5,因为这个小程序的订阅弹窗不能直接调用触发,需要用户点击触发,所以你需要在你的的小程序的那个页面写一个按钮来触发这个弹窗,下面这个就是点击按钮调用的事件,这样消息订阅就完成了

// 订阅消息按钮
	const SubscriptionMessage = ()=>{
		const tmplIds =刚刚复制的模板id
		// 获取小程序订阅状态
		wx.getSetting({
		    withSubscriptions: true,  
			success: function(res){ 
				 // 调起授权界面弹窗
				        if (res.subscriptionsSetting&&res.subscriptionsSetting.mainSwitch) {  // 用户打开了订阅消息总开关
						// 用户同意总是保持是否推送消息的选择, 这里表示以后不会再拉起推送消息的授权
				          if (res.subscriptionsSetting.itemSettings != null) {   
				            let moIdState = res.subscriptionsSetting.itemSettings[tmplIds];  // 用户同意的消息模板id
				            if(moIdState === 'accept'){   
				              console.log('接受了消息推送');
							  uni.showToast({
							  	title: '已订阅过消息推送',
							  	icon:'success',
							  	duration: 2000
							  })
				            }else if(moIdState == 'reject'){
				              console.log("拒绝消息推送");
							  uni.showToast({
							  	title: '已永久拒绝消息推送',
							  	icon:'success',
							  	duration: 2000
							  })
				            }else if(moIdState == 'ban'){
				              console.log("已被后台封禁");
				            }
				          }else {
				          	// 当用户没有点击 ’总是保持以上选择,不再询问‘  按钮。那每次执到这都会拉起授权弹窗
				            wx.showModal({
				              title: '提示',
				              content:'请授权开通服务通知',
				              showCancel: true,
				              success: function (ress) {
				                if (ress.confirm) {  
								// 调起消息订阅界面
				                  wx.requestSubscribeMessage({   
				                    tmplIds: [tmplIds],
				                    success (res) { 
										if(res[tmplIds] == 'accept'){
											console.log('订阅消息 成功 ');
											// uni.showToast({
											// 	title: '消息订阅成功',
											// 	icon:'success',
											// 	duration: 2000
											// })
										}
										if(res[tmplIds] == 'reject'){
											console.log('已拒绝订阅');
										}
				                    },
				                    fail (er){
				                      console.log("订阅消息 失败 ");
				                      console.log(er);
				                    }
				                  })     
				                        
				                }
				              }
				            })
				          }
				        }else {
				          console.log('订阅消息未开启')
						  uni.showToast({
						  	title: '订阅消息未开启',
							icon:'error',
						  	duration: 2000
						  })
				        }  
			},
		})
	}

 6.解释:小程序消息订阅下方有一个‘总是保持以上选项,不再询问’的按钮,首先我们要通过wx.getSetting来获取用户小程序绑定的状态,wx.getSetting(Object object) | 微信开放文档

通过返回的状态来判断,用户是否勾选了‘总是保持以上选项,不再询问’按钮,如果勾选过了,那询问的弹窗就不会谈起,如果没有勾选就代表用户只同意过一次消息推送,当他再次点击的时候要再次订阅,wx.requestSubscribeMessage是消息订阅的APIwx.requestSubscribeMessage(Object object) | 微信开放文档

,但这里有一个问题就是如果我勾选了‘总是保持以上选项,不再询问’的按钮,我还想弹窗让他重新订阅怎么实现,如果是用户手动操作的话可以在右上角的设置-订阅消息里面开启,如果是写代码的话请参考这篇文章小程序订阅消息用户拒绝后,如何引导用户再次开启,并获得它的状态?-Js中文网 · 前端进阶资源教程还有就是在我们开发调试中,也想让她再次弹出,可以点击微信开发者工具上面的按钮进行授权数据清除

参考作者链接:

http://t.csdnimg.cn/U7mhx

http://t.csdnimg.cn/FdZGX


http://www.niftyadmin.cn/n/5387493.html

相关文章

适用于 Linux、Windows 和 macOS 的免费 ONLYOFFICE 桌面应用程序

前言: 最近也是发现了一款特别好用的免费ONLYOFFICE 桌面应用程序忍不住分享给大家,这款编辑器能够打开、阅读和编辑多种文件类型,包括.docx文档、.pptx幻灯片和.xlsx表格等开放XML格式的Office文档。此外,ONLYOFFICE桌面编辑器还…

力扣OJ题——随机链表的复制

题目: 138. 随机链表的复制 给你一个长度为 n 的链表,每个节点包含一个额外增加的随机指针 random ,该指针可以指向链表中的任何节点或空节点。 要求:构造这个链表的 深拷贝 深拷贝应该正好由 n 个 全新 节点组成,其中…

保存Json对象到数据库

文章目录 背景实现方式1. 直接以 Json 对象保存到数据库2. 以 String 类型保存到数据库 背景 项目过程中可能需要保存 Json 对象到数据库中。 实现方式 有两种实现方式,一种是直接保存 Json 对象到数据库,这种方式在创建实体类以及编写 Mapper XML 脚本…

TinyVue的Layout 布局使用Col 排序

使用v-for,循环返回数据returnData,并并排展示。这个功能之后项目中要用。 小tips: tiny-row中的:order,与内容中的:no,配合,实现升序降序排列:no绑定到index上,需要写在v-for后面v-for写在循环…

OSDI 2023: Hyrax Fail-in-Place Server Operation in Cloud Platforms

我们使用以下6个分类标准对本文的研究选题进行分析: 1. 硬件故障类型 DRAM: 此类别涉及研究如何处理内存相关的错误。这包括单比特错误,使用传统 ECC 进行校正,以及需要冗余、修复技术或隔离故障内存区域的更广泛的故障。磁盘: 此处研究将解决存储故障,尤其是 SSD 中的故障…

java线程的理解和运用

什么是线程 首先要了解计算机中的程序、进程、线程分别是什么 程序:计算机指令的集合;进程:计算机以“进程”的方式运行程序,并分配“CPU”、“网络”、“磁盘”、“内存”等资源;线程:一个进程中会包含多…

【人工智能学习思维脉络导图】

曾梦想执剑走天涯,我是程序猿【AK】 目录 知识图谱1. 基础知识2.人工智能核心概念3.实践与应用4.持续学习与进展5.挑战与自我提升6.人脉网络 知识图谱 人工智能学习思维脉络导图 1. 基础知识 计算机科学基础数学基础(线性代数、微积分、概率论和统计学…

【达梦数据库】查看pesg回滚段信息的视图和SQL

一些达梦回滚段是使用情况的查询SQL,供排查“回滚记录版本太旧,无法获取用户记录” 等类似问题时使用 视图名说明主库备库v$pseg_items显示回滚系统中当前回滚项信息(回滚线程的工作信息)总行数WORKER_THREADS1查询 no rowsv$pseg…