IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> 微信小程序订阅消息开发总结 -> 正文阅读

[移动开发]微信小程序订阅消息开发总结

主要流程

  1. 获取设置

    1)是否打开了消息推送开关?

    是:继续;

    否:进行处理,结束流程

    wx.getSetting({
     ? ?withSubscriptions: true,
     ? ?success(res) {
     ? ? ? ?if(res.subscriptionSetting.mainSwitch) {
     ? ? ? ? ? ?// 打开了
     ? ? ?  }
     ? ? ? ?else {
     ? ? ? ? ? ?// 没打开
     ? ? ?  }
     ?  }
    })

    2)是否提供的模板消息id都曾勾选了“保持以上选项,不再询问”?

    是:不弹出询问,结束流程;

    否:继续

    // 判断是否已勾选保持选项:对应模板消息id是否在subscriptionSetting.itemSettings里
    wx.getSetting({
     ? ?withSubscriptions: true,
     ? ?success(res) {
     ? ? ? ?// 逐个判断
     ? ? ? ?templIds.forEach(id => {
     ? ? ? ? ? ?if(res.subscriptionSetting.itemSettings[id] === undefined) {
     ? ? ? ? ? ? ? ?// 不符合条件
     ? ? ? ? ?  }
     ? ? ?  })
     ?  }
    })
  2. 弹出订阅消息询问

    只显示未保持授权的消息,用户选择后返回给后端,结束流程

    if(condition) {
     ? ?wx.requestSubscribeMessage({
     ? ? ? ?templIds,
     ? ? ? ?success(res) {
     ? ? ? ? ? ?...
     ? ? ?  }
     ?  })
    }

完整代码:

subscribeMessage(templIds) {
 ? ?return new Promise((resolve, reject) => {
 ? ? ? ?wx.getSetting({
 ? ? ? ? ? ?withSubscriptions: true,
 ? ? ? ? ? ?success(res) {
 ? ? ? ? ? ? ? ?let subsStgs = res.subscriptionsSetting
 ? ? ? ? ? ? ? ?if(subsStgs.mainSwitch) {
 ? ? ? ? ? ? ? ? ? ?let allIn = true
 ? ? ? ? ? ? ? ? ? ?templIds.forEach(id => {
 ? ? ? ? ? ? ? ? ? ? ? ?// 若部分消息没有保持以上选择,仍会弹出询问
 ? ? ? ? ? ? ? ? ? ? ? ?if(subsStgs.itemSettings[id] === undefined) {
 ? ? ? ? ? ? ? ? ? ? ? ? ? ?allIn = false
 ? ? ? ? ? ? ? ? ? ? ?  }
 ? ? ? ? ? ? ? ? ?  })
 ? ? ? ? ? ? ? ? ? ?// 用户同意总是保持保持以上选择,不再询问
 ? ? ? ? ? ? ? ? ? ?if(subsStgs.itemSettings && allIn) {
 ? ? ? ? ? ? ? ? ? ? ? ?let selection = subsStgs.itemSettings[templIds[0]]
 ? ? ? ? ? ? ? ? ? ? ? ?switch(selection) {
 ? ? ? ? ? ? ? ? ? ? ? ? ? ?case 'accept':
 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?console.log("always accept");
 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?break
 ? ? ? ? ? ? ? ? ? ? ? ? ? ?case 'reject':
 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?console.log("always reject");
 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?break
 ? ? ? ? ? ? ? ? ? ? ? ? ? ?case 'ban':
 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?console.log("already banned");
 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?break
 ? ? ? ? ? ? ? ? ? ? ? ? ? ?default:
 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?console.log("unknown reason")
 ? ? ? ? ? ? ? ? ? ? ?  }
 ? ? ? ? ? ? ? ? ? ? ? ?resolve(subsStgs.itemSettings)
 ? ? ? ? ? ? ? ? ?  }
 ? ? ? ? ? ? ? ? ? ?else { // 用户没有点击‘总是保持以上选择,不在询问’
 ? ? ? ? ? ? ? ? ? ? ? ?wx.requestSubscribeMessage({
 ? ? ? ? ? ? ? ? ? ? ? ? ? ?tmplIds: templIds,
 ? ? ? ? ? ? ? ? ? ? ? ? ? ?success(res) {
 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?console.log("订阅成功:", res)
 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?resolve(res)
 ? ? ? ? ? ? ? ? ? ? ? ? ?  },
 ? ? ? ? ? ? ? ? ? ? ? ? ? ?fail(err) {
 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?console.log("订阅失败:", err)
 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?reject(err)
 ? ? ? ? ? ? ? ? ? ? ? ? ?  }
 ? ? ? ? ? ? ? ? ? ? ?  })
 ? ? ? ? ? ? ? ? ?  }
 ? ? ? ? ? ? ?  }
 ? ? ? ? ? ? ? ?else {
 ? ? ? ? ? ? ? ? ? ?// 用户没有开启消息推送
 ? ? ? ? ? ? ? ? ? ?console.log("用户没有开启消息推送")
 ? ? ? ? ? ? ? ? ? ?resolve({"mainSwitch": "off"})
 ? ? ? ? ? ? ?  }
 ? ? ? ? ?  },
 ? ? ? ? ? ?fail(err) {
 ? ? ? ? ? ? ? ?reject(err)
 ? ? ? ? ?  }
 ? ? ?  })
 ?  })
}

注意事项

  1. 最好进行真机调试,开发者工具没有“保持以上选项,不再询问”

  2. 该功能只能在点击事件里调用,或支付成功的回调函数里调用

  3. 直接调用wx.requestSubscribeMessage无效,本人情况,不知道原因

  4. 若调用该功能出现错误,如模板消息id数目大于3,则无法进行接下来的操作。若为点击触发,则对应按钮或元素点击没反应

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2021-09-24 10:40:21  更:2021-09-24 10:42:36 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 20:27:36-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码