关于小游戏订阅消息的解读
- 2019 年 10 月 6 日
- 筆記
最近有点忙,更新慢了,今天随机解读一个小游戏的新特性。

相信不少同学已经收到小游戏“订阅消息能力”的内测邀请了,这个能力简而言之就是:
让小游戏能给用户发服务通知。
整个部署过程很简单,但实现的效果却是很重要,未来可以实现诸如“排名下降提醒”、“体力恢复提醒”、“活动开启通知”、“任务完成提醒”等一系列有助于回流的功能,显然能为小游戏提高留存。
所以花叔专门做了一个技术demo,研究了它的具体用法,完整的演示视频在这里:
接下来本文主要介绍一下它的应用场景、使用条件和使用方法。
应用场景:
该特性由两项功能组成,分别是“消息订阅”以及“消息发送”功能,可用于各种游戏功能的提醒,但仅限于用户主动触发的订阅场景。

使用条件:
1.需用户主动点击游戏内某按钮或元素进行订阅
2.订阅提示框样式无法自定义
3.只能用官方给定的通知模板
使用方法:
1. 进入mp后台,开通“订阅消息”功能(目前在灰度测试,部分小游戏的mp后台还看不到这个菜单项)。点击菜单栏左侧菜单中“功能”栏目下的“订阅消息”:

按照提示,选择行业栏目进行开通

2. 开通成功后,可以开始选择并制作模板。
具体步骤如下:
首先在模板库中选用现成的订阅模板(目前貌似还没法申请自定义模板),

点击“选用”后,可以配置模板要出现的内容:

订阅模板制作完毕(不能修改)后,会得到一个模板ID

3. 在小游戏页面中给元素定义touchend事件(不能直接调用,需要在用户的触摸结束行为的回调中调用),在事件中执行以下代码:

关键代码:
wx.requestSubscribeMessage({ tmplIds: [id],//刚申请的订阅模板id success(res) { // res{ // errMsg: "requestSubscribeMessage:ok", // zun-LzcQyW-edafCVvzPkK4de2Rllr1fFpw2A_x0oXE: 'accept' // EXo0x_A2wpFf1rllR2ed4KkPzvVCfade-WyQczL-nuz: 'reject' // } if (res[id] == 'accept') { //用户同意了订阅 wx.showToast({ title: '订阅成功' }) } else { //用户拒绝了订阅或当前游戏被禁用订阅消息 wx.showToast({ title: '订阅失败' }) } }, fail(res) { console.log(res) }, complete(res) { console.log(res) } })
页面上点击该元素的时候会弹出系统的默认弹框:

4.只要用户点击了“允许”,那么开发者在服务端调用官方的“消息发送”接口代码
wx.request({ url: 'https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=' + token, method: 'post', data: { "touser": "oQJaf4t9ckXHDJprWcsolMcPUYks", "template_id": id, "page": "index", "data": { "number2": { "value": "1" }, "number3": { "value": "2" }, "date4": { "value": "2019年09月18日" } } }, success(e){ console.log(e) } })
代码执行后,微信聊天框就会收到一个服务通知,点击该服务通知可再次回到小游戏中

至此,那就能实现小游戏的消息推送功能了,整个过程很简单,相信这个功能很快就会出现在各大小游戏中。