微信小程序 服务通知之订阅消息授权公共方法

1,创建个js 文件 subscribeMessage.js

//  订阅消息通知授权方法
export const subscribeMessage = (val)=> {
      		//需要订阅的消息模板,在微信公众平台手动配置获取模板ID
        let message = val; // 模板id
        //如果总是拒绝(subscriptionsSetting,2.10.1库才支持)
        if(versionCompare('2.10.1')){
            wx.getSetting({
                withSubscriptions: true,//是否同时获取用户订阅消息的订阅状态,默认不获取
                success: (res)=> {
                    console.log(res)
                    if (res.subscriptionsSetting && res.subscriptionsSetting.itemSettings &&
                        res.subscriptionsSetting.itemSettings[message] == "reject"){
                        //打开设置去设置
                        openConfirm('检测到您没打开推送权限,是否去设置打开?');
                    }else if(res.subscriptionsSetting && res.subscriptionsSetting.itemSettings &&
                      res.subscriptionsSetting.itemSettings[message] == "accept") { // 已有授权过
                      console.log('已有订阅授权过')
                    } else {
                        wx.requestSubscribeMessage({
                            tmplIds: [message],
                            success: (res)=> {
                                if (res[message] == 'accept'){
                                    //用户允许
                                }
                            },
                            fail: (res)=> { console.info(res) },
                        })
                    }
                }
            })
        }else if(versionCompare('2.4.4')){
            wx.requestSubscribeMessage({
                tmplIds: [message],
                success: (res)=> {
                    if (res[message] == 'accept'){
                        //用户允许
                    }
                },
                fail: (res)=> { console.info(res) },
            })
        }
    //打开设置
    function openConfirm(message) {
      wx.showModal({
          content: message,
          confirmText: "确认",
          cancelText: "取消",
          success: (res) => {
              //点击“确认”时打开设置页面
              if (res.confirm) {
                  wx.openSetting({
                      success: (res) => {
                          console.log(res.authSetting)
                      },
                      fail: (error) => {
                          console.log(error)
                      }
                  })
              } else {
                  console.log('用户点击取消')
              }
          }
      });
  }
  //基础库版本比较
  function versionCompare(v) {
      const version = wx.getSystemInfoSync().SDKVersion
      if (compareVersion(version, v) >= 0) {
          return true
      } else {
          return false
      }
  }
  function compareVersion (v1, v2) {
    v1 = v1.split('.')
    v2 = v2.split('.')
    var len = Math.max(v1.length, v2.length)
  
    while (v1.length < len) {
      v1.push('0')
    }
    while (v2.length < len) {
      v2.push('0')
    }
  
    for (var i = 0; i < len; i++) {
      var num1 = parseInt(v1[i])
      var num2 = parseInt(v2[i])
  
      if (num1 > num2) {
        return 1
      } else if (num1 < num2) {
        return -1
      }
    }
    return 0
  }
}

2, 页面点击事件里面使用

import {subscribeMessage} from "../../../utils/subscribeMessage.js"; // 订阅 公共方法
  data: {
    subscribeMessage: subscribeMessage // 订阅消息授权
    },
  toWhere(e) {
	 this.data.subscribeMessage('xxxx'); // 订阅授权方法 入参是模板id
	}
  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值