收藏
回答

关于申请授权疑问

框架类型 问题类型 API/组件名称 终端类型 操作系统 微信版本 基础库版本
小程序 Bug getRecorderManager 微信iOS客户端 6.6.5 1.9.98



wx.getSetting({
   success: res => {
     //如果发现用户并未授权,提前向用户发起授权请求。
     if (!res.authSetting['scope.record']) {
       wx.authorize({
         scope: 'scope.record',
         success: res => {

           //console.log('record success.', res);

         

          if (params.recorderManager){

console.log('/////')

params.recorderManager.start({}); //请求录音的接口

params.recorderManager.stop();//即刻关闭录音接口

          }


           typeof params.cb === 'function' && params.cb();
         },
         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、或者说我应该如何合理的处理用户的授权?

最后一次编辑于  2018-06-03
回答关注问题邀请回答
收藏
登录 后发表内容