wx.getSetting({ success: res => { //如果发现用户并未授权,提前向用户发起授权请求。 if (!res.authSetting[ 'scope.record' ]) { wx.authorize({ scope: 'scope.record' , success: res => {
if (params.recorderManager){ console.log('/////') params.recorderManager.start({}); //请求录音的接口 params.recorderManager.stop();//即刻关闭录音接口 } }, fail: err=>{ console.log( 'record.' ,err); if (err.errMsg.indexOf( 'auth' ) > -1){ //.... } } }) } else { typeof params.cb === 'function' && params.cb(); } }, complete: com => { console.log( 'get record setting.' , com); } }) |
1、我用的是wx.getRecordManager这个全局管理接口。
2、我在点击录音之前先用wx.getsetting检查是否授权,没有授权。使用wx.authorize获取预授权。这时候会弹窗允许用户授权。
3、用户允许后,进入success回调,然后我调用录音的start方法。这时候又弹窗授权。
4、调用start方法后,会再次弹窗询问用户授权,但是这时候是没办法兼听到用户到底是点击了确定或者取消按钮。因此我在调用start后又立刻执行stop方法。但是这时候不管怎样都会执行onError回调。错误码:retcode: -30003, msg: “internal voice data failed”
4-1、再次点击按钮录音,流程都正常了。
疑问:
1、wx.authorize已经授权过了,在调用接口又重复授权,这个不是很有问题么?为什么还要用预授权的接口?
2、在调用start接口弹窗授权,我怎样才能兼听到用户到底是否允许授权?然后才去执行stop方法?
3、或者说我应该如何合理的处理用户的授权?