微信小程序检测订阅消息是否开启,未开启则引导用户打开-附代码

1,495 阅读1分钟

首先通过 wx.getSetting 获取小程序设置相关信息。 官网文档

wx.getSetting({
  withSubscriptions: true,
  success (res) {
    console.log(res.authSetting)
       res.authSetting = {  // 用户授权信息
           "scope.userInfo": true,
           //... 
     }
     res.subscriptionsSetting = {
       mainSwitch: true, // 订阅消息总开关
       itemSettings: {   // 每一项开关
            // 模板ID : 授权状态 (accept-同意、reject-拒绝、ban-封禁)
            66gZxALLcsuI7ilCJSP2OJ2vWo2ooUPpkWrw: 'ban',
         }
      }
  }
})

代码封装 (严谨性可以根据自己的业务进行扩展):


/**
 * @description: 检测订阅消息是否开启,并授权
 * @date 2020/11/27
 * @param key {String} 订阅消息模板KEY[ID], 可判断是否开启了该订阅消息授权
 */
function isOpenSubscribeToNewsAndAuth (key) {
    return new Promise((re, rj) => {
        wx.getSetting({
            withSubscriptions: true,
            success: ({subscriptionsSetting}) => {
                if (!subscriptionsSetting) {
                    return rj(new Error('无法获取订阅消息对象,可能版本库兼容原因'))
                }
                if (!subscriptionsSetting.mainSwitch) {
                    return rj(new Error('订阅消息未打开'))
                }
                if (key && subscriptionsSetting.itemSettings[key] != 'accept') {
                    return rj(new Error(`模板消息:${key} 未开启`))
                }
                re(subscriptionsSetting.itemSettings)
            },
            fail: err => rj(err)
        })
    })
}

通过上面代码,再需要的地方进行业务代码编写即可。下面贴一个实现效果。


 *****.wxml*****
<!--授权提醒-->
<common-dialog id="subMegAuth" title="温馨提示">
    为了更便捷的使用和及时收到订单提醒,请您开启订阅消息授权。

    <view class="center mt2"><button class="open-set-bt" open-type="openSetting">前往开启</button></view>
<!--因小程序授权改版,设置页面需要用户手动触发-->
</common-dialog>
 *****.js*****
  ...
   // 提交支付
   submitPay: util.throttle(function () {
        isOpenSubscribeToNewsAndAuth().then(() => {
             requestSubscribeMessage(() => {  // 订阅消息推送
                 // 你的业务代码
             });
        }, err => {
            Log.error(err)
            this.selectComponent('#subMegAuth').showDialog()
        })
    })
...

1.png

转载请注明来源,谢谢。 文章来源: www.owlcity.vip [自己的网站]