今日笔记-小程序订阅消息请求方法封装,完美解决按钮点击无反应问题

function requestMsgNotice(templateIds) {

  return new Promise((resolve) => {

    let ids = [];

    wx.getSetting({

      withSubscriptions: true,

      success(res) {

        console.log(res)

        if (res.subscriptionsSetting.mainSwitch) { // 用户打开了订阅消息总开关

          if (res.subscriptionsSetting

            .itemSettings) { // 用户同意总是保持是否推送消息的选择, 这里表示以后不会再拉起推送消息的授权

            let itemSettings = res.subscriptionsSetting.itemSettings; // 用户同意的消息模板id

            let status = true;

            //判断模板是否全部授权

            for (let i = 0; i < templateIds.length; i++) {

              let key = templateIds[i];

              if (itemSettings[key] != 'accept') {

                ids.push(key);

                status = false;

                break;

              }

            }

            if (!status) {

              wx.requestSubscribeMessage({

                tmplIds: ids,

                success(res) { },

              })

            } else {

              wx.requestSubscribeMessage({

                tmplIds: templateIds,

                success(res) { },

              })

              wx.showToast({

                title: '您已经订阅通知'

              })

            }

          } else {

            wx.requestSubscribeMessage({

              tmplIds: templateIds,

              success(res) { },

            })

          }

        } else {

          wx.openSetting({

            withSubscriptions: true,

          })
        }
      }
    })
  });

}

由于项目紧急,没有留太多批注,有问题的朋友可留言讨论

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值