r***@163.com
r***@163.com
  • 发布:2023-01-12 16:26
  • 更新:2023-01-13 16:55
  • 阅读:449

【报Bug】遇到获取定位授权弹窗时无法正常关闭一键登录授权界面

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Windows

PC开发环境操作系统版本号: 21H1

HBuilderX类型: Alpha

HBuilderX版本号: 3.6.17

手机系统: Android

手机系统版本号: Android 12

手机厂商: 华为

手机机型: nova5 pro

页面类型: vue

vue版本: vue2

打包方式: 云端

项目创建方式: HBuilderX

操作步骤:

调用univerifyManager.close关闭一键登录授权界面
调用uni.getLocation获取定位(弹出获取定位授权弹窗)

预期结果:

关闭一键登录授权界面

实际结果:

未关闭一键登录授权界面

bug描述:

遇到获取定位授权弹窗时无法正常关闭一键登录授权界面,尝试过延迟调用获取定位API,可以关闭一键登录授权界面,但会相继弹出请求定位授权弹窗和请求后台定位授权弹窗。

2023-01-12 16:26 负责人:DCloud_Android_YJC 分享
已邀请:

最佳回复

DCloud_Android_YJC

DCloud_Android_YJC

针对先调用uni.closeAuthView()或univerifyManager.close()关闭一键登录页面然后调用需要申请权限的API的情况,可能会出现由于权限申请框弹出导致页面焦点变化导致无法关闭一键登录页面的情况,建议有此需求的开发者,延时调用需要申请权限的API

DCloud_Android_YJC

DCloud_Android_YJC

延迟调用uni.getLocation,相继弹出请求定位授权弹窗和请求后台定位授权弹窗是什么意思?不延迟的话就不会相继弹出请求定位授权弹窗和请求后台定位授权弹窗么?

  • r***@163.com (作者)

    不延迟调用,就只弹出请求定位的授权弹窗,延迟调用会先弹出请求定位的授权弹窗,授权后再弹请求后台定位的授权弹窗。

    2023-01-12 17:36

  • DCloud_Android_YJC

    回复 r***@163.com: 我这边没有复现,请提供一个可复现的demo

    2023-01-12 18:12

  • r***@163.com (作者)

    回复 DCloud_Android_YJC: demo已提供

    2023-01-13 15:24

r***@163.com

r***@163.com (作者)

我尝试在demo里复现,发现少说了最关键的一步,就是跳转页面,应该是跳转页面影响了一键登录界面的关闭,继而导致获取定位授权后还需要后台定位授权。

r***@163.com

r***@163.com (作者)

这个demo还不是一定必现,我分别出现过正常关闭(罕见)、无法关闭+弹出定位授权(常见)、无法关闭+弹出定位授权+授权后手动关闭一键登录界面出现在第二个页面后又弹了后台定位授权(罕见)

DCloud_Android_YJC

DCloud_Android_YJC

                const univerifyManager = uni.getUniverifyManager();  
                univerifyManager.login({  
                    univerifyStyle: {  
                        fullScreen: true,  
                    },  
                });  
                setTimeout(function() {  
                    univerifyManager.close();  
                    setTimeout(function() {  
                        uni.getLocation({  
                            success: (res) => {  
                                console.log(res);  
                            }  
                        });  
                        uni.reLaunch({  
                            url: '/pages/second/second'  
                        })  
                    }, 2000)  
                }, 3000);
  • DCloud_Android_YJC

    我这么写是没问题的,看是否能满足你的业务需求。同时close登录页面和getLocation是确实是有问题的,页面的焦点发生了变化导致无法关闭登录页面,延时可以解决

    2023-01-13 15:41

  • r***@163.com (作者)

    回复 DCloud_Android_YJC: 好的

    2023-01-13 16:24

要回复问题请先登录注册