先上效果图:

最近做了一个小程序的服务通知,虽然做好了,但过程还是比较坎坷,记录下,希望能给需要的伙伴一个参考

先上文档:小程序服务通知订阅消息开发文档

第一步:根据官方文来,先在微信公众平台登录小程序后台配置模板,获取模板id:,这块的模版可以在公共模版库里选。也可以新申请,但是需要3-7天才能出审核结果。

下面是模版生成的效果图。

第二步,获取下发权限
在获取下发权限之前,需要先获取小程序code和订阅消息的模板id给服务端,以便后台人员进行服务端配置

// 这里是获取下发权限地方,根据官方文档,可以根据  wx.getSetting() 的 withSubscriptions   这个参数获取用户是否打开订阅消息总开关。后面我们需要获取用户是否同意总是同意消息推送。所以这里要给它设置为true 。
wx.getSetting({withSubscriptions: true,   //  这里设置为true,下面才会返回mainSwitchsuccess: function(res){   // 调起授权界面弹窗if (res.subscriptionsSetting.mainSwitch) {  // 用户打开了订阅消息总开关if (res.subscriptionsSetting.itemSettings != null) {   // 用户同意总是保持是否推送消息的选择, 这里表示以后不会再拉起推送消息的授权let moIdState = res.subscriptionsSetting.itemSettings[tmplIds];  // 用户同意的消息模板idif(moIdState === 'accept'){   console.log('接受了消息推送');}else if(moIdState === 'reject'){console.log("拒绝消息推送");}else if(moIdState === 'ban'){console.log("已被后台封禁");}}else {// 当用户没有点击 ’总是保持以上选择,不再询问‘  按钮。那每次执到这都会拉起授权弹窗wx.showModal({title: '提示',content:'请授权开通服务通知',showCancel: true,success: function (ress) {if (ress.confirm) {  wx.requestSubscribeMessage({   // 调起消息订阅界面tmplIds: [tmplIds],success (res) { console.log('订阅消息 成功 ');console.log(res);},fail (er){console.log("订阅消息 失败 ");console.log(er);}})     }}})}}else {console.log('订阅消息未开启')}      },fail: function(error){console.log(error);},})

到这里小程序端的代码就完了,第三步就是服务端要做的事情了。

这里说下需要注意的点:
1.配置模板获取模板id,是在小程序后台,而不是关联的公众号后台!!!
2. 授权弹窗需要用户点击才能拉起,比如直接在 onload 方法中是无法调起的,可以在需要拉起的地方做一个弹窗询问,引导用户点击拉起授权
3.授权弹窗上的,总是保持以上选择,不再询问 这个选项,只有真机上有,模拟器上只有是否同意消息推送弹窗。建议测试直接上真机
4.后端 subscribeMessage.send 接口的请求参数 page , 配置路径为 pages/index/index
5.在小程序的社区发现有小伙伴说,真机测试不敢点 总是询问 的按钮。怕点了,后面就再也没办法拉起授权测试了。其实开发人员一般都是用自己的微信测试的,微信开发工具上的清缓存菜单里面就有清除授权的选项,直接在开发工具里清掉,就相当于清掉了手机的授权。重新编译预览就能看见效果。 还是放一下图吧:

在加上一个需要特别特别重要的问题:授权弹窗上的总是保持以上选择,意思是不再调起授权弹窗。但是下次推送消息还是需要用户点击授权的。这块订阅消息的逻辑是矛盾的。因为点了总是,那么授权弹窗是无法再次调起的,那用户也就没有授权入口。又怎么授权呢。官方解释可以在小程序右上角设置里面打开权限。但up主亲测,当后台推送消息拒绝时,小程序设置订阅消息开启无效。依然接收不到。
可以参考这个:https://developers.weixin.qq.com/community/develop/doc/00002cae8c0c90766f8ab3a0451000?highLine=43101%2520%25E6%2580%25BB%25E6%2598%25AF
https://developers.weixin.qq.com/community/develop/article/doc/0006ac060e4e80183bc9654b856013(
微信官方解释:https://developers.weixin.qq.com/community/develop/doc/00008a8a7d8310b6bf4975b635a401


2021.12.29 更新
上面遗留的问题,点击总是之后,无法进行再次订阅,评论区有童鞋提出了解决方案。
这里更新下:
点击按钮直接调wx.requestSubscribeMessage即可,不做用户是否打开订阅消息的判断,这样在点击总是...之后,虽然没有询问框,依然可以订阅(已亲测,在此感谢小糖同学~

小程序订阅消息(服务通知)实现 wx.requestSubscribeMessage相关推荐

  1. 小程序统一服务消息_微信团队发布小程序模板消息能力调整通知:小程序订阅消息接口正式上线...

    10月13日,微信团队发布了小程序模板消息能力调整通知.微信团队表示,此前的模板消息接口将停止使用,小程序订阅消息接口正式上线.据了解,新上线的小程序订阅消息,同时支持一次性和长期性订阅消息,用户可以 ...

  2. wx小程序订阅消息概念和应用场景理解(一次性消息一定要人手动触发)

    文章目录 文章参考 订阅消息(一次性订阅) 和 模板消息的区别 订阅消息的特点 模板消息的特点 订阅消息类型 一次性订阅消息 长期性订阅消息 `订阅消息 wx.requestSubscribeMess ...

  3. 有赞“小程序订阅消息”功能上线 支持商家主动推送「活动通知」

    12月7日消息,有赞微商城"小程序订阅消息"功能正式上线,设置领券.订单.签到等多个场景的授权,并支持商家主动推送营销活动类「活动通知」给消费者.目前,此功能已支持食品.服饰鞋包. ...

  4. 微信小程序 -- 订阅消息wx.requestSubscribeMessage

    消息订阅实现 1. 步骤一:获取模板 ID 2.步骤二:获取下发权限 3. 步骤三:调用接口下发订阅消息 4. 代码示例 效果图开发者工具与真机效果不同,真机为准 开发者工具效果图: 1. 步骤一:获 ...

  5. wx.requestSubscribeMessage微信小程序订阅消息总结

    前言有个时候我们要提醒微信小程序用户以便实现服务的闭环和更优的体验(例如,发货成功等等),所以就需要订阅消息 1,先上官方文档 小程序订阅消息官方文档 2,消息类型 (1) 一次性订阅消息 用户自主订 ...

  6. uniapp 小程序订阅消息 一次订阅多个 wx.requestSubscribeMessage 微信小程序订阅消息

    如图所示,订阅消息 官方文档: 小程序订阅消息官方文档 1,消息类型 (1) 一次性订阅消息 用户自主订阅后,开发者可不限时间地下发一条对应的服务消息:每条消息可单独订阅或退订. (2) 长期订阅消息 ...

  7. 小程序消息服务器webapi,小程序订阅消息

    # 小程序订阅消息 # 功能介绍 消息能力是小程序能力中的重要组成,我们为开发者提供了订阅消息能力,以便实现服务的闭环和更优的体验. 订阅消息推送位置:服务通知 订阅消息下发条件:用户自主订阅 订阅消 ...

  8. 微信小程序的模板消息与小程序订阅消息

    小程序订阅消息功能介绍消息能力是小程序能力中的重要组成,我们为开发者提供了订阅消息能力,以便实现服务的闭环和更优的体验. 订阅消息推送位置:服务通知订阅消息下发条件:用户自主订阅订阅消息卡片跳转能力: ...

  9. 微信小程序订阅消息功能

    小程序订阅消息 功能介绍 消息能力是小程序能力中的重要组成,我们为开发者提供了订阅消息能力,以便实现服务的闭环和更优的体验. 订阅消息推送位置:服务通知 订阅消息下发条件:用户自主订阅 订阅消息卡片跳 ...

  10. uni-app微信小程序订阅消息功能开发(流程讲解篇)

    温馨提示 微信小程序中废弃了"模板消息",,微信小程序模板消息 使用场景 首先我们需要明白微信订阅消息使用场景,比如客户点了一份美团外卖客户需要知道当前订单商家是否接单,或订单是否 ...

最新文章

  1. [UE4]给Widget增加参数,Pre Construct和Construct的区别
  2. css 小知识点:inline/inline-block/line-height
  3. 速成pytorch学习——4天中阶API示范
  4. 【十九】文件译文:reportgenerator.properties (报表生成器属性文件)
  5. row_number() over
  6. csuoj-1900 锋芒毕露
  7. 又遇到jqGrid在chrome下宽度不正常有滚动条
  8. 6款令人相见恨晚的在线搜索网站,成年后都会要用上,了解一下!
  9. LAMP兄弟连2011年上半年开班计划
  10. 文件服务器 软件 开源,5个优秀的开源文件共享软件包 | MOS86
  11. 央行降准:对股市、楼市、债市、商品、人民币汇率的影响
  12. DeepLearning初窥门径
  13. simd-neno加速
  14. css中zoom的用法
  15. SQL Studio
  16. 到底什么是链接,它起到了什么作用?
  17. 关于 安装Qt5.15.2启动QtCreator后“应用程序无法正常启动0xc0000022” 的解决方法
  18. Blink SQL介绍
  19. 江苏大学张世兵计算机学院,高校辅导员法律意识存在的不足与提升路径.pdf
  20. POI3.17与POI旧版本对比,方便POI升级jar包修改

热门文章

  1. python xlwt_python xlwt模块简介
  2. SVN代码回滚到执行版本
  3. VB 连接AutoCad 模块代码
  4. 外卖小程序邀请入口获取推广路径
  5. allegro 自定义快捷键
  6. iOS Gif分解与展示
  7. 北京计算机专业考研录取分数线,2018北京航空航天大学计算机考研复试分数线_计算机考研分数线...
  8. mac 环境下搭建socket通信
  9. 【vuejs】有关UI框架“ydui”中的倒计时组件的使用
  10. 专门查英语单词的软件_查英语单词的工具