ios9.1,wx.authorize()在已授权的情况下进入fail回调
发布于 5 年前 作者 mengjie 1868 次浏览 来自 问答

     进入小程序,在需要使用位置的时候调用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()

            }

        }

    })

};

3 回复

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

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

wechatide://minicode/ruxJLYmp7P1Z

微信是最新版: 6.7.1

机型:iphone 6 / iPhone 7plus

系统版本: iOS 9.1 / iOS11.4

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

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

回到顶部