微信小程序获取用户授权的思路
发布于: 刚刚
1.小程序订阅消息
消息能力是小程序能力中的重要组成,我们为开发者提供了订阅消息能力,以便实现服务的闭环和更优的体验。
订阅消息推送位置:服务通知
订阅消息下发条件:用户自主订阅
订阅消息卡片跳转能力:点击查看详情可跳转至该小程序的页面
2.原理
类似 Android 系统的权限申请,用户有可能接受也有可能拒绝
拒绝的流程处理思路是,引导用户跳转到设置页面,打开通知开关
3.代码
export function requestSubscribeMessage(callback){
uni.requestSubscribeMessage({
tmplIds: [pushReservationTmplIds],
success: (res)=>{
let value = res[pushReservationTmplIds]
console.log("申请成功:", res, value)
if(value == 'reject'){
guideOpenSubscribeMessage(callback)
}else if(value == 'accept'){
// showToast('授权成功')
if(isFunction(callback))
callback.call(null, true)
}else {
showToast("授权订阅消息有误")
}
},
fail: (error)=>{
console.error("异常情况:", error)
if (error.errCode == 20004) {
// console.log(res, 'fail:用户关闭了主开关,无法进行订阅,引导开启---');
guideOpenSubscribeMessage(callback);
}
}
})
}
export function guideOpenSubscribeMessage(callback){
uni.showModal({
title: '提示',
showCancel: false,
content: '检测到您没有开启订阅消息的权限,是否去设置?',
success: function (res) {
if (res.confirm) {
console.log('用户点击确定');
uni.openSetting({
complete() {
guidSubscribeMessageAuthAfter(callback)
},
fail(error) {
console.error("异常情况:", error)
}
})
} else if (res.cancel) {
console.log('用户点击取消');
}
}
})
}
// res.subscriptionsSetting = {
// mainSwitch: true, // 订阅消息总开关
// itemSettings: { // 每一项开关
// SYS_MSG_TYPE_INTERACTIVE: 'accept', // 小游戏系统订阅消息
// SYS_MSG_TYPE_RANK: 'accept'
// zun-LzcQyW-edafCVvzPkK4de2Rllr1fFpw2A_x0oXE: 'reject', // 普通一次性订阅消息
// ke_OZC_66gZxALLcsuI7ilCJSP2OJ2vWo2ooUPpkWrw: 'ban',
// }
// }
export function guidSubscribeMessageAuthAfter(callback) {
//引导用户 开启订阅消息 之后,「openSetting」 接口暂时不会返回,用户手动设置后的状态,所以采用「getSetting」接口重新进行查询
uni.getSetting({
withSubscriptions: true,
success: res => {
console.log(res.subscriptionsSetting)
let {
authSetting = {},
subscriptionsSetting: { mainSwitch = false, itemSettings = {} } = {}
} = res;
if ((authSetting['scope.subscribeMessage'] || mainSwitch) &&
itemSettings[pushReservationTmplIds] === 'accept'
) {
console.log('用户手动开启同意了,订阅消息');
if(isFunction(callback))
callback.call(null, true)
} else {
console.log('您没有同意授权订阅消息');
if(isFunction(callback))
callback.call(null, false)
}
}
})
}
复制代码
划线
评论
复制
发布于: 刚刚阅读数: 2
版权声明: 本文为 InfoQ 作者【Changing Lin】的原创文章。
原文链接:【http://xie.infoq.cn/article/6b978068b75072cee55e181d7】。文章转载请联系作者。
Changing Lin
关注
获得机遇的手段远超于固有常规之上~ 2020.04.29 加入
我能做的,就是调整好自己的精神状态,以最佳的面貌去面对那些未曾经历过得事情,对生活充满热情和希望。
评论