小程序
小游戏
企业微信
微信支付
扫描小程序码分享
如题,一次性订阅消息,用户选择拒绝并且默认选项后,是不能继续弹出请求授权窗口吗?
3 个回答
加粗
标红
插入代码
插入链接
插入图片
上传视频
不会在弹了,控制权在微信侧
你好,麻烦通过点击下方“反馈信息”按钮,提供出现问题的。
此时需要wx.openSetting()
是啊
关注后,可在微信内接收相应的重要提醒。
请使用微信扫描二维码关注 “微信开放社区” 公众号
不会在弹了,控制权在微信侧
此时需要wx.openSetting()
我这个人比较喜欢直接上代码
// 消息订阅:1、触发【服务状态、欠费】
messageReader() {
let that = this;
//需要订阅的消息模板,在微信公众平台手动配置获取模板ID
let messageA = xxxxxxxxxxxx;; // 1
let messageB = xxxxxxxxxxxx;; // 2
// 如果总是拒绝(subscriptionsSetting,2.10.1库才支持)
if (that.versionCompare('2.10.1')) {
wx.getSetting({
withSubscriptions: true, // 是否同时获取用户订阅消息的订阅状态,默认不获取
success: (res) => {
if (res.subscriptionsSetting && res.subscriptionsSetting.itemSettings &&
res.subscriptionsSetting.itemSettings[messageA] == "reject") {
console.log(res, '检测到没开订阅A')
//打开设置去设置
that.openConfirm('检测到您没打开推送权限,是否去设置打开?')
return;
}
if (res.subscriptionsSetting && res.subscriptionsSetting.itemSettings &&
res.subscriptionsSetting.itemSettings[messageB] == "reject") {
console.log(res, '检测到没开订阅B')
//打开设置去设置
that.openConfirm('检测到您没打开推送权限,是否去设置打开?')
return;
}
console.log(res, '检测到都开了订阅')
wx.requestSubscribeMessage({
tmplIds: [messageA, messageB],
success: (res1)=> {
console.log(res1, '用户允许1')
if (res1[messageA] == 'accept' && res1[messageB] == 'accept') {
//用户允许
console.log(res1, '用户允许')
wx.redirectTo({
url: '/pages/unipay/index',
})
}
},
fail: (err1)=> { console.log(err1, '失败1') }
})
}
})
} else if (that.versionCompare('2.4.4')) {
console.log('2.4.4')
wx.requestSubscribeMessage({
tmplIds: [messageA, messageB],
success: (res2)=> {
console.log(res2, '订阅成功~1')
if (res2[message] == 'accept') {
console.log(res2, '订阅成功~2')
if (res1[messageA] == 'accept' && res1[messageB] == 'accept') {
//用户允许
console.log(res1, '用户允许')
wx.redirectTo({
url: '/pages/unipay/index',
})
}
}
},
fail: (err2)=> { console.log(err2, '失败2') }
})
}
},
// 消息订阅:2、基础库版本比较
versionCompare(v) {
let that = this
const version = wx.getSystemInfoSync().SDKVersion
if (that.compareVersion(version, v) >= 0) {
return true
} else {
return false
}
},
// 消息订阅:3、版本比较
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
},
// 消息订阅:4、配置权限
openConfirm(message) {
wx.showModal({
content: message,
confirmText: "好的",
cancelText: "取消",
success: (res) => {
//点击“确认”时打开设置页面
if (res.confirm) {
wx.openSetting({
success: (res) => {
// console.log(res.authSetting)
// console.log('打开订阅')
},
fail: (error) => {
console.log(error)
}
})
} else {
// console.log('用户点击取消')
}
}
});
},
https://developers.weixin.qq.com/miniprogram/dev/api/open-api/setting/wx.openSetting.html
是啊