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

微信小程序一次性订阅封装

封装代码如下:

export async function subscribeMessage(tmplIds: string[]): Promise<ISubscribeMessagePromise> {// 模板ID// 1、获取设置状态const settings = (await wx.getSetting({ withSubscriptions: true })).subscriptionsSetting || {}console.log('---设置状态---', settings)// 2、总开关if (!settings.mainSwitch) {return Promise.resolve({ content: '请在设置中打开消息订阅开关', status: false })}// 3、单个开关if (settings.itemSettings) {const notSubscribeTxt: string[] = []const yesSubscribeIds: string[] = []for (const item in settings.itemSettings) {if (settings.itemSettings[item] !== 'accept') {notSubscribeTxt.push(SUBSCRIBE_NOTICE[item])continue}yesSubscribeIds.push(item)}// 已订阅的消息增加次数 对应上边说的第4点,如果订阅多条,但是只允许接受一条消息,这里应增加允许消息的订阅次数,否则无法推送消息【遇到的坑】if (notSubscribeTxt.length && yesSubscribeIds.length) {wx.requestSubscribeMessage({ tmplIds: yesSubscribeIds, entityIds: [] })}if (notSubscribeTxt.length) {return Promise.resolve({ content: `请在设置中打开${notSubscribeTxt.join('、')}消息通知开关`, status: false })}}// 4、请求订阅return new Promise((resolve, reject) => {wx.requestSubscribeMessage({tmplIds: tmplIds,entityIds: [],success: function (res) {resolve({ content: '', status: true })},fail: function (err) {resolve({ content: '', status: true })}})})
}

调用

三、其他问题点

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

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

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

http://www.xdnf.cn/news/678133.html

相关文章:

  • Linux 权限管理基础:深入理解 root 与 sudo 的用法
  • 【监控】Spring Boot 应用监控
  • libvirt设置虚拟机mtu实现原理
  • 决策树 GBDT XGBoost LightGBM
  • ETL数据集成过程全流程优化指南
  • ICMP与TCP端口:网络层与传输层解析
  • 尚硅谷redis7 49-51 redis管道之理论简介
  • Python的虚拟环境
  • 4 月 62100 款 App 被谷歌下架!环比增长 28%
  • 英码科技携带 “无感知AI数字课堂”解决方案,亮相第22届广东教育装备展
  • redis高并发问题
  • Common JS和ES Module的区别
  • 6.4.5_关键路径
  • 窗口函数总结篇
  • -动静态库简单使用
  • ABC 352
  • 依赖倒置原则 (Dependency Inversion Principle, DIP)
  • 分块查找详解
  • 第二章 1.3 数据采集风险的现有技术和解决方案
  • RK3568 OH5.1 镜像烧录
  • python第34天打卡
  • 深耕数字化赛道,联众优车以创新风控体系构筑汽车金融护城河
  • Fine-tuning:微调技术,训练方式,LLaMA-Factory,ms-swift
  • AI智能分析网关V4垃圾桶满溢检测算法打造城市/公园/街道等场景应用方案
  • 浅谈Mysql的MVCC机制(RC与RR隔离级别)
  • LeetCode 1696. 跳跃游戏 VI(中等)
  • AI Agent开发第75课-数据、张量、流水线并行全解析
  • 【Web应用】若依:基础篇03-入门案例,若依代码生成器生成前后端代码
  • Web通信协议全景解析:从HTTP到WebService的技术演进与对比
  • 如何寻找大模型在企业业务中的价值?