主要参考下面两个文章
1、云函数接收公众号消息推送 | 微信开放社区
2、微信小程序通过公众号(服务号)推送通知或提醒步骤及代码(一,获取推送前所需信息)_微信小程序推送服务通知_庆登登登的博客-CSDN博客
一些基本的概念就不讲了,这里主要讲下步骤和我踩得坑
基础要求是:
1、同主体认证过的服务号、小程序,把这俩绑定到同一个微信开放平台,这里仅仅是为了拿到unionid。
2、服务号要申请好模板
核心逻辑是:下面这张图
1、把环境共享给公众号,然后添加消息推送(消息事件:subscribe_and_unsubscribe),就可以在用户关注服务号的时候在配置的云函数里获得用户的unionid。
2、然后把用户的unionid、公众号的openid、小程序的openid,存到数据库,就形成了对应关系。
3、推送模板消息就是想给哪个公众号用户推送,就在数据库中通过unionid获得公众号用户的openid。给他推送就完事了。
步骤细节和坑
1、共享环境和添加消息推送是需要从“公众号网页”进入配置的,我一开始直接从外层的“云开发”进去,没有审题很浪费时间
2、共享环境+添加消息推送给,只要第1步对了,没有什么坑
3、在云函数里获得unionid。
这里有个坑,就是我一直以为云函数的event里就会包含unionid,但试了好久只返回openid,老觉得是不是我绑错了,后面看了文档 在公众号中使用云开发 | 微信开放文档,发现可以通过cloud.getWXContext()来获得
4、这里已经拿到用户的unionid和公众号的openid,那就存起来就行了,跟小程序的openid存一起。
5、根据小程序的业务,需要给某个公众号用户推送消息,那就从表里找到该用户的公众号openid,推送即可。
推送方法参考下面的文档,基本上示例直接copy过来,改成你自己的参数即可推送成功!
下发统一消息 | 微信开放文档