帝国cms 制作网站地图,网络营销八大工具,外贸皮包网站模板,怎样经营好一个网站小程序如何完成订阅 参考相关文档实践问题处理授权弹窗不再触发引导用户重新授权 参考相关文档
微信小程序实现订阅消息推送的实现步骤 发送订阅消息 小程序订阅消息#xff08;用户通过弹窗订阅#xff09;开发指南
实践
我们需要先选这一个模板#xff0c;具体流程参考… 小程序如何完成订阅 参考相关文档实践问题处理授权弹窗不再触发引导用户重新授权 参考相关文档
微信小程序实现订阅消息推送的实现步骤 发送订阅消息 小程序订阅消息用户通过弹窗订阅开发指南
实践
我们需要先选这一个模板具体流程参考官方的操作。然后这个模板ID就是前后端所需要的重要数据啦。
我们在获取到模板id之后现在需要弹出订阅弹窗让用户完成订阅查看上面官方文档中可以知道我们需要用户触发uni.requestSubscribeMessage这个方法。那我们可以是用弹窗或者操作按钮来达到这个目的。我们这里是采用的进入页面之后就弹窗各人按需调整
subscribeMessage() {let tmplId XXXXXXXXXXXXX;uni.showModal({title: 提示,content: 邀请您订阅消息,editable: false,confirmText: 同意,cancelText: 拒绝,placeholderText: ,success: function (res) {console.log(success, res);if (res.confirm) {//调用订阅// 添加用户授权操作 uniapp封装了uni.requestSubscribeMessage接口uni.requestSubscribeMessage({tmplIds: [tmplId],success(res) {console.log(success, res);}});} else if (res.cancel) {console.log(用户点击取消);}}});
},我们这里使用的是弹窗点击同意之后我们去调用uni.requestSubscribeMessage这个方法可以唤起授权弹窗。 我们点击允许之后就订阅成功了然后后端同事通过获取到用户的openid就可以给用户发送对应的模板消息了。
问题处理
授权弹窗不再触发
我们第一次进入小程序点击同意之后进行授权弹窗唤起我们选择允许或拒绝。重新刷新页面加载这一次点击同意并没有如愿的唤起订阅授权了。 这是怎么回事呢 观察操作细节如果我们没有勾选总是保持以上选择那么每一次重新进入小程序会正常升起订阅授权的弹窗但是一旦我们勾选了就不会再升起订阅授权的弹窗。
经过查询文档我们发现勾选了之后总是保持以上选择之后订阅授权弹窗就不再唤起如果我们还需要用户再次授权怎么办呢
引导用户重新授权
那我们需要先使用uni.getSetting(方法查询一下用户的订阅状态如果发现用户勾选了总是保持以上选择根据业务需求我们可以重新指引用户打开授权uni.openSetting这个操作也需要用户点击之后才能触发。用户可以在这里重新打开授权。
showMessage() {let that this;let tmplId XXXXXXXXXXXXXX;uni.getSetting({withSubscriptions: true,success(res) {console.log(res);if (res.subscriptionsSetting.mainSwitch) {// 用户打开了订阅消息总开关if (res.subscriptionsSetting.itemSettings) {// 用户同意总是保持是否推送消息的选择, 这里表示以后不会再拉起推送消息的授权let moIdState res.subscriptionsSetting.itemSettings[tmplId]; // 用户同意的消息模板idif (moIdState accept) {// 同意了消息推送} else if (moIdState reject) {console.log(拒绝了消息推送);//引导用户重新打开授权uni.showModal({title: 提示,content: 用户已关闭订阅授权是否重新打开订阅授权,editable: false,confirmText: 同意,cancelText: 拒绝,placeholderText: ,success: function (res) {if (res.confirm) {uni.openSetting({withSubscriptions: true,}}});} else if (moIdState ban) {uni.showToast({title: 已被后台封禁});}} else {// 开始订阅that.subscribeMessage();}} else {// 总开关已关闭清空下是否重新打开授权uni.showModal({title: 提示,content: 用户已关闭订阅授权是否重新打开订阅授权,editable: false,confirmText: 同意,cancelText: 拒绝,placeholderText: ,success: function (res) {if (res.confirm) {uni.openSetting({withSubscriptions: true,});}}});}}});
},