首页 > 编程语言 >微信小程序消息订阅

微信小程序消息订阅

时间:2024-12-20 19:58:04浏览次数:8  
标签:订阅 const settings 微信 程序 getSetting 消息 wx

摘要:最近做项目用到微信小程序消息订阅,但是微信官方文档描述的太官方了,好多地方不理解,查阅了好多资料结合官方文档总结一下需要注意的地方

 

使用到的API:

订阅消息API
wx.requestSubscribeMessage(options) 获取设置API wx.getSetting({withSubscriptions: true })
打开设置API
<button open-type='openSetting'></button>

为啥用到这三个API后边说

 

一、首次订阅的时候,弹出订阅弹,如图:

此时需要注意点:

1、首次授权弹框出现,wx.getSetting 获取到的参数就是一个对象 {mainSwitch: true},里面没有其他参数了

2、只要你点击了《总保持以上选项》,不管消息订阅是否开启【上图的消息开关】,以后订阅弹框都不会再弹出。除非再编辑器上点击《清楚全部缓冲》

3、如果消息订阅不开启开启【上图的消息开关】,此时只能点击《取消》,确定按钮是致灰的

4、当你点击了《总保持以上选项》,同时消息订阅没有开启,但是点击了取消按钮,当你下次再点击订阅的时候,wx.getSetting会发生变化。如下图:会多出itemSettings字段,同时你订阅的消息ID对于的value是‘reject’,表示不接受

  tips:reject 表示不接受,accept 表示同意 具体查看 https://developers.weixin.qq.com/miniprogram/dev/api/open-api/subscribe-message/wx.requestSubscribeDeviceMessage.html#%E5%8F%82%E6%95%B0

5、 当你选中《总保持以上选项》,每次订阅都会弹出订阅授权弹框

二、二次订阅,会根据首次订阅是否选中《总保持以上选项》做判断

1、如果没有选中,则后续每次订阅授权弹框都会弹出

2、如果选中则需要根据wx.getSetting获取结过做判断,并引导用户在设置里面开启,用到了<button open-type='openSetting'></button>

三、其他问题点

1、如果wx.getSetting获取到 mainSwitch=false 则需要引导用户去小程序设置里面打开总订阅开关

2、在设置中总开关打开,但是要订阅的消息选择不接受,则消息无法推送

3、wx.requestSubscribeMessage每调用一次,订阅次数增加1次【重要】
4、当《总保持以上选项》选中,但是消息订阅开关没有打开,需要引导用户去设置中打开消息(允许接受消息)。如果用户选择接受消息,回到页面也需要调用wx.requestSubscribeMessage来增加订阅次数,否则消息还是无法推送【重要】

四、代码展示

export async function subscribeMessage() {
    // 模板ID
    const themeIds = [TARO_APP_SUBSCRIBE_FAULT_MESSAGE_ID, TARO_APP_SUBSCRIBE_COOKING_MESSAGE_ID]
    // 模板映射
    const themeIdToText = {
        [TARO_APP_SUBSCRIBE_FAULT_MESSAGE_ID]: '设备故障',
        [TARO_APP_SUBSCRIBE_COOKING_MESSAGE_ID]: '烹饪完成'
    }

    // 1、获取设置状态
    const settings = (await Taro.getSetting({ withSubscriptions: true })).subscriptionsSetting || {}

    console.log('---设置状态---', settings)

    // 2、总开关
    if (!settings.mainSwitch) {
     // 返回结果,提示用户去设置中开启。可以使用弹框提示, 其中按钮使用<button open=type='openSetting'></button>引导用户 return Promise.resolve({ content: '请在设置中打开消息订阅开关', status: false }) } // 3、单个开关 if (settings.itemSettings) { const notSubscribeTxt = [] const yesSubscribeIds = [] for (const item in settings.itemSettings) { if (settings.itemSettings[item] !== 'accept') { notSubscribeTxt.push(themeIdToText[item]) continue } yesSubscribeIds.push(item) } // 已订阅的消息增加次数 对应上边说的第4点,如果订阅多条,但是只允许接受一条消息,这里应增加允许消息的订阅次数,否则无法推送消息【遇到的坑】 if (notSubscribeTxt.length && yesSubscribeIds.length) { Taro.requestSubscribeMessage({ tmplIds: yesSubscribeIds }) } // 提示未订阅消息去订阅 if (notSubscribeTxt.length) { return Promise.resolve({ content: `请在设置中打开${notSubscribeTxt.join('、')}消息通知开关`, status: false }) } } // 4、请求订阅 return new Promise((resolve, reject) => { Taro.requestSubscribeMessage({ tmplIds: themeIds, success: function (res) { resolve({ content: '订阅成功', status: true }) }, fail: function (err) { resolve({ content: '订阅失败', status: true }) } }) }) }

标签:订阅,const,settings,微信,程序,getSetting,消息,wx
From: https://www.cnblogs.com/little-baby/p/18619902

相关文章

  • python毕设 理发预约系统程序+论文
    本系统(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。系统程序文件列表开题报告内容一、选题背景关于理发预约系统的研究,现有研究多集中在通用的预约系统开发或大型服务行业预约系统的优化方面,专门针对理发行业的预约系统研究较少。......
  • uni-app微信小程序GPS位置获取爬坑
    前情uni-app是我比较喜欢的跨平台框架,它能开发小程序/H5/APP(安卓/iOS),重要的是对前端开发友好,自带的IDE让开发体验也挺棒的,现在所在公司项目有抖音、快手、微信、支付、APP端,就是使用uni-app来开发的。坑位最近接手的项目是需要在下单前获取用户所有位置的GPS信息,再服务端会根......
  • 2024-2025-1 20241320 《计算机基础与程序设计》第13周学习总结
    2024-2025-120241320《计算机基础与程序设计》第13周学习总结作业信息|这个作业属于哪个课程|https://edu.cnblogs.com/campus/besti|这个作业要求在哪里|https://www.cnblogs.com/rocedu/p/9577842.html#WEEK13|这个作业的目标|加入云班课,参考本周学习资源自学教材《C......
  • 商城小程序开发有哪些流程?传统商家如何抓住小程序的流量!
    在移动互联网的浪潮下,小程序作为一种新兴的商业工具,逐渐成为商家拓展线上市场的必备选择。商城小程序的开发不仅仅是搭建一个在线商城那么简单,它需要商家在技术、用户体验、运营策略等方面进行多维度的考量。而对于传统商家来说,如何借助小程序抓住流量,更是一个亟待解决的课......
  • Unity复刻胡闹厨房复盘 模块一 新输入系统订阅链与重绑定
            本文仅作学习交流,不做任何商业用途        郑重感谢siki老师的汉化教程与代码猴的免费教程以及搬运烤肉的小伙伴                                                         版本:Unity6......
  • node.js毕设电影票网上订票系统程序+论文
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容一、选题背景关于电影票网上订票系统的研究,现有研究主要集中在电子商务平台的一般性票务销售流程上,专门针对电影票网上订票系统的特色功能、用户体验优化等方面的研......
  • node.js毕设电影票务系统程序+论文
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容一、选题背景关于电影票务系统的研究,现有研究主要以大型商业电影票务平台的运营模式和营销推广为主,如猫眼、淘票票等平台的商业模式研究等。专门针对小型电影票务系......
  • 小程序的全局事件总线太好用啦
    1.安装全局事件总线,找到main.jsVue.prototype.$eventBus=newVue()2.绑定事件mounted(){  this.$eventBus.$on('GetShareActivitys',this.GetShareActivitys);},beforeDestroy(){   this.$eventBus.$on('GetShareActivitys',this.GetShareActivitys)......
  • ssm毕设网上购物商城程序+论文
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、研究背景随着互联网技术的飞速发展,电子商务已经深入到人们生活的方方面面。近年来,网上购物成为一种极为普遍的消费方式,其规模不断扩大。在中国,网络购物者......
  • ssm毕设同学录管理系统程序+论文
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、研究背景随着信息技术的飞速发展,社交网络和数字化管理在人们的生活和学习场景中日益重要。在学校环境里,同学之间的联系和互动是校园生活的重要组成部分。......