Taro 小程序处理消息通知弹窗
业务需求,在用户操作了下单按钮后会弹出提醒他开启消息通知,这个时候根据用户的选项引导用户去开启通知的逻辑如下:
// 是否设置过授权
openMsg() {
var that = this;
// 获取用户的当前设置,判断是否点击了“总是保持以上,不在询问”
Taro.getSetting({
withSubscriptions: true, // 是否获取用户订阅消息的订阅状态,默认false不返回
success(res) {
if (res.authSetting['scope.subscribeMessage']) { // 用户点击了“总是保持以上,不再询问”
Taro.openSetting({ // 打开设置页
success(re) {
console.log(re.authSetting)
}
});
} else { // 用户没有点击“总是保持以上,不再询问”则每次都会调起订阅消息
that.applyMessage();
}
}
})
}
// 发送消息
applyMessage() {
return new Promise<void>((resolve, reject) => {
if (!Taro.requestSubscribeMessage) {
resolve()
return
}
//弹窗通知提醒
let ids = ['XipVLmN0N4frqj9fGRsMfmabcBdhfpzvkLqISMK2mrZ4z4', 'Qp2XZEyh2fbGSyWf5McccE4XNfTuEZxE876oTvkptLRHGY']
Taro.requestSubscribeMessage({
tmplIds: ids,
success: (res) => {
if (res[ids[0]] === 'accept' || res[ids[1]] === 'accept') {
Taro.showToast({
title: '订阅成功!',
duration: 1000,
success(data) {
// 成功
resolve()
}
})
} else {
Taro.showModal({
content: '未授权发送通知,您将收不到通知!',
confirmText: '重新授权',
cancelText: '取消授权',
success: (re) => {
if (re.confirm) {
reject()
// this.request_order = false;
this.applyMessage()
} else {
resolve()
}
}
})
}
},
fail: (err) => {
Taro.showModal({
content: '未授权发送通知,请到小程序设置界面开启订阅',
confirmText: '去开启',
cancelText: '暂不开启',
success: (res) => {
if (res.confirm) {
reject()
Taro.openSetting()
} else {
resolve()
}
}
})
}
})
// #endif
resolve();
})
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构