前言
国庆节前夕,被同事突然Q到:“咱们的公众号消息推送是不是要修改?”,我一脸茫然,紧接着,他直接甩给我一个链接,我打开后一看。一瞬间愉快的心情完全被打乱了。
但是,不要慌,没什么大不了的,大不了国庆节三倍工资加班干完,哈哈哈...
这是一件什么事情呢,看下图:
意思就是说:之前使用“微信公众号下发统一消息接口”的服务不让你用了,你需要换一种方式来实现它,微信官方还给出了适配指引!
看到这里,我只想说,wechat,你可以,仗势欺人是不?你考虑广大开发者了吗?你考虑广大的用户体验了吗?还声称是为了优化多个同一功能接口对开发者造成困扰?你这是专门给广大开发者造成困扰!
进入正题
以上也就是发发牢骚,我们毕竟是渺小的开发者,三言两语击不起几个浪花,懒得理我们。
牢骚发完,我们是不是该考虑一下如何适配了?毕竟国庆节还真不想加班!(内心深处:8天假呢,可怎么耍啊?)
时间线
微信团队是8月22日发出的消息,说在9月20日起将不能使用该功能,但是我发现的时候已经是9月25日了,但是我们的推送消息依然可以使用(有点奇怪),说明还没有完全切换,可能考虑到我们的用户量比较大的原因?算了,不管这个了。
如何做
紧接着,我仔细的研读了一下微信的这个文档,思考了一番,无非就是两种方案:
-
彻底改正
-
还能救一下
方案一:彻底改正?
其实我是倾向于彻底改正的,因为这样是最保险的方式,因为它是标准的推送功能。那就是标准化使用公众号模版消息接口,下面是重要的步骤:
-
重新写个微信公众号 h5 页面,授权获取 jscode,再来换取公众号 openid。
-
使用 openid 按照文档下发微信公众号模版消息。
方案二:还能救一下?
这种方案其实就是一个不想改的方案,虽然有自己的好处,但是不好的地方太大了,稍后再说,先说一下步骤:
准备工作
-
必须有一个微信开放平台(需要收费,记得是300元?感觉就是为了 money)。
-
小程序与公众号同一主体。
-
小程序和公众号和微信开放平台关联。
实现步骤
准备好以上的工作后,可以进行曲折的适配工作了
-
由于小程序和公众号都关联了微信开放平台,我们再次使用小程序微信登录时会多返回一个 unionid,通过这个 unionid 做关联。
-
获取微信公众号的关注列表,可以批量拿到关注人的 openid。
-
使用小程序 openid 通过 unionid 拿到对应的公众号的 openid,确认是同一个人。
-
使用公众号 openid 按照文档下发微信公众号模版消息。
唉,真费劲,翻来覆去的最终还是拿到公众号openid下发模版消息,这方式真是够曲折的!!!
唯一性说明:
同一个用户,在同主体的小程序和公众号下,会有各自的 openid ,不相同,不能混用。
同一个用户,在同主体的小程序、公众号等下面只有 1 个 unionid,有多个 公众号openid 和多个小程序openid 。 unionid 是同主体应用下唯一身份证,可以查询对应的公众号openid和小程序openid。因此,unionid 的覆盖率是最高的。
当用户关注公众号,浏览公众号下面H5时,可以同时获取 unionid、公众号openid。而浏览小程序时,可以同时获取小程序 unionid、openid。不管哪种操作都能拿到 unionid。
在单个小程序或公众号里,openid 是唯一的。当同一个小程序主体下有多个小程序时,每个小程序有自己的 openid,因此需要 unionid 进行唯一身份标识,即:unionid 是同个主体下不同小程序的用户唯一标识。
着手实现
以上两种方案都给整的明白的,那就开始着手实现吧!
虽然上述方案是有了,但是有一个问题,两种都有它各自的优缺点!
彻底改正的方案
-
费时费力,几天时间完不成,前后端需重写,测试需要重测,bug不可预测。
-
就算完成了,需要用户重新绑定,谈何用户体验?
还能救一下方案
-
前端不用重写,后端需要改造,工作量不大,可以完成?
-
还是需要用户重新绑定,也无用户体验。
-
其实就是野路子,实现不标准,后面肯定需要重构。
等等,我有一个更好的方式,可以让你安稳的度过中秋国庆双节假期!
结语
以上就是双节前夕发生的一些趣味事情,那么接下来我会将两种方式的具体实现都会和大家探讨一下,敬请期待!
对于微信平台8月22日发布的“小程序与公众号下发统一消息接口调整通知”,你是怎么看的?可以评论区“发泄”一下。如果你有更好的方案,欢迎联系我,我们共同探讨一下。