- tmplIds为订阅消息的id的集合,例如:['aaaaa','bbbbbbb']
- 调用messageSubscriptionAuthorization函数会返回结果,可以根据结果来判断用户是否授权,从而进行对应的操作
function messageSubscriptionAuthorization(tmplIds) {
return new Promise((resolve, reject) => {
uni.getSetting({
withSubscriptions: true,
success(res) {
let info = res.subscriptionsSetting;
let isFirst = true;
if (info.itemSettings) {
tmplIds.forEach((item) => {
if (info.itemSettings[item] == 'accept') {
isFirst = false;
}
});
}
console.log('订阅信息设置', info);
if (!info.mainSwitch) {
uni.openSetting({
success(res) {
console.log('打开设置页', res.authSetting);
},
});
} else {
uni.requestSubscribeMessage({
tmplIds,
success(res) {
console.log('订阅信息', res);
let isTmplId = true;
tmplIds.forEach((item) => {
if (res[item] != 'accept') {
isTmplId = false;
}
});
resolve({
result: isTmplId,
isTip: isFirst,
msg: isTmplId ? '消息订阅授权成功' : '消息订阅未授权',
});
},
fail(errMessage) {
console.log('订阅消息 失败 ', errMessage);
resolve({ result: false, isTip: isFirst, msg: '订阅消息失败' });
},
});
}
},
});
});
}
页面使用
let messageRes = await messageSubscriptionAuthorization([
'ZuFXHVH-DHyGBYgXXrxNutIkvG29hK1Da3AUW_Zh6YY',
])
if (messageRes.isTip) {
uni.showToast({ title: messageRes.msg, icon: 'none' })
}