收藏
回答

ios9.1,wx.authorize()在已授权的情况下进入fail回调

问题模块 框架类型 问题类型 API/组件名称 终端类型 微信版本 基础库版本
API和组件 小程序 Bug wx.authorize({scope: 'scope.userLocation'}) 客户端 6.7.1 2.1.0

     进入小程序,在需要使用位置的时候调用wx.getSetting()查询位置授权情况,如果已授权,直接使用wx.getLocation()获取位置;如果未查询到授权,则调用wx.authorize()申请位置授权,如果用户同意授权,则调用wx.getLocation()获取位置;如果用户不同意,则弹窗提示.

    目前的遇见的异常变现是:

    在ios9.1系统中,已授权的用户有一定几率在wx.getSetting()查询授权的时候未查询到授权,调用wx.authorize()申请位置授权的时候直接进入失败回调


    定位的代码如下:

    

export const getLocation = (successCallBack,failCallback=null,type='gcj02') => {

    /**

    * 打开设置

    * 注意: wx.openSetting接口已被废弃,只能使用button组件打开设置界面,需要在授权步骤自定义弹窗

    */

     const openSetting = () => {

            wx.openSetting({

                    success:res=>{

                        if (!res.authSetting['scope.userLocation']) {

                            wx.showToast({

                                title: '您拒绝了小巴使用位置信息',

                                icon:'none',

                                duration:2000,

                            });

                          }

                    }

                });

        };

    /**

    * 弹出授权

    */

const authLocation = () => {

      wx.authorize({

        scope: 'scope.userLocation',

        success:()=> {

            location();

        },

        fail:()=>{

            wx.showModal({

                title:'提示',

                content:'您拒绝了小巴使用位置信息,部分功能将无法正常工作.如果是误操作,请在"设置"中开启小巴的定位权限',

                showCancel:false,

                // success:()=>{

                //     openSetting()

                // }

            });

        }

    })

};

    /**

    * 定位

    */

const location = () => {

    wx.getLocation({

        type,

        success: res => {

            successCallBack && successCallBack(res);

        },

        fail:res => {

            failCallback && failCallback(res);

        }

    })

};

/**

    * 获取微信设置

    */

wx.getSetting({

        success(res) {

            if (!res.authSetting['scope.userLocation']) {

                authLocation();

            }else{

                location()

            }

        }

    })


};


最后一次编辑于  2018-08-25  (未经腾讯允许,不得转载)
邀请回答
复制链接收藏关注问题回答

13 个回答

  • 娇华
    娇华
    2018-08-27

    你好,请提供一下出现问题的机型和微信版本,以及能复现问题的简单代码片段(https://developers.weixin.qq.com/miniprogram/dev/devtools/minicode.html)。

    2018-08-27
    赞同
    回复 5
    • 尚
      2018-08-29

      你好,有结果了吗?

      2018-08-29
      赞同
      回复
    • 娇华
      娇华
      2018-08-29回复

      此接口即将废弃,这里的逻辑不重新处理的吗?

      2018-08-29
      赞同
      回复
    • 尚
      2018-08-29

      "设置"的打开,目前先让用户自己操作(捂脸~~),后续会改成直接替用户打开😆

      2018-08-29
      赞同
      回复
    • 尚
      2018-08-30回复娇华

      你好,今天在iOS10.3.3的系统上也出现了这个问题

      表现:   小程序在前台运行,点击home键回到桌面,再次打开微信,小程序还在前台,此时出现授权失败弹窗(如下图);打开设置界面,一片空白,实际上已对小程序授权

      逻辑:  小程序在onShow()中会重新定位,并和上一次成功上报的位置作比较,超过一定距离则上报;并且每隔一段时间也会上报一次(定位逻辑请参阅代码片段:wechatide://minicode/ruxJLYmp7P1Z)


      2018-08-30
      赞同
      回复
    • 尚
      2018-09-20回复娇华

      5秒上报一次位置,这个bug不解决就会影响正常的业务流程

      只要这个bug出现,打开设置界面就肯定是空白

      只有杀掉微信进程重新进入才会正常


      2018-09-20
      赞同
      回复
  • 尚
    2018-08-27

    wechatide://minicode/ruxJLYmp7P1Z

    微信是最新版: 6.7.1

    机型:iphone 6 / iPhone 7plus

    系统版本: iOS 9.1 / iOS11.4

    问题出现频率: 偶发 (ios9.1中出现频率更高,但也不是必现)


    另外代码片段中wx.getSetting()好像是无法使用的吧


    2018-08-27
    赞同
    回复
  • 是柿子啊
    是柿子啊
    2018-08-30

    你好,问题为复现。麻烦提供一下出现问题的手机的型号以及微信版本

    2018-08-30
    赞同
    回复 5
    • 尚
      2018-08-31

      你好:

      微信: 6.7.1

      机型: iphone 6 / iPhone 7plus

      系统版本: iOS 9.1/ iOS 10.3.3 / iOS11.4

      问题出现频率: 偶发 (ios9.1中出现频率更高,但也不是必现)

      代码片段: wechatide://minicode/ruxJLYmp7P1Z

      问题出现时的表现: 小程序在前台运行,点击home键回到桌面,再次打开微信,小程序还在前台,此时出现授权失败弹窗(如下图);打开小程序"设置"界面,一片空白,实际上已对该小程序授权

      代码逻辑:  小程序在onShow()中会重新定位,并和上一次成功上报的位置作比较,超过一定距离则上报;并且每隔一段时间也会上报一次(定位逻辑请参阅代码片段)

      2018-08-31
      赞同
      回复
    • cunjinli
      cunjinli
      2018-08-31回复

      是只有这2台设备有问题么?最新版的6.7.2客户端有问题不?小程序的appid也提供一下。还有操作的时间以及出现问题的用户的微信号。

      2018-08-31
      赞同
      回复
    • 尚
      2018-09-01回复cunjinli

      "appid": "wxd8e337d6e05643de",

      "wechat_1": "xiaohuo-duoduo123"

      "operationTime_1": "2018-08-30 9:00~10:30"

      "wechat_2": "wxid_h8rmo4ncay9n12"

      "operationTime_2": "2018-08-27 15:00~18:00" || "2018-08-28 15:00~18:00" || "2018-08-29 15:00~18:00"

      "问题设备客户端版本:" 6.7.1

      "是否在6.7.2中复现": 未知,(后续会持续关注,如果出现会及时反馈)

      "是否只在上述两款设备中出现": 否,(iPhone7Plus,iOS11.4,微信版本6.7.1中也出现过一次)

      麻烦了!

      2018-09-01
      赞同
      回复
    • 尚
      2018-09-19回复cunjinli

      你好,今天这个问题又出现了,已经授权位置信息的小程序,打开设置界面什么也没有

      2018-09-19
      赞同
      回复
    • 尚
      2018-09-20回复cunjinli

      5秒上报一次位置,这个bug不解决就会影响正常的业务流程

      只要这个bug出现,打开设置界面就肯定是空白

      只有杀掉微信进程重新进入才会正常


      2018-09-20
      赞同
      回复