1.小程序模板消息能力调整通知
原有的小程序模板消息接口将于2020年1月10日下线,请各位开发者注意及时调整接口
接口开发可参考文档:小程序订阅消息,请戳我
小程序端消息订阅接口 wx.requestSubscribeMessage
2.小程序订阅弹窗参考
只要用户点击了总是以上选择,不再询问,那么后续就再也调不起此类(有不同消息推送类型)消息推送的弹窗了,就会出现两种情况,允许或者拒绝
3.消息订阅代码参考
const subscribeMessage = code => {
if (wx.requestSubscribeMessage) {
return new Promise((resolve, reject) => {
wx.requestSubscribeMessage({
tmplIds: code,
success: res => {
let {
errMsg,
...data
} = res;
let Array = Object.entries(data)
let accept = Array.filter(e => e[1] == 'accept').map(item => item[0])
let reject = Array.filter(e => e[1] == 'reject').map(item => item[0])
let ban = Array.filter(e => e[1] == 'ban').map(item => item[0])
if(!accept.length&&reject.length){//全部拒绝
msg('你取消了订阅消息授权,将不会收到通知')
}
resolve({
accept,
reject,
ban,
})
},
fail: err => {
if (err.errCode == 20004) {
authModel('你关闭了订阅消息开关,需要您重新开启')
}
reject(err)
}
})
})
} else {
wx.showModal({
title: '提示',
content: '当前微信版本过低,无法使用该功能,请升级到最新微信版本后重试'
})
}
}
4.如果用户拒绝了,该怎样让用户开启这个订阅消息通知呢?
const authModel = val => {
wx.showModal({
title: '提示',
content: val,
showCancel: false,
success: res => {
if (res.confirm) {
wx.openSetting()
}
}
})
}
引导用户打开设置页,手动选择单项消息推送是否开启
5.判断版本是否可以推送多条消息
//判断版本 https://blog.csdn.net/qq_25842063/article/details/79789676
const authVersion = (_ => {
let {
system,
version
} = Taro.getSystemInfoSync();
// iOS客户端7.0.6版本、Android客户端7.0.7版本之后
system = system.toLowerCase().indexOf('ios') > -1 ? 'iOS' : 'Android';
return {
system,
version,
subscribe: (system == 'iOS' && compareVersion(version, '7.0.6') == 1 ||
system == 'Android' && compareVersion(version, '7.0.7') == 1) ? true : false
}
})()
6.订阅接口相关
const subscribePost = code => {
// console.log(authVersion)
if (!authVersion.subscribe) { //低版本消息条数处理
code = code.length > 1 ? code.splice(0, 1) : code;
}
return post({
url: '******',
data: {
TemplateIds: code
}
})
}
7.食用教程
async handleSubscribe() {
try {
let res = await subscribeMessage([code])
let $res = await subscribePost(res.accept)
// 订阅之后逻辑
} catch (err) {
err.Msg && msg(err.Msg)
}
}
8.接口回调消息订阅(非微信支付调用消息订阅)
wx.requestSubscribeMessage API 接口指出:用户发生点击行为或者发起支付回调后,才可以调起订阅消息界面
解决方法:防止接口Promise化,否则影响消息订阅触发。此法绕过回调,可在接口请求回调执行消息订阅。 故上述方案7存在消息订阅先执行问题,此法欠妥。方案8食用风味更佳!