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”
否则发送的商机信息是没有进入小程序入口的
正常如下:
本文来自博客园,作者:小虾米吖~,转载请注明原文链接:https://www.cnblogs.com/LindaBlog/p/15821403.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
2021-01-19 VueX理解
2020-01-19 el-select选择一个选项,在对应输入框填入该选项对应的id
2020-01-19 vue表单:输入身份证号码则自动获取对应的年龄和性别,,若不输入身份证号则自己填写年龄和性别
2020-01-19 el-input 电话号码输入时加上空格(344)
2020-01-19 vue图片上传---融合裁剪功能