消息能力是小程序能力中的重要组成,可以通过订阅消息召回用户,实现功能的闭环和更优的服务体验。

微信小程序实现订阅信息功能_javascript

1 功能介绍

订阅消息包括两种

1 一次性订阅消息

一次性订阅消息用于解决用户使用小程序后,后续服务环节的通知问题。用户自主订阅后,开发者可不限时间地下发一条对应的服务消息;每条消息可单独订阅或退订。

2 长期订阅消息

一次性订阅消息可满足小程序的大部分服务场景需求,但线下公共服务领域存在一次性订阅无法满足的场景,如航班延误,需根据航班实时动态来多次发送消息提醒。为便于服务,我们提供了长期性订阅消息,用户订阅一次后,开发者可长期下发多条消息。

目前长期性订阅消息仅向政务民生、医疗、交通、金融、教育等线下公共服务开放,后期将逐步支持到其他线下公共服务业务。所以这里我们演示的是一次性订阅。

2使用说明

1 获取模板 ID

在微信公众平台手动配置获取模板 ID:
登录 https://mp.weixin.qq.com 获取模板,如果没有合适的模板,可以申请添加新模板,审核通过后可使用。

微信小程序实现订阅信息功能_小程序_02

微信小程序实现订阅信息功能_小程序_03

2 配置前端代码

在我们要获取下发权限的页面js中,增加下发权限。首先配置模版ID

data: {
  tmplIds:['GD1lDU67hQfBRWaPWMviVd44HOOgpiSw76H45AGsOCw','BUER-P_yrzo5qnRvqomZS4WRciNggW217MFp7f4I3MA'],
},

这个模版ID后续需要用到,先定义获取用户的当前设置,返回值中只会出现小程序已经向用户请求过的权限。

 // 检测是否开启  更新提示
testingTap: function () {
let that = this;
wx.getSetting({
withSubscriptions: true,
success(res) {
if (res.subscriptionsSetting.mainSwitch) {
if (res.subscriptionsSetting.itemSettings != null) {
let item = res.subscriptionsSetting.itemSettings.GD1lDU67hQfBRWaPWMviVd44HOOgpiSw76H45AGsOCw
if (item == "reject") {
console.log("拒绝订阅")
} else if (item == "accept") {
console.log("开启订阅")
}
}
} else {
console.log("订阅消息未开启")
}
}
})
},

打印日志的这几个地方可以编写自己的逻辑,上面代码只是检查,没有让用户选择,下面代码就是获取用户下发

//授权
subTap: function () {
let that = this;
wx.requestSubscribeMessage({
tmplIds: that.data.tmplIds,
success(res) {
console.log(res)
},
fail(res) {
console.log(res)
}
})
},

方法已写完,我们页面加上调用即可

<button bindtap="subTap">允许订阅消息</button>

这只是个演示,subtop方法可以在任何时候调用。

3 服务端下发消息

服务端调用api下发消息,

微信小程序实现订阅信息功能_javascript_04

至此,一个完整的流程已完成。