说一说微信活码
# 什么是活码
活码
对一个分配的短网址进行编码生成二维码。生成后可以随时修改内容,二维码图案不变,可跟踪扫描统计,支持存储大量文字、图片、文件、音视、视频等内容,同时图案简单易扫。
微信活码就是动态的微信二维码了(主要是群聊二维码)
# 为什么需要?
在微信生态中我们的公众号、微信群、微信号中默认使用的是静态的二维码,通过此二维码可以关注公众号,进入微信群等。但是微信群的二维码会有七天过期的问题。
这个其实主要是解决二维码过期问题。
# 原理简述
1.对外公开一个固定的二维码,二维码解析出来的 url 是固定死的,对应的是一个固定的网页链接,而不是真正的微信群聊二维码
ps:使用草料二维码对微信群聊二维码进行解码我们会得到类似如下格式的地址(g 字母以后部分是群聊对应的一串编码)
2.这个固定的网页链接打开之后,里面显示的二维码则是真正的微信群聊二维码。
3.可以假定如果二维码的显示超过200次(群聊200人扫码进群上限),则表示微信群已经满人需要显示另外一个二维码。
# 加强
因为用户首先打开的是我们自己的页面,所以可以增加很多自定义功能
可以根据客户端用户代理(user-agent)区分用户
- 根据终端设备类型做分流区分不同设备的用户
- 根据 IP 区分显示,分流不同地区的用户
# 优缺点
优点:
- 部分解决7天过期问题
- 自定义导流
缺点:
- 用户需要两次跳转,流程变长
- 扫码加群成功没有回调,无法确定用户是否真的进群
- 没满人的二维码最终还是会过期,需手动维护
- 满人后无法解决加群问题
# 简易实现
本站的技术交流群二维码就是一个简易活码,下面大概介绍下实现过程。
主要基于 koa + 云开发 + 测试公众号(都是免费的)进行实现:
- 云开发的云数据库中新建记录用于存放二维码的更新(上传)时间及是否发送过二维码过期提醒
- 测试公众号新建一个模板消用于提醒群主二维码将过期
- 基于 koa 实现一个静态服务器展示一个中间页(用于跳转显示群聊二维码)。
- 中间页内部使用插件以群聊二维码的 url 作为参数生成二维码并展示。
- 静态服务器提供一个上传页面,打开后可以直接进行群聊二维码的上传。
- 上传成功之后会把上传时间更新到云数据库中,并把提醒状态置为 false (未提醒)
- 云开发中新建一个云函数用于检查二维码是否将要过期,要过期就发送模板消息提醒群主并把云数据库中的发送记录置为 true (已提醒)
- 模板消息中的 url 可设置为二维码的上传页面,这样收到提醒之后保存新的二维码即可点击模板消息进行新二维码的上传
- 云开发的云函数设置一个定时触发器,例如定为每天 10 点检查
至此一个简易实现就完成了,然后就可以在过期前收到测试公众号发来的过期提醒模板消息了。