好久没写博客了,记录下最近的开发过程,
微信小程序的服务通知,以及如何实现两个小程序之间的通知(A小程序进行操作后在通知到B小程序的用户,需要用到公众号)
今年年初的时候微信将通知消息改为了一次性订阅消息,这也就意味着我们之前用到的收集formid存储进行消息下发的方式被彻底堵死,
当然你可以去申请长期模板,也就是用户同意一次就可以无限下发消息的模板,但是这个申请难度有点大。。。。这里就不说了,
要实现的功能A小程序操作—>B小程序的用户收到消息
说下思路,因为公众号对于已关注用户的消息下发是没有限制的,那可不可以用公众号给下发呢,
https:///zhuzhezhuzhe1/article/details/83927016 (公众号下发消息模板)
那如何确定A小程序操作后我下发的是B小程序的用户的公众号呢,
下发模板消息需要用到的核心属性是openid,而openid在你单独的小程序(公众号)是唯一的,但是在别的小程序就会变化,
就是说在A小程序a用户的openid和在B小程序a用户的openid是不一样的,但是他们在这两个小程序中又是不变的,公众号也是一样,
我们需要在微信开放平台 https://open.weixin.qq.com/
注册一个主体,申请开发者资质需要300块大洋。
在申请通过后在这个主体中加入你的项目们,当你把两个小程序和一个公众号加入到你这个主体的时候你的每个用户虽然在不同的项目中的openid不同,但是会获得一个相同的unionid
https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/union-id.html(unionid机制)
关联产生了,那什么时候在数据库存储这个openid和unionid呢,
我们需要的是B小程序的unionid和openid,公众号关注用户的unionid和openid,
首先在进入B小程序的登录接口存储openid和unionid至数据库(如果你在微信开放平台完成了上述步骤登录接口才会有unionid返回)
新建一个表在公众号的事件回调中获取关注事件存储关注的人的openid和unionid
https://developers.weixin.qq.com/doc/offiaccount/Message_Management/Receiving_event_pushes.html(公众号的关注和取关消息推送)
这样准备工作就做好了,
在A小程序需要给B小程序用户下发消息时获取B小程序用户的id(你数据库中的用户表中唯一标识)
然后根据这个id去查这个用户的unionid(在B用户第一次登录时进行过存储)
用这个unionid去找公众号的unionid查询是否有相同的,
有相同的以后再根据找到的公众号unionid去查公众号的openid
找到openid后进行消息下发。看起来很绕,但是熟悉后也就是一个存储倒推的过程。
记录一下思路,文中提到的技术点百度都能搜到。