写点什么

微信小程序获取用户授权的思路

用户头像
Changing Lin
关注
发布于: 刚刚
微信小程序获取用户授权的思路

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
用户头像

Changing Lin

关注

获得机遇的手段远超于固有常规之上~ 2020.04.29 加入

我能做的,就是调整好自己的精神状态,以最佳的面貌去面对那些未曾经历过得事情,对生活充满热情和希望。

评论

发布
暂无评论
微信小程序获取用户授权的思路