微信小程序订阅消息前后端示例

微信小程序的订阅消息, 必须是由弹框,弹框,弹框来调起了,单纯的在页面上调用 wx.requestSubscribeMessage是没有效果的

小程序端的代码

<view class="sub" bindtap="dinyuxiaoxi">订阅消息</view>

页面点击订阅按钮,弹出订阅框
事件代码如下

//这里是判断用户的订阅状态dinyuxiaoxi(){let that = this;let tempId = "Ue4ZGm6xu5nDB6MYSi29muiTo9lVrBdtpv4XrOPmgqc";wx.getSetting({withSubscriptions:true,success(res){//当上面的参数有withSubscriptions:true时, res中会返回subscriptionsSetting (订阅消息的设置)//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',  //这是被后台禁用的, 也不弹出订阅框//   }// }if(res.subscriptionsSetting && res.subscriptionsSetting.mainSwitch){//用户选择过总是同意订阅消息的开关,此时就要判断,其下的每一条订阅消息,是否都是被同意的, 如果总是同意就不用弹出订阅框, 如果不是总是同意,或者以前是被拒绝的,要弹出提示框if(res.subscriptionsSetting.itemSettings && res.subscriptionsSetting.itemSettings[tempId]){//找到了记录, 然后要判断记录是 reject(用户拒绝) accept(用户同意) ban(微信后台封禁)let itemstatus = res.subscriptionsSetting.itemSettings[tempId];if(itemstatus == "reject"){//用户的拒绝过,弹出订阅提示that.doSubscript(tempId)}else if(itemstatus == "accept"){//用户总是同意,就可以不用弹出提示}else if(itemstatus == "ban"){//用户被后台封禁}}else{//这个分支是,订阅消息的总开关虽然打开了, 但是了 itemSetting[tempId] 中没有找到该订阅消息的记录that.doSubscript(tempId);}}else{//这里订阅消息的主开关没有打开的,就要每次都弹出订阅框that.doSubscript(tempId);}}})},//这里才是直正的调起订阅doSubscript(tempId){wx.showModal({title: '订阅消息',content: '请同意我们给您推送消息,以便后续作提醒开课',success: (res) => {console.log(res);if (res.cancel) {wx.showToast({title: '您未同意,可能会收不到提醒短信',})}if (res.confirm) {wx.requestSubscribeMessage({tmplIds: [tempId],success(res1){ //{Ue4ZGm6xu5nDB6MYSi29muiTo9lVrBdtpv4XrOPmgqc: "accept", errMsg: "requestSubscribeMessage:ok"}if(res1[tempId] == "accept"){  //这个success中可以不写代码的,没多大用console.log("订阅成功")}}})}}})},

以上就是小程序端的订阅消息


在这里插入图片描述

订阅消息成功以后, 后台服务端是要发送消息给用户的
这里我们使用了 easywechat6 的功能
简易代码如下

 //发送订阅消息后台public function sendSubscript(){$app = WechatService::getMiniInstance();$accessToken = $app->getAccessToken()->getToken();$api = $app->getClient();$response = $api->post("/cgi-bin/message/subscribe/send?access_token=".$accessToken,["json"=>["template_id"=>"Ue4ZGm6xu5nDB6MYSi29muiTo9lVrBdtpv4XrOPmgqc","page"=>"",  //这里可以写上跳转的页面地址"touser"=>"oloj-7GNPtiaeR4_zUoWx89BtJb0","data"=>["thing10"=>["value"=>"服务"],"thing3"=>["value"=>"我的地址"],"thing6"=>["value"=>"测试取消"],"time4"=>["value"=>date("Y-m-d")]]]]);if($response->getStatusCode() == 200){$result = $response->toArray();var_dump($result);}}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/707988.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Leetcoder Day27| 贪心算法part01

语言&#xff1a;Java/Go 理论 贪心的本质是选择每一阶段的局部最优&#xff0c;从而达到全局最优。 什么时候用贪心&#xff1f;可以用局部最优退出全局最优&#xff0c;并且想不到反例到情况 贪心的一般解题步骤 将问题分解为若干个子问题找出适合的贪心策略求解每一个子…

【Linux系统化学习】信号概念和信号的产生

目录 信号的概念 从生活中的例子中感知信号 前台进程和后台进程 前台进程 后台进程 操作系统如何知道用户向键盘写入数据了&#xff1f; 进程如何得知自己收到了信号&#xff1f; 信号捕捉 signal函数 Core Dump&#xff08;核心转储&#xff09; 信号产生的方式 通…

黑马c++ STL部分 笔记(2) string容器

char*是指针 string是类&#xff0c;类内部封装了char*&#xff0c;管理这个字符串&#xff0c;是一个char*型的容器 函数&#xff1a;find,copy,delete,replace,insert等 1.构造string // string的构造方式&#xff1a; // 1 string() 创建一个空字符串 string str // 2 s…

LeetCode 刷题 [C++] 第102题.二叉树的层序遍历

题目描述 给你二叉树的根节点 root &#xff0c;返回其节点值的 层序遍历 。 &#xff08;即逐层地&#xff0c;从左到右访问所有节点&#xff09;。 题目分析 题目中要求层序遍历二叉树&#xff0c;即二叉树的广度优先搜索(BFS)。BFS一般使用队列的先入先出特性实现&#…

react倒计时功能

目录 类组件写法 函数组件写法&#xff1a; demo: 手机获取验证码登录&#xff08;验证码60秒倒计时&#xff09; react倒计时5 秒 React中的倒计时可以通过使用setInterval()函数来实现。下面是一个示例代码&#xff1a; 类组件写法 import React from react; import { But…

【Docker】狂神说

图片后补 官网&#xff1a; https://www.docker.com/ Docker概述 Docker为什么出现 原因&#xff1a;环境配置不能跨平台 方案 传统方式&#xff1a;jar&#xff08;开发人员&#xff09; 部署&#xff08;运维人员&#xff09; 解决方式&#xff1a;开发打包上线一套流程 …

推荐几个css+js特效网站

CodePen&#xff08;https://codepen.io/&#xff09;&#xff1a;CodePen不仅仅是一个CSS编辑器&#xff0c;它也是一个广受欢迎的JavaScript特效展示平台。你可以在CodePen上浏览和搜索其他开发者创建的各种JavaScript特效&#xff0c;从而获得灵感和学习如何实现不同的效果。…

【算法集训】基础算法:基础排序 - 选择排序

从上一学期期末考完之后就鸽了&#xff0c;真的惭愧&#xff0c;还想着期末考完就开始呢&#xff0c;结果考驾照完了后又有学校项目要忙活。终于是拖到开学了哈哈&#xff0c;虽然现在事情也比较多&#xff0c;但是总归是要开始的&#xff0c;不然马上就要拖延症晚期了&#xf…

设计模式:结构型模式

1. 适配器模式 (Adapter Pattern) 适配器模式是一种结构型设计模式&#xff0c;旨在将一个类的接口转换成客户端所期待的另一个接口&#xff0c;从而使原本由于接口不兼容而无法一起工作的类能够协同工作。适配器模式通常用于需要复用现有类但其接口与要求不匹配的情况。 1.1…

Qt SQLite的创建和使用

重点&#xff1a; 1.SQLite创建数据库内容方法 链接&#xff1a;SQLite Expert Personal的简单使用-CSDN博客 2.和数据库进行链接方法 QSqlDatabase DB; //数据库连接bool MainWindow::openDatabase(QString aFile) {DBQSqlDatabase::addDatabase("QSQLITE"); /…

使用uniapp开发时自定义tabbar

预览图&#xff1a; 一、配置page.jsong中的tabbar&#xff08;这一步是必须的&#xff0c;因为我们在使用uni.switchTab()时必须要用到&#xff09; "tabBar": {"list": [{"pagePath": "pages/index/index","iconPath": &…

java回顾总结--代理模式

目录 一、代理模式1.1 静态代理示例 1.2 动态代理示例 二、总结 一、代理模式 1.1 静态代理 代理模式给某一个对象提供一个代理对象&#xff0c;并由代理对象控制对原对象的引用。通俗的来讲代理模式就是我们生活中常见的中介。比如你按照小卡片上的电话打过去寻求服务&#…

C# 学习第四弹——字符串

一、char类型的使用 字符使用单引号&#xff0c;单个字符 转义字符是一种特殊的字符变量&#xff0c;以反斜线开头&#xff0c;后跟一个或多个字符。 输出多级目录可以使用 二、字符串的声明和初始化 1、引用字符串常量 引用字符串常量初始化——字符使用单引号&#xff0…

加密与安全_探索常用编码算法

文章目录 概述什么是编码编码分类ASCII码 &#xff08;最多只能有128个字符&#xff09;Unicode &#xff08;用于表示世界上几乎所有的文字和符号&#xff09;URL编码 &#xff08;解决服务器只能识别ASCII字符的问题&#xff09;实现&#xff1a;编码_URLEncoder实现&#xf…

K8S常用kubectl命令汇总(持续更新中)

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

【Prometheus】基于Altertmanager发送告警到多个接收方、监控各种服务、pushgateway

基于Altertmanager发送报警到多个接收方 一、配置alertmanager-发送告警到qq邮箱1.1、告警流程1.2、告警设置【1】邮箱配置【2】告警规则配置【3】 部署prometheus【4】部署service 二、配置alertmanager-发送告警到钉钉三、配置alertmanager-发送告警到企业微信3.1、注册企业微…

量子算法入门—4.量子比特与量子门(1)

1.量子比特 经典比特和量子比特 经典比特只有0、1两种取值&#xff0c;非黑即白&#xff0c;有n位即 2 n 2^n 2n种可能量子比特使用0、1的量子态描述量子比特的状态&#xff0c;可以通过线性组合形成新的量子态&#xff0c;就像光谱可以调节成分 引入线代记法&#xff0c;0、…

ARK:《BIG IDEAS 2024》

Cathie Wood所带领的方舟投资&#xff08;ARK&#xff09;发布了年度重磅研究报告《BIG IDEAS 2024》&#xff0c;该报告指出人工智能、公共区块链、多组学测序、能源存储和机器人技术这五大板块的融合将带来全球经济活动的改变。 这五个创新平台正在融合并定义这个技术时代&am…

92. 递归实现指数型枚举 刷题笔记

思路 dfs 考虑选或者不选每个位置 用0表示未考虑 1表示选 2表示不选 用u表示搜索状态 u>n时 已经搜到底层了 需要输出当前方案 遍历 如果选了则输出 #include<iostream> using namespace std; int n; const int N16; int st[N]; void dfs(int u){ //u来记…

Git自动忽略dll文件的问题

检查了半天发现是sourcetreee的全局忽略文件导致&#xff0c; 从里面删除dll即可。 我是干脆直接删了全局忽略&#xff0c;太恶心了&#xff0c;如下&#xff1a; #ignore thumbnails created by windows Thumbs.db #Ignore files build by Visual Studio *.exe .vsconfig .s…