小程序·云开发的一大特色是可以免鉴权(access_token、session_key)使用微信开放接口,而对于近期模板消息改订阅消息的调整,小程序·云开发除了支持免 access_token 发送订阅消息外,还新增支持了在定时触发器中使用订阅消息的接口(以及其他微信开放接口)。
发送订阅消息
在云函数中可通过 wx-server-sdk 提供的 openapi.subscribeMessage.send 方法发送订阅消息。
1. 声明调用权限
假设我们使用云函数 test 来发送订阅消息,那么我们需要在test函数的目录下创建config.json文件,在permissions.openapi中添加一项subscribeMessage.send :{ "permissions": { "openapi": [ "subscribeMessage.send" ] }}
声明完成后,右键 config.json 选择更新权限配置、或者在云函数目录上右键上传云函数,都可以更新云函数的开放接口调用权限。
2. 调用发送接口
使用 wx-server-sdk 提供的 openapi.subscribeMessage.send 方法,即可发送订阅消息,这是一个最简的完整函数 JS 代码示例:
const cloud = require('wx-server-sdk')cloud.init()exports.main = async (event, context) => { try { const { OPENID } = cloud.getWXContext() const result = await cloud.openapi.subscribeMessage.send({ touser: OPENID, page: 'index', data: { number01: { value: '339208499' }, date01: { value: '2015年01月05日' }, site01: { value: '腾讯微信总部' }, site02: { value: '广州市海珠区新港中路397号' } }, templateId: '<模板 ID>' }) console.log(result) return result } catch (err) { console.log(err) return err }}
3. 在定时触发器中发送订阅消息
如果想要在用户没有正在使用着小程序的时候也能发送订阅消息,如在特定时间或特定状态时发送订阅消息,那么可以使用定时触发器,在定时触发器中检查当前状态,如果满足发送条件则对相应用户下发订阅消息。比如对航班助手类的小程序,可以周期性定时触发云函数,检查航班动态,对订阅了航班动态的用户下发新动态。
要配置定时触发器,注意需使用最新 Nightly 版开发者工具(1.02.1910182),然后在云函数目录下的 config.json 添加定时器配置字段:{ "permissions": { "openapi": [ "subscribeMessage.send" ] }, , // 触发器配置,每分钟触发一次 "triggers": [ { "name": "myTimer", "type": "timer", "config": "0 * * * * * *" } ]}
以上即是云开发为大家准备的订阅消息支持,对还不了解云开发的朋友,这里也提供了——
小程序·云开发入门介绍
小程序·云开发让开发者可以在开发微信小程序、小游戏的时候,无需搭建服务器,即可使用云端能力。云开发为开发者提供完整的原生云端支持和微信服务支持,弱化后端和运维概念,无需搭建服务器,使用平台提供的 API 进行核心业务开发,即可实现快速上线和迭代,同时这一能力,同开发者已经使用的云服务相互兼容,并不互斥。
云函数:无需自建服务器,即可在云端运行的代码,微信私有协议天然鉴权,开发者只需编写自身业务逻辑代码
云数据库:一个既可在小程序前端操作,也能在云函数中读写的 JSON 数据库
存储:在小程序前端/云函数端直接上传/下载云端文件,在云开发控制台可视化管理
云调用:基于云函数免鉴权使用小程序开放接口的能力,包括服务端调用、获取开放数据、接收微信消息回调等能力
除了以上新增的订阅消息支持外,小程序·云开发近期还有以下更新:
- 实时数据推送:可用于多人协作、状态同步等场景的实时监听数据库数据变化的能力
- 新增数据库指令:新增 15 个数据库指令,可完成更丰富的查询更新操作;同时更新push 指令,支持往数组指定位置插入多个元素,甚至包括插入后排序和截断
- 联表查询:数据库聚合能力新增 lookup 聚合阶段,可进行联表查询
关于「小程序·云开发」你还有什么想法或建议,欢迎访问「微信开放社区」与我们一起讨论(PC端可发帖):
微信开放社区欢迎来到微信开放社区小程序