微信官方:小程序模板消息接口将于 2020 年 1 月 10 日下线,开发者可使用订阅消息功能
原来的 templateMessage.send 要替换为 subscribeMessage.send
云调用 subscribeMessage.send 要在 config.json 中配置 subscribeMessage.send API 的权限,并且上传云函数。
subscribeMessage.send 调用前必须先调用 wx.requestSubscribeMessage 请求用户同意订阅消息成功后才能顺利执行。
templateMessage.send 必须的参数中 formId 在 subscribeMessage.send 已经不需要了, 并且 wx.requestSubscribeMessage 成功的执行只有两个场景。分别是:一、用户点击行为。 二、发起支付回调后。(注:一定要注意用户点击是直接触发的,promise 和 await 后都会导致不执行)
不多说直接上代码
微信端:
onSend() {
wx.requestSubscribeMessage({
tmplIds: ['微信小程序后台配置的订阅消息模板id'],
// 成功的回调
success: (res) => {
// 调用后台,这里用的是云开发
wx.cloud.callFunction({
name: 'sendMessage',
data: {}
}).then(res => {
console.log(res)
})
}
})
}
云函数:
const cloud = require("wx-server-sdk")
cloud.init()
exports.main = async (event, context) => {
const getWXContext = cloud.getWXContext()
try {
const result = await cloud.openapi.subscribeMessage.send({
touser: getWXContext.OPENID,
// 同样是模板的id,但是不同于微信端 requestSubscribeMessage 的是数组,这里只能填一个string
templateId: "微信小程序后台配置的订阅消息模板id",
// 推送到的消息跳转小程序的页面
page: `index`,
// 生成模板中的参数
data: {
// 这里的 key1, key2 必须按订阅的消息模板中详细内容的返回字段写
key1: {
value: event.createTime
},
key2: {
value: event.content
}
}
})
return result
} catch (err) {
console.log(err)
return err
}
}