uni-app 小程序订阅消息


背景分析:

1、微信公众平台需要先使用模板,不符合要求的就重新申请模板(提交了10余次才通过,要求很严格,按照要求修改即可)

 

 

2、前端需调起用户授权(考虑到用户体验的问题,用户没有授权时会调用起来用户授权弹框,当用户授权完成后则无需再弹框提示授权问题)

 
 
onShow() {
            let loginRes = this.checkLogin();
            if (!loginRes) {
                return false;
            } else {
                this.is_authorization = uni.getStorageSync('is_authorization'); // 获取用户当前订阅消息的授权状态
            }
        },
 
 

 

    


    // 开启订阅消息设置窗口
 openMsg() { var that = this; // 获取用户的当前设置,判断是否点击了“总是保持以上,不在询问”
 wx.getSetting({ withSubscriptions: true, //是否获取用户订阅消息的订阅状态,默认false不返回
 success(res) { console.log("订阅消息的订阅状态",res); if(that.is_authorization){ uni.showToast({ title: "您已订阅商机消息提醒,无需重复订阅!", icon: "none" }); }else{ if (res.subscriptionsSetting['bjshmNY6Z4R-EM_vunOfa0-YbbbpqDA0huiNy7FQytI'] == "reject") { //用户点击了“总是保持以上,不再询问”
 wx.showModal({ title: '温馨提示', content: "检测到您没有开启订阅消息的权限,是否去设置?", success: function(modal) { if (modal.confirm) { // 点击肯定
 wx.openSetting({ withSubscriptions: true }); that.is_authorization = true; uni.setStorageSync('is_authorization',true); }else{ uni.showToast({ title:"您已拒绝订阅消息授权,无法预约领取", icon:"error" }); that.is_authorization = false; } } }) } else { // 用户没有点击“总是保持以上,不再询问”则每次都会调起订阅消息 // var templateid = that.setting.templateid.map(item => item.tempid);
                                let tmpid = ['bjshmNY6Z4R-EM_vunOfa0-YbbbpqDA0huiNy7FQytI']; uni.requestSubscribeMessage({ tmplIds: tmpid, success(res) { if (res[tmpid[0]] == "accept") { uni.showToast({ title: "订阅成功", icon: "none" }); that.is_authorization = true; uni.setStorageSync('is_authorization',true); }else{ uni.showToast({ title:"您拒绝订阅消息授权,无法预约领取", icon:"none" }); that.is_authorization = false; } }, fail: (res) => { wx.showModal({ title: '温馨提示', content: "检测到您没有开启订阅消息的权限,是否去设置?", success: function(modal) { if (modal.confirm) { // 点击肯定
 wx.openSetting({ withSubscriptions: true }); that.is_authorization = true; uni.setStorageSync('is_authorization',true); }else{ uni.showToast({ title:"您已拒绝订阅消息授权,无法预约领取", icon:"error" }); that.is_authorization = false; } } }) } }) } } } }) },
 
 

 

 

注意:由于无法获取红框部分的参数,所以无法判断用户是否已经授权,所以我就使用了一个参数来判断  is_authorization  只要用户点击允许,这个变量就为true并且立马存session,有且只有当该变量为true时才表示用户已经授权了,也就不用再次要求弹框授权  否则就视为没有授权。(吐槽:当用户没有勾选【总是】选项时就没有itemSetting这个参数,也就无法判断是否授权了。官方这么明显的bug为啥一直存在,一点也不考虑用户体验的么,醉都醉了,既然推出这个玩意就整得稍微好点不行么,开发人员一直在爬坑!!!yue了)

 

 

 3、后台使用链接  https://api.weixin.qq.com/cgi-bin/message/subscribe/send?access_token=“xxxxx”;; 一定是这个链接,否则会一直报错40081没有授权!

     并且一定要有page 参数: 对应的值是前端页面的首页链接“pages/index/index”

 否则发送的商机信息是没有进入小程序入口的

 

 

正常如下:

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM