微信小程序解决方案

1.发起消息订阅

微信小程序的消息订阅用于服务通知,消息订阅分为一次性消息订阅与长期消息订阅,长期消息订阅需要申请审核,一次性开发订阅在开发中用的较多

一次性消息订阅(requestSubscribeMessage)

该消息订阅使用 requestSubscribeMessage 发起:

  • 参数 - tmplIds:消息订阅模板 ID,模板在小程序公众平台中设置 - success: 成功回调 - falil: 失败回调 - complete: 结束回调
    消息订阅会发起是否同意弹框,同意一次即可接收一次消息,也可选择 总是使用该选择 则默认设置为选择的状态,不会发起弹框

问题

有时我们需要多此接收消息订阅, 而消息订阅又必须由点击行为或支付回调发起,点击一次才会发起一次消息订阅

解决

监听 tabbar 点击发起消息订阅

onTabItemTap

onTabItemTap 常用于点击当前 tabitem,滚动或刷新当前页面。如果是点击不同的 tabitem,一定会触发页面切换。
该回调为页面生命周期
在 onTabItemTap 生命周期中发起 requestSubscribeMessage

代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
function requestSubscribe(params) {
uni.requestSubscribeMessage({
tmplIds: params.tmplIds,
success(res) {
console.log("成功发起一次消息订阅");
},
fail(res) {
console.log("消息订阅发送失败");
},
});
}
export function subscribe(params) {
uni.getSetting({
withSubscriptions: true, // 获取用户订阅消息设置
success(res) {
console.log(res);
if (res.subscriptionsSetting.mainSwitch) {
requestSubscribeMessage(params); // 发起消息订阅
} else {
uni.showModal({
title: "提示",
content: "您已取消订阅消息,如需订阅,请到小程序设置中打开授权",
success(res) {
if (res.confirm) {
uni.openSetting({
success() {
console.log("打开设置");
},
});
} else {
console.log("未同意设置");
}
},
});
}
},
});
}

微信小程序解决方案
https://www.zphl.top/posts/uniapp-Weixin.html
作者
lzp
发布于
2024年11月17日
许可协议