微信订阅消息的基础知识:
微信订阅消息分为一次性订阅和长期订阅
1、一次性订阅就是要用户点击一次触发订阅,服务端才能发送一次信息。点击多少次就能发送多少次。
2、长期订阅。服务端可以无限,但是教育、交通、医疗等行业才有长期订阅。
用户对小程序订阅权限的开关有两个开关,设置操作如下
点击小程序右上角的三个点,在弹出窗中找到设置。
点通知管理,可以看到【接收通知】这里是一个通知的总开关,下面是小程序相关具体提醒的开关
进点去可以看到【消息提醒】的开关。
微信小程序代码实现订阅
下面主要是实现一次性订阅消息的代码:
wxml文件
<button type="primary" bindtap="subscribeMessage">订阅提醒</button>
获取模版id
订阅消息发送消息时需要用到模板id.
开发者需要登录小程序管理后台 ,在「功能-订阅消息-公共模版库-一次性订阅」中查询可以申请的模板,审核通过后可使用。
模版有对应类目要求,符合类目要求的小程序可在公共模版库优先看到新版模版。
类目需要搜合适的模板
勾选需要的字段
提交
这里注意一下模板是和目录相关联的,如果选择不到可能是因为类目没有添加备忘录,要去增加一下。
js文件
加入订阅消息代码:wx.requestSubscribeMessage(Object object)
//授权订阅提醒
subscribeMessage(){
console.info('订阅消息!!!');
let tmplId ='LGpkXsxxxxPFE02z6Oxxxxv_eez0xxxxego';
wx.requestSubscribeMessage({
tmplIds: [tmplId],
success (res) {
if(res[tmplId]=='accept'){//如果点击允许
wx.showToast({
title: '订阅成功',
})
}
}
})
}
效果点击出现订阅效果
判断订阅消息是否已经订阅
let id = 'LGpkXsQ396mr-xxxxxxxxxx6Ovd5w4v_eez0pYoQego'
wx.getSetting({
withSubscriptions: true,
success(res) {
debugger
console.log(res)
if (res.subscriptionsSetting.mainSwitch) { // 用户打开了订阅消息总开关
if (res.subscriptionsSetting.itemSettings) { // 用户同意总是保持是否推送消息的选择, 这里表示以后不会再拉起推送消息的授权
let moIdState = res.subscriptionsSetting.itemSettings[id]; // 用户同意的消息模板id
if (moIdState === 'accept') {
wx.requestSubscribeMessage({
tmplIds: ['LGpkXsQ396mr-xxxxxxxxxx6Ovd5w4v_eez0pYoQego'],
success(res) {
wx.showToast({
title: '不会再拉起推送消息的授权,订阅成功',
})
},
})
} else if (moIdState === 'reject') {
console.log('拒绝了消息推送');
wx.showToast({
title: '拒绝了消息推送',
});
wx.openSetting({
withSubscriptions: true,
});
} else if (moIdState === 'ban') {
wx.showToast({
title: '已被后台封禁',
})
}
} else {
wx.requestSubscribeMessage({
tmplIds: ['LGpkXsQ396mr-xxxxxxxxxx6Ovd5w4v_eez0pYoQego'],
success(res) {
wx.showToast({
title: '订阅成功',
})
},
})
}
} else {
wx.openSetting({
withSubscriptions: true,
})
}
}
})
到这里微信前端发起的一次性订阅就完成了。后端只发送消息推送就微信用户就可以收到订阅消息,后端代码实现将在以后发出来,谢谢阅读!~
最近做的一个排班的小程序,需要的可以用一用看看。不需要的就当帮我加一下热度啦,谢谢,^_^ !~