# 公众号/小程序推送

# 1.查询微信粉丝数目和接口调用次数

可以在【微信公众平台(https://mp.weixin.qq.com/ (opens new window))】中的【管理】-【用户管理】里查询粉丝数目,在【开发】-【接口权限】里查询每日接口调用次数限制

dock

# 2.如何拿到公众号的 OPENID 及 UNIONID

# 1.首先将公众号-小程序全部绑定在同一个开放平台下

微信开放平台地址:open.weixin.qq.com

# 2.获取 A 公众号的所有粉丝的 OPENID 存入数据库表中(每日 500 次,一次一万)【无后台的公众号,如果之前有存对应信息可以不用此步骤】

【问题】如果公众号以后不使用后台存储用户信息,以后不是要每天都去调接口去获取用户列表?

接口:https://developers.weixin.qq.com/doc/offiaccount/User_Management/Getting_a_User_List.html (opens new window)

当公众号关注者数量超过 10000 时,可通过填写 next_openid 的值,从而多次拉取列表的方式来满足需求。

# 3.根据OPENID获取对应的UNIONID更新数据库表(每日500000次)

接口:https://developers.weixin.qq.com/doc/offiaccount/User_Management/Get_users_basic_information_UnionID.html#UinonId (opens new window)

可以单个获取,可以批量:最多支持一次拉取 100 条。

可以根据 OPENID 拿到用户是否关注公众号,以及绑定了开放平台可以拿到 unionid 字段

# 4.另一个公众号即可根据UNIONID查询数据库表拿到另一个公众号的OPENID

# 5.小程序 UnionID 获取途径:

绑定了开发者帐号的小程序,可以通过以下途径获取 UnionID。

  1. 调用接口wx.getUserInfo (opens new window),从解密数据中获取 UnionID。注意本接口需要用户授权,请开发者妥善处理用户拒绝授权后的情况。
  2. 如果开发者帐号下存在同主体的公众号,并且该用户已经关注了该公众号。开发者可以直接通过wx.login (opens new window)+code2Session获取到该用户 UnionID,无须用户再次授权。
  3. 如果开发者帐号下存在同主体的公众号或移动应用,并且该用户已经授权登录过该公众号或移动应用。开发者也可以直接通过wx.login (opens new window)+code2Session获取到该用户 UnionID,无须用户再次授权。
  4. 用户在小程序(暂不支持小游戏)中支付完成后,开发者可以直接通过getPaidUnionId接口获取该用户的 UnionID,无需用户授权。注意:本接口仅在用户支付完成后的 5 分钟内有效,请开发者妥善处理。
  5. 小程序端调用云函数 (opens new window)时,如果开发者帐号下存在同主体的公众号,并且该用户已经关注了该公众号,可在云函数中通过cloud.getWXContext (opens new window)获取 UnionID。
  6. 小程序端调用云函数 (opens new window)时,如果开发者帐号下存在同主体的公众号或移动应用,并且该用户已经授权登录过该公众号或移动应用,也可在云函数中通过cloud.getWXContext (opens new window)获取 UnionID

# 3.公众号推送模板消息

需要模板 ID,接收人 OPENID

https://developers.weixin.qq.com/doc/offiaccount/Message_Management/Template_Message_Interface.html (opens new window)

# 4.小程序推送订阅消息

https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/subscribe-message.html (opens new window)

# 步骤一:获取模板 ID

在微信公众平台手动配置获取模板 ID:

登录https://mp.weixin.qq.com (opens new window)获取模板,如果没有合适的模板,可以申请添加新模板,审核通过后可使用。

# 步骤二:获取下发权限

详见小程序端消息订阅接口https://developers.weixin.qq.com/miniprogram/dev/api/open-api/subscribe-message/wx.requestSubscribeMessage.html (opens new window)

# 步骤三:调用接口下发订阅消息

详见服务端消息发送接口subscribeMessage.send (opens new window)

# 注意事项

  • 用户勾选 “总是保持以上选择,不再询问” 之后,下次订阅调用 wx.requestSubscribeMessage 不会弹窗,保持之前的选择,修改选择需要打开小程序设置进行修改。

# 5.小程序统一公共消息(使用小程序给公众号发送消息)可以不用拿到公众号的 OPENID,要求与小程序有绑定且同主体

调用这个接口的前提是公众号和小程序有绑定且是同主体的

登录公众号后台 -> 小程序 -> 小程序管理 -> 添加即可绑定小程序

因为实质上还是发的公众号模板消息,所以还是要在公众号后台添加消息模板获取模板 id

https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/uniform-message/uniformMessage.send.html (opens new window)

这个接口可以发送公众号或者小程序的消息。之前大家都知道,我们用小程序发送消息,有小程序的 api 接口,如果是发送公众号的消息,就有公众号的模板消息接口。

access_token 小程序的 access_token   这个一定要用小程序的 accesstoken,不能使用公众号的,因为这个接口的初衷就是想大家在开发小程序的时候,如果要发送公众号消息直接使用这个接口就可以了,无需再去调用公众号的模板消息接口

touser 用户 openid,可以是小程序的 openid,也可以是 mp_template_msg.appid 对应的公众号的 openid

这个使用公众号的 openid 或者小程序的 openid 都可以的微信官方会自动关联。其实大家的使用场景大部分还是在小程序,所以这里你就直接用小程序里抓到的 openid 就可以了。

mp_template_msg.appid 公众号 appid,要求与小程序有绑定且同主体      这个大家要仔细读官方的说明哦,就是这公众号和小程序要相互关联了,且必须是同主体才行。不然也会调试不通过的。