当前位置: 首页 > news >正文

小程序如何完成订阅

小程序如何完成订阅

  • 参考相关文档
  • 实践
  • 问题处理
    • 授权弹窗不再触发
    • 引导用户重新授权

参考相关文档

微信小程序实现订阅消息推送的实现步骤
发送订阅消息
小程序订阅消息(用户通过弹窗订阅)开发指南

实践

我们需要先选这一个模板,具体流程参考官方的操作。然后这个模板ID就是前后端所需要的重要数据啦。
在这里插入图片描述

我们在获取到模板id之后,现在需要弹出订阅弹窗让用户完成订阅,查看上面官方文档中可以知道,我们需要用户触发uni.requestSubscribeMessage这个方法。那我们可以是用弹窗,或者操作按钮来达到这个目的。我们这里是采用的进入页面之后就弹窗(各人按需调整)

subscribeMessage() {let tmplId = 'XXXXXXXXXXXXX';uni.showModal({title: '提示',content: '邀请您订阅消息',editable: false,confirmText: '同意',cancelText: '拒绝',placeholderText: '',success: function (res) {console.log('success', res);if (res.confirm) {//调用订阅// 添加用户授权操作 uniapp封装了uni.requestSubscribeMessage接口uni.requestSubscribeMessage({tmplIds: [tmplId],success(res) {console.log('success', res);}});} else if (res.cancel) {console.log('用户点击取消');}}});
},

我们这里使用的是弹窗点击同意之后我们去调用uni.requestSubscribeMessage这个方法,可以唤起授权弹窗。
在这里插入图片描述在这里插入图片描述
我们点击允许之后就订阅成功了,然后后端同事通过获取到用户的openid,就可以给用户发送对应的模板消息了。

问题处理

授权弹窗不再触发

我们第一次进入小程序,点击同意之后进行授权弹窗唤起,我们选择允许或拒绝。重新刷新页面加载,这一次点击同意,并没有如愿的唤起订阅授权了。
这是怎么回事呢?
观察操作细节,如果我们没有勾选(总是保持以上选择),那么每一次重新进入小程序会正常升起订阅授权的弹窗,但是一旦我们勾选了就不会再升起订阅授权的弹窗。
在这里插入图片描述

经过查询文档我们发现,勾选了之后(总是保持以上选择)之后,订阅授权弹窗就不再唤起,如果我们还需要用户再次授权怎么办呢?

引导用户重新授权

那我们需要先使用uni.getSetting(方法查询一下用户的订阅状态,如果发现用户勾选了(总是保持以上选择),根据业务需求,我们可以重新指引用户打开授权,uni.openSetting(这个操作也需要用户点击之后才能触发)。用户可以在这里重新打开授权。

showMessage() {let that = this;let tmplId = 'XXXXXXXXXXXXXX';uni.getSetting({withSubscriptions: true,success(res) {console.log(res);if (res.subscriptionsSetting.mainSwitch) {// 用户打开了订阅消息总开关if (res.subscriptionsSetting.itemSettings) {// 用户同意总是保持是否推送消息的选择, 这里表示以后不会再拉起推送消息的授权let moIdState = res.subscriptionsSetting.itemSettings[tmplId]; // 用户同意的消息模板idif (moIdState === 'accept') {// 同意了消息推送} else if (moIdState === 'reject') {console.log('拒绝了消息推送');//引导用户重新打开授权uni.showModal({title: '提示',content: '用户已关闭订阅授权,是否重新打开订阅授权',editable: false,confirmText: '同意',cancelText: '拒绝',placeholderText: '',success: function (res) {if (res.confirm) {uni.openSetting({withSubscriptions: true,}}});} else if (moIdState === 'ban') {uni.showToast({title: '已被后台封禁'});}} else {// 开始订阅that.subscribeMessage();}} else {// 总开关已关闭清空下,是否重新打开授权uni.showModal({title: '提示',content: '用户已关闭订阅授权,是否重新打开订阅授权',editable: false,confirmText: '同意',cancelText: '拒绝',placeholderText: '',success: function (res) {if (res.confirm) {uni.openSetting({withSubscriptions: true,});}}});}}});
},

在这里插入图片描述在这里插入图片描述

http://www.lryc.cn/news/486761.html

相关文章:

  • JS学习日记(jQuery库)
  • Uni-APP+Vue3+鸿蒙 开发菜鸟流程
  • Linux的基本用法
  • 如何找出爬取网站的来源IP呢?
  • Java爬虫(Jsoup)详解
  • 力扣周赛:第424场周赛
  • 预处理(1)(手绘)
  • 利用OpenAI进行测试需求分析——从电商网站需求到测试用例的生成
  • 深入探索:Scrapy深度爬取策略与实践
  • 《生成式 AI》课程 第3講:訓練不了人工智慧嗎?你可以訓練你自己
  • 如何编译 Cesium 源码
  • 前端开发设计模式——责任链模式
  • JavaWeb--MySQL
  • Python | Leetcode Python题解之第564题数组嵌套
  • Spring Boot教程之Spring Boot简介
  • Qwen2-VL:发票数据提取、视频聊天和使用 PDF 的多模态 RAG 的实践指南
  • 【安全科普】NUMA防火墙诞生记
  • 机器学习day2-特征工程
  • Python数据分析NumPy和pandas(三十五、时间序列数据基础)
  • Python 小高考篇(6)常见错误及排查
  • k8s上部署redis高可用集群
  • C++的类和对象
  • 自动驾驶系列—深入解析自动驾驶车联网技术及其应用场景
  • 机器学习(1)
  • 深入理解 Redis跳跃表 Skip List 原理|图解查询、插入
  • Halcon HImage 与 Qt QImage 的相互转换(修订版)
  • 【Golang】——Gin 框架中的模板渲染详解
  • CSS:导航栏三角箭头
  • onlyoffice Command service(命令服务)使用示例
  • QSS 设置bug