小程序开发过程中最不能体现微信风格的一定就是权限了,最能体现微信风格的应该也是权限了,为什么这么说呢?太麻烦了,但这里的麻烦一定是经过微信深思熟虑之后做出的限制,毕竟一切以用户为中心。
不要看官方解释,因为要搞明白它的意思,估计得弄上半天。
看图吧
本方案适合:地理位置、运动步数、录音、保存到相册等权限的获取,至于后台定位、摄像头等特殊权限请稍等片刻
体验一下就能知道的差不多。
效果:
体验路径:
自定义系列>>微信那些烦人的权限
还不明白的话,可以看一下流程图,
附上其中一个的代码逻辑
以录音为例:
wxml
<button style="margin-top:20px;width:90%;" type="primary" bindtap="doSomeThingsNeedRecord">录音授权后Toast</button>
js
doSomeThingsNeedRecord() {
var that = this
wx.authorize({
scope: 'scope.record',
success() {
console.log("录音授权成功");
wx.showToast({
title: '录音功能已授权',
})
},
fail() {
wx.showModal({
title: '提示',
content: '您未授权录音,功能将无法使用',
showCancel: true,
confirmText: "授权",
confirmColor: "#52a2d8",
success: function(res) {
if (res.confirm) {
wx.openSetting({
success: (res) => {
if (!res.authSetting['scope.record']) {
that.doSomeThingsNeedRecord()
} else {
console.log("设置录音授权成功");
wx.showToast({
title: '录音功能已授权',
})
}
},
fail: function() {
console.log("授权设置录音失败");
}
})
} else if (res.cancel) {
console.log("cancel");
}
},
fail: function() {
console.log("fail");
}
})
}
})
},
微信开放出很多权限,基本思路是这样的,但也有好多特殊的,比如相机需要camera组件去注册权限,后台定位干脆不弹窗等,在demo中都给了很好的解决方案,有机会会再分享一下那些特殊的情况如何写。