微信小程序 推送公众号消息
小程序推送微信公众号消息
因为目前小程序 已经逐渐关闭 用户自主接收消息的这种模式,如果你不是 教育,政府,交通这种的小程序 用小程序直接推送消息 的时候用户必须 点击一个 按钮才能收到消息,这里 并不是点一次就可以,发一条消息 用户要同意一次的 ,所以 就要用小程序推送微信公众号消息,这里有个前提就是用户必须关注公众号,否则就收不到了
推送步骤主要分为以下几步
1:要有微信开放平台,因为小程序和公众号 是2套系统 他们的openid是不一样的 ,要通过微信开放平台把他们绑定在一起 获取到unioId 这里要注意的是 绑定了 还要关联,一定要把小程序 和公众号关联起来
2:新建一张表 tableB 储存 小程序的openid,公众号openid,unionid,关注时间,当用户关注公众号的时候 通过微信回调事件调取你的API 给这个表插入数据
3:我们的情况是这样的 我们客户最开始接入的是公众号 ,我们有一张会员表 每个会员都有对应的公众号的AppId 和OpenId,然后 客户突然要做小程序了 要把主入口 从公众号换成小程序,然后我们首先想到的就是 给会员表加一列unionid,那么我们就要用到API https://api.weixin.qq.com/sns/jscode2session?appid={0}&secret={1}&grant_type=authorization_code&js_code={2}因为本来也用到了 因为要用他获取用户的openid,但是用这个API 有2个 必须的前提条件 那就是 客户要有微信开放平台,而且在这个平台下 小程序要和公众号关联起来,否则你拿不到unionid,但是微信开放平台要打款300块钱,所以客户不愿意 那么我们就给会员表又加了2个字段 小程序的Appid 和openid,然后会员可以用小程序的openid获取到了,然后前台 把公众号改为小程序 上线了,那推送消息 是往后延期的,因为先功能 ,但是推送消息 就遇到问题了因为 小程序 用户接收消息 必须要点一个同意按钮 才能接收到 ,就是我每发一条消息都用户要点一次接收按钮,放你 你肯定不愿意的,然后就找到了 小程序消息推送消息到微信公众号里面去 ,那又绕回原来的了 继续要Unionid
4:绑定用户的unionid:有2部分构成 ,1:当用户注册绑定的时候 小程序传过来手机号和 unionid 我们给会员绑定,
2:对应那种已经用过小程序 已经绑定过的人 那就在获取用户信息API 里去绑定 打开小程序必定要获取用户信息 那这时候 小程序把unionid传给我们 我们来绑定,
5:那么现在面临一个问题 就是主入口是小程序 ,公众号的openid怎么获取了 也要分2步,
1:客户想办法让用户关注公众号,当关注公众号的时候 会触发微信回调事件 回调你的API 然后你给 储存 到tableB 这个回调设置是在 微信设置里面 去填你的回调url,url端口必须是80 而且会生成一个token这个token你要保存到你这边来,然后当你保存的时候 他要回调你的API的 会去验证你的token 如果你没有 你是保存不了的 ,这里还坑就是 如果你的微信公众号有 菜单,而且原来是用手动设置的 那你就要掉微信的API 去传入你的菜单json去生成菜单了 因为你打开了回调API 那么腾讯就认为你有自主开发的能力,否则你的菜单就会消失,那如果说 你有点击菜单 显示一张图片的 那你首先就需要 把图片上传到微信的临时图片里,然后拿到你的MediaId,如何拿到MediaId了(用post或者其他API请求工具 请求https://api.weixin.qq.com/cgi-bin/material/batchget_material?access_token=ACCESS_TOKEN API 换上你目前的token,基本第一个 就是你要的MediaId了) 菜单点击发送图片Event(CLICK),当你的回调API 通了后 你就要去对微信的回调事件(Event(subscribe,unsubscribe)),
2:对于已经关注过公众号的 你就要全部拉取下来 然后根据微信公众号的openid去获取 这些用户的 unionid保存到tableB表中
获取微信公众号关注人列表官方文档URL:https://developers.weixin.qq.com/doc/offiaccount/User_Management/Getting_a_User_List.html
根据 微信公众号openid获取unionid 的官方文档:https://developers.weixin.qq.com/doc/offiaccount/User_Management/Get_users_basic_information_UnionID.html#UinonId
涉及到的用到的url:
1: UnionID机制说明: https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/union-id.html
2:获取关注公众号的用户列表:https://developers.weixin.qq.com/doc/offiaccount/User_Management/Getting_a_User_List.html
3:前人的小程序推送公众号消息的文章:https://blog.csdn.net/qq_39687901/article/details/85243514
https://blog.csdn.net/qq_31426247/article/details/82190761