旧时光
旧时光
  • 发布:2019-11-11 12:23
  • 更新:2019-11-27 11:06
  • 阅读:1153

【报Bug】App权限判断和提示插件、与 uni.getLocation 这个api在同一个页面同时使用,会导致页面无限重复加载

分类:uni-app

详细问题描述

(DCloud产品不会有明显的bug,所以你遇到的问题大都是在特定环境下才能重现的问题,请仔细描述你的环境和重现方式,否则DCloud很难排查解决你的问题)

[内容]
插件市场官方插件“App权限判断和提示插件,地址:https://ext.dcloud.net.cn/plugin?id=594”,这个插件在引入的页面,如果使用 'uni.getLocation' 这个api会导致页面无限重复自动加载。下面有示例代码,在控制台运行到app,在开发工具控制台即可看到无限打印日志

重现步骤

[步骤]
第一步:在页面引入 插件:import permision from "@/js_sdk/wa-permission/permission.js"
第二步:在onShow:{
里面调用 'uni.getLocation' 这个api
}
[结果]
导致页面无限重复自动加载
[期望]
页面不会出现无限重复自动加载
[如果语言难以表述清晰,拍一个视频或截图,有图有真相]

IDE运行环境说明

HBuilderX
[HBuilder 或 HBuilderX。如果你用其他工具开发uni-app,也需要在此说明]

[IDE版本号]
2.3.7.20191024
[windows版本号]
win10
[mac版本号]

uni-app运行环境说明

[运行端是h5或app或某个小程序?]
安卓app
[运行端版本号]

[项目是cli创建的还是HBuilderX创建的?如果是cli创建的,请更新到最新版cli再试]

[编译模式是老模板模式还是新的自定义组件模式?]

App运行环境说明

[Android版本号]

[iOS版本号]

[手机型号]
小米8
[模拟器型号]

附件

[IDE问题请提供HBuilderX运行日志。菜单帮助-查看运行日志,点右键打开文件所在目录,将log文件压缩成zip包上传]

[App问题请提供可重现问题的代码片段,你补充的细一点,问题就解决的快一点]

[App安装包或H5地址]

[可重现代码片段]

联系方式

[QQ]

2019-11-11 12:23 负责人:无 分享
已邀请:
DCloud_uniCloud_WYQ

DCloud_uniCloud_WYQ

使用MIUI 11.0.4 没能复现,升级一下HBuilderX版本试一下

  • 旧时光 (作者)

    作者你好,首先感谢你的解答。我的开发工具确实是最新的,刚刚还更新试了一下,这个问题确实存在,请打开我的那个bug的demo,我在onShow函数里面的代码是: onShow() {

    uni.getLocation({

    type: 'gcj02',

    success: (res) => {

    console.log("获取地理位置成功:", res);

    },

    fail: (res) => {

    console.log("获取地理位置失败:", res);

    }

    });

    }, 这个,请作者运行到真机,安卓就可以,然后在开发工具的控制台就可以看到一直不停的打印 console.log("获取地理位置失败:", res); 这个日志。我的需求是,用你们封装的js_sdk/wa-permission/permission.js 这个插件判断用户有没有开启定位授权,如果有开启就调用uni.getLocation重新获取一下经纬度,由于permission这个插件即使用户开启了也没有回调函数,所以我只能在onShow函数里面每次都判断。并且这个bug只有在onShow函数里面才会重现,这个问题困扰我很久了,希望作者好好帮我看看,谢谢了啊

    2019-11-27 09:38

  • 旧时光 (作者)

    作者你好,首先感谢你的解答。我的开发工具确实是最新的,刚刚还更新试了一下,这个问题确实存在,请打开我的那个bug的demo,我在onShow函数里面的代码是: onShow() {

    uni.getLocation({

    type: 'gcj02',

    success: (res) => {

    console.log("获取地理位置成功:", res);

    },

    fail: (res) => {

    console.log("获取地理位置失败:", res);

    }

    });

    }, 这个,请作者运行到真机,安卓就可以,然后在开发工具的控制台就可以看到一直不停的打印 console.log("获取地理位置失败:", res); 这个日志。我的需求是,用你们封装的js_sdk/wa-permission/permission.js 这个插件判断用户有没有开启定位授权,如果有开启就调用uni.getLocation重新获取一下经纬度,由于permission这个插件即使用户开启了也没有回调函数,所以我只能在onShow函数里面每次都判断。并且这个bug只有在onShow函数里面才会重现,这个问题困扰我很久了,希望作者好好帮我看看,谢谢了啊

    2019-11-27 09:39

  • 旧时光 (作者)

    这个是uni-app,不是MIUI

    2019-11-27 09:40

DCloud_uniCloud_WYQ

DCloud_uniCloud_WYQ

MIUI !== MUI , 我看你手机写的是小米8 才特意强调一下MIUI的

DCloud_uniCloud_WYQ

DCloud_uniCloud_WYQ

你的意思是拒绝定位权限之后在onShow里面无限失败是吧,这个跟permission这个js没有关系,不推荐在onShow里面使用需要权限的api,后续会进行优化

  • 旧时光 (作者)

    谢谢,敬请期待这个问题可以早点解决,我目前在想想办法,用其他方法解决吧

    2019-11-27 11:13

  • DCloud_uniCloud_WYQ

    回复 旧时光: 可以判断没有权限的时候就不触发getLocation

    2019-11-27 11:38

  • 旧时光 (作者)

    回复 DCloud_uniCloud_WYQ: 嗯嗯 我确实是这样处理的,但是呢,只有在onShow的里面,都会出现这个问题哦

    2019-11-27 14:02

  • 1***@qq.com

    回复 DCloud_uniCloud_WYQ: 在onShow里判断,如果没有权限onShow里也是无限触发

    2020-06-10 15:41

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