9***@qq.com
9***@qq.com
  • 发布:2021-09-14 22:35
  • 更新:2021-09-14 22:35
  • 阅读:633

【报Bug】iOS uni.getLocation偶发性会一直进入fail 重启APP后正常

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Mac

PC开发环境操作系统版本号: macOS Catalina 10.15.6

HBuilderX类型: 正式

HBuilderX版本号: 3.2.3

手机系统: iOS

手机系统版本号: IOS 14

手机厂商: 苹果

手机机型: iphone 11

页面类型: vue

打包方式: 云端

项目创建方式: HBuilderX

示例代码:

async checkLocationAuth() {  
                // #ifdef APP-PLUS  
                // locationAuth  
                let result = '',  
                    that = this;  
                if (plus.os.name == "iOS") {  
                    result = permision.judgeIosPermission('location');  
                } else {  
                    result = await permision.requestAndroidPermission('android.permission.ACCESS_FINE_LOCATION');  
                    result = result == 1 ? true : result == 0 ? false : 'ban';  
                }  
                if (result) {  
                                        // 置为true 不显示定位开启提示  
                    that.locationAuth = true;  
                } else {  
                    that.locationAuth = false;  
                    if (result != 'ban') {  
                        uni.showToast({  
                            title: '未开启地址定位授权',  
                            icon: 'none'  
                        });  
                    } else {  
                        uni.showToast({  
                            title: '地址定位授权被永久拒绝',  
                            icon: 'none'  
                        })  
                    }  
                }  
                // #endif  
            }  

get_location(callback) {  
                uni.getLocation({  
                    type: 'wgs84',  
                    geocode: true,  
                    success: function (res) {  
                        let address = ''  
                        if(res.address) {  
                            address = res.address.province + ' ' + res.address.city + ' ' + res.address.district + ' ' + res.address.poiName + ' ' + res.address.street + ' ' + res.address.streetNum  
                        }  
                        callback({  
                            longitude: res.longitude,  
                            latitude: res.latitude,  
                            poiName: res.address.poiName,  
                            address: address  
                        })  
                    },  
                    fail() { // 失败时自动唤起面板  
                        console.log('fail');  
                        self.locationAuth = false;  
                    },  
                    complete(e) {  
                        console.log('get_location callback is', e);  
                    }  
                });  
            }  

操作步骤:

-

预期结果:

开启定位状态下, iOS系统的getLocation不要出现一直进入fail的情况

实际结果:

开启定位状态下, iOS系统的getLocation不要出现一直进入fail的情况

bug描述:

进入页面时先用用permision.judgeIosPermission('location')判断app定位权限, (onshow里调用 checkLocationAuth方法)

确定了是开启状态 (checkLocationAuth 检测回调里把 locationAuth 自动 置为true)

但是getLocation 一直在走fail的回调 (如视频所示 点击右上角完成会触发下面贴的方法 get_location)

变量 locationAuth 是控制视频里那个定位开启提示显隐的。

我在进入fail回调的时候会在页面上显示一个开启定位的提示

重启了app之后就正常了

2021-09-14 22:35 负责人:无 分享
已邀请:

该问题目前已经被锁定, 无法添加新回复