一、推送消息需求

一个简单常见的需求:推送小程序消息通知到用户!

需要解决的问题:

  • 小程序消息推送服务有什么限制?
  • 小程序可支持推送哪些类型消息?
  • 如何实现小程序消息通知推送服务?

二、小程序提供的能力

小程序支持通过【消息模板】向“订阅消息”的用户推送消息通知!

  • 支持向主动“订阅消息”的用户推送通知(注意:这里是“订阅消息”而非订阅小程序),不支持主动向未订阅消息用户推送通知
  • 支持通过【消息模板】发送“订阅消息”,不支持发送任意无模板消息;
  • 一般小程序不支持自定义消息模板(目前自定义消息模板功能已废弃,暂不确定哪些类型小程序或仍可自定义消息模板,有哪些方面的限制)
  • 一般小程序仅支持从官方提供的公共模板库中选择【消息模板】
  • 一般小程序仅可支持发送“一次性订阅消息”,即“一次订阅,一次推送”
  • 目前仅公共服务类小程序可支持发送“长期订阅消息”,即“一次订阅,长期推送”

1、订阅消息能力

小程序订阅消息 | 微信开放文档

2、三种消息类型

由于长期订阅目前仅面向公共服务开放,如此我等普通小程序就只能选择一次性订阅了!

3、不支持自定义模板

1)自定义消息模板接口已废弃

2)不支持新建自定义模板

三、订阅消息的实现流程分析

1、实现步骤

小程序订阅消息 | 微信开放文档

2、完整流程

实现发送订阅消息,首先需要配置消息模板、获取小程序的appkey、secret、用户openid、token等,因此,从0到1的完整实现流程如下:

四、一次性订阅消息的实现及示例

1、配置消息模板+获取appid+secret

链接:微信公众平台

1)配置消息模板

2)获取appid + secret

2、登录认证并获取openid

小程序登录 | 微信开放文档

1)获取code

wx.login(Object object) | 微信开放文档

wx.login({success (res) {if (res.code) {//发起网络请求wx.request({url: 'https://example.com/onLogin',data: {code: res.code}})} else {console.log('登录失败!' + res.errMsg)}}
})

2)获取openid

auth.code2Session | 微信开放文档

GET https://api.weixin.qq.com/sns/jscode2session?appid=APPID&secret=SECRET&js_code=JSCODE&grant_type=authorization_code

3、订阅消息

wx.requestSubscribeMessage(Object object) | 微信开放文档

wx.requestSubscribeMessage({tmplIds: [''],success (res) { }
})

4、获取token

auth.getAccessToken | 微信开放文档

GET https://api.weixin.qq.com/cgi-bin/token?grant_type=client_credential&appid=APPID&secret=APPSECRET

5、发送订阅通知

subscribeMessage.send | 微信开放文档

POST https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=ACCESS_TOKEN
Accept: */*
Cache-Control: no-cache
Content-Type: application/json;charset=UTF-8{"touser": "OPENID","template_id": "TEMPLATE_ID","page": "index","miniprogram_state":"developer","lang":"zh_CN","data":{"character_string1":{"value":"FK20220819001"},"phrase2":{"value":"审批通过"},"time3":{"value":"2022年08月19日 15:01"},"thing4":{"value":"领导同意了"}}
}

注意:data数据的key与消息模板定义一致

6、示例

四、链接

微信公众平台

小程序订阅消息 | 微信开放文档

小程序登录 | 微信开放文档

wx.login(Object object) | 微信开放文档

auth.code2Session | 微信开放文档

wx.requestSubscribeMessage(Object object) | 微信开放文档

auth.getAccessToken | 微信开放文档

subscribeMessage.send | 微信开放文档

【小程序】一次关于小程序消息推送能力的分析及实现相关推荐

  1. Android之基于xmpp openfire smack开发之Android消息推送技术原理分析和实践[4]

    http://blog.csdn.net/shimiso/article/details/8156439 前面几篇给大家系统讲解的有关xmpp openfire smack asmack相关的技术和使 ...

  2. 千万级WebSocket消息推送服务技术分析

    拉模式和推模式区别 拉模式(定时轮询访问接口获取数据) 数据更新频率低,则大多数的数据请求时无效的 在线用户数量多,则服务端的查询负载很高 定时轮询拉取,无法满足时效性要求 推模式(向客户端进行数据的 ...

  3. 小程序消息推送及客服(JAVA后台)

    小程序客服及消息推送开发(后台JAVA) 最近公司在做小程序,涉及到客服及消息推送,简单的记录下开发过程及心得 客服 小程序自带的有客服功能只需要开启就行了. 选择开启后即可使用. 消息推送 首先在开 ...

  4. 消息推送技术干货:美团实时消息推送服务的技术演进之路

    本文由美团技术团队分享,作者"健午.佳猛.陆凯.冯江",原题"美团终端消息投递服务Pike的演进之路",有修订. 1.引言 传统意义上来说,实时消息推送通常都是 ...

  5. im即时通讯开发之后台应用保活、消息推送的噩梦

    Android P的最后一个开发者预览版(即DP5)已如期发布于2018年7月26日,根据上面这张发布路线图,相信Android P的正式版将很快到来.对于Andriod开发者来说,不管Andriod ...

  6. php 公众号队列推送,微信消息推送

    微信消息推送 微信公众平台和小程序虽然都是腾讯开发,但是其是俩个独立的平台,包括账号也是独立存在,所以小程序和公众平台不可以使用同一个账号注册使用. 因是俩个平台,所以微信公众平台的用户openId和 ...

  7. HMS Core地理围栏能力助你实现指定范围人群的精准消息推送

    精准推送是移动端产品留存阶段的主要运营手段,精准推送常常会与用户画像紧密结合,针对用户的喜好.画像,采用不同策略,但基于用户所属区域推送消息却很难实现.目前市面上大多数第三方消息推送服务商,在系统未深 ...

  8. Java之消息推送浅入浅出

    在日常开发中,消息推送是非常典型的业务需求,下面对消息推送简单的分析一下. 消息推送通常指网站的运营人员通过某种工具对用户当前网页或移动设备APP进行的主动消息推送.主要分为web端消息推送和移动端消 ...

  9. 消息推送——产品运营不可或缺的用户触达方式

      如何及时地告诉正在筹备旅游计划的用户,去往某地的机票有优惠活动?   如何快速准确地将NBA的最新动态告知到热爱篮球的用户? --   如何让你的用户觉得你更懂TA?--"推送" ...

最新文章

  1. THE世界大学排名发布:牛津大学蝉联榜首,清华大学亚洲第一
  2. CSV合规的矫枉过正
  3. Charles抓取微信小程序数据 以及 其它应用网站数据
  4. numpy学习4:NumPy基本操作
  5. tldr一个精简的man手册替代品
  6. JDK8-lambda表达式四种forEach性能对比
  7. ConcurrentHashMap的源码分析-transfer
  8. idea会抛出Unable to import maven project: See logs for details错误
  9. sqlmap使用_sqlmap于sql labs下使用
  10. Proliant server setup redhat7.1(DL560)
  11. windows 快捷调用
  12. PTA: 6-5 删除单链表偶数节点 (20 分)
  13. flutter 仿网易云音乐(1)
  14. 疫情下,嵌入式er该怎么进行职业规划,难点在哪?
  15. 模式识别技术是人工智能的基础技术,模式识别技术的发展潜力
  16. bak 安全牛 kali link
  17. spring boot验证码的实现
  18. springboot 过滤器
  19. U盘禁止写入/SD卡被禁用怎么解除
  20. [从头读历史] 第281节 始制文字 世界上的语系及语言

热门文章

  1. 充电管理芯片TP4056充电不转灯
  2. 我是一个叫world的单词,这是我的Hadoop WordCount之旅
  3. python如何利用scrapy爬取纵横小说三级链接内容并存储到数据库
  4. Java使用apache.http.client.fluent快速构建HTTP请求
  5. 全志A31编译环境搭建
  6. 网络安全--入侵阶段介绍
  7. 《Improving Deep Neural Networks》的理论知识点
  8. Python课程第一天_上午_课程笔记(硬件以及进制)
  9. matlab 悬架,基于MATLAB的汽车悬架仿真研究.doc
  10. sourcetree安装及使用教程