小程序获取授权通知次数限制

小菜鸟一枚,获取授权通知的时候没有考虑到用户拒绝后显示的次数问题,测试后才发现如果用户不接受或者没有点击底栏的不用再通知,就会在进入页面后一直显示,但是设置一次性通知就会导致用户拒绝后,后期无法再通知用户,因此便设置了一天提示一次。代码如下:

// 获取订阅通知权限
checkSubscribeMessage() {
        let that = this;  

        //设置进入时间
        uni.setStorage({
                key: "show-time",
                data: new Date().getTime(),
        });
        uni.getSetting({
                withSubscriptions: true, //  这里设置为true,下面才会返回mainSwitch
                success: function(res) {
                        if (res.subscriptionsSetting.mainSwitch) { // 用户打开了订阅消息总开关
                            if (res.subscriptionsSetting.itemSettings != null) {
                                // 用户同意的消息模板id
                                let moIdState = res.subscriptionsSetting.itemSettings[that.tmps_ids];
                                if (moIdState === 'accept') {
                                    console.log('接受了消息推送');
                                } else if (moIdState === 'reject') {
                                    console.log("拒绝消息推送");
                                } else if (moIdState === 'ban') {
                                    console.log("已被后台封禁");
                                }
                            } else {
                                // 当用户没有点击 ‘总是保持以上选择,不再询问’ 按钮。那每次执到这都会拉起授权弹窗
                                uni.showModal({
                                    title: '提示',
                                    content: '请授权开通服务通知',
                                    showCancel: true,
                                    success: function(res1) {
                                        if (res1.confirm) {
                                            uni.requestSubscribeMessage({ // 调起消息订阅界面
                                                tmplIds: that.tmps_ids,
                                                success(res) {
                                                    console.log("订阅消息成功");
                                                },
                                                fail(er) {
                                                    console.log("订阅消息失败");
                                                }
                                            })
                                        }
                                    }
                                })
                            }
                        } else {
                            console.log('订阅消息未开启');
                        }
                    },
                    fail: function(error) {
                        console.log(error);
                    }
                })
            }

以上是获取授权通知,然后在onload处设置时间

uni.getStorage({
        key: "show-time",
        success: (res) => {
                if (!res.data || new Date().getTime() - res.data > 1000 * 60 * 60 * 24) {
                        console.log("超时");
                        that.checkSubscribeMessage();
                } else {
                        console.log("时间没到");
                }
        },
        fail: (err) => {
                console.log("本地无", err);
                this.checkSubscribeMessage();
        },
});

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值