相信各位在小程序的开发中, 常常会碰到一个很难解决的坑,那就是用户“授权”问题。当“授权”对话框弹出,却被用户无情拒绝,这就是比较惨了。因为作为小程序的商家用户,想拿到的还是用户的信息,而这些信息必须要经过用户的“授权”同意后才能拿到。那么作为开发商的我们,如何偷偷引导用户“放我们一马”,“授权与我们”就成了一道关键的门槛。
毕竟,只有能够被小用户认可的小程序才会更好的被大众所接受,而能帮助商户实现这一操作才能让自己的小程序服务更加到位,将来才会有更多的商户和我们合作。废话不多说,下面来分享一下我的秘笈!
我的这个demo是个人信息+地理位置的双重授权。
要么授权通过,进入首页
要么拒绝授权,停留在有授权入口的页面
需要设置一个标志值:authorizeInfo,根据此值得真假来决定是渲染首页还是渲染显示重新授权的页面。
在页面显示的时候,获取用户信息与地理位置
// userInfo
wx.getUserInfo({
success:res=>{
this.setData({userInfo : true})
},
fail:res=>{
this.setData({ userInfo: false })
}
})
// locationInfo
wx.getLocation({
success: res => {
this.setData({ locationInfo: true })
},
fail: res => {
this.setData({ locationInfo: false })
}
})
authorizeInfo的设置就要依靠刚刚获取的这两个值了,设置定时器不断执行authorizeInfo,直到userInfo和locationInfo两个值都为true就把定时器清除(设置定时器是因为刚开始获取userInfo和locationInfo可能会失败),当两者都为真时表示所有授权均已通过,跳转至首页。否则,将会一直停留在授权页。
//all authorize
let timer = setInterval(() => {
this.authorizeInfo();
if (this.data.userInfo && this.data.locationInfo){
clearInterval(timer)
}
}, 100)
//authorizeInfo
authorizeInfo: function(){
if (this.data.userInfo && this.data.locationInfo) {
this.setData({ authorizeInfo: true })
//reLaunch
wx.reLaunch({
url: '/pages/index/index'
})
}
else {
this.setData({ authorizeInfo: false })
}
}
而重新授权这个操作需要调用wx.openSetting这个接口,通过返回值判断,用户再次调用授权操作后是否全部授权,是的话跳转至首页,否则停留在授权页。
这种引导用户重新“授权”的操作是一项救赎式的姿势。今天的关于解决用户“授权”问题的秘笈就为大家分享到这了,各位拿好不谢。怎么说,作为行业老大哥也得为各位兄弟父老乡亲们透露一下开山道的办法!毕竟是对广大商户有好处的操作,解决这个问题,我们做小程序才更有价值!赶快试试这个方法吧!
- 适合两个人玩的微信小游戏 情侣可以玩的小游戏[18-09-04]
- 为什么微信小程序打不开?原来是这么回事[18-08-18]
- 适合两个人玩的微信小游戏,玩起来叫人欲罢不能[18-09-10]