前面说过了,小程序订阅消息的前提是需要根据小程序的类目选择消息模版,拿到模版ID。
先贴用户授权消息唤起的代码:
tosubscribe() {
//触发订阅消息,此处模板ID要与后端同步
uni.requestSubscribeMessage({
tmplIds: [
//这里是从小程序后台获取的模版ID
],
success(res) {
console.log('成功')
},
fail(res) {
console.log('失败')
},
complete(res) {
// 授权不管成功还是取消、失败都跳转
uni.reLaunch({
url: '/pages/index/index'
})
}
})
},
这里用到的api是uni.requestSubscribeMessage
,可以发起订阅授权申请,如果有多个消息模版,就要把多个模版ID都放到tmplIds
里,这时用户界面显示的将是多个需要用户同意的模版消息选项。这里我把授权申请放到了一个方法里,然后在添加物品完成的时候调用。
注意,官方的说法是用户发生点击行为或者发起支付回调后,才可以调起订阅消息界面,非支付回调有可能无法唤起,普通的请求回调也将无法唤起,经过我测试,不是无法唤起,是经常会唤起失败,有时候微信开发工具和真机调试也会有差异。
用户的点击事件代码:
add(){
// 点击保存按钮
var _this = this
var rule = [{
name: "name",
checkType: "string",
checkRule: "2,8",
errorMsg: "商品名称应为2-8个字"
},
{
name: "id",
checkType: "reg",
checkRule: "^[1-9][0-9]*$",
errorMsg: "请选择商品分类"
}
];
var checkRes = graceChecker.check(_this.data, rule);
if (checkRes) {
//本地验证通过,添加操作
let url = 添加接口
_this.uploadpic(url) //数据保存方法
// 仅添加物品时发起用户订阅消息授权
// 注意用户授权需要主动触发,丢到回调里面有可能会失败
_this.tosubscribe()
//这里把授权放到数据保存的后面,然后把跳转丢到tosubscribe里面,不管成功与否都跳
} else {
uni.showToast({
title: graceChecker.error,
icon: "none",
duration: 1000
})
}
}
到这里订阅消息的前端部分完成了,明天写后端部分。