海角
海角
  • 发布:2023-02-08 13:42
  • 更新:2023-02-08 16:37
  • 阅读:1065

【报Bug】iOS 定位权限显示问题

分类:uni-app

产品分类: uniapp/App

PC开发环境操作系统: Mac

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

HBuilderX类型: 正式

HBuilderX版本号: 3.6.18

手机系统: iOS

手机系统版本号: iOS 15

手机厂商: 苹果

手机机型: 6s plus

页面类型: nvue

vue版本: vue2

打包方式: 云端

项目创建方式: HBuilderX

操作步骤:

必现

预期结果:

第一次进入后台后提示始终允许权限 或者 第一次打开app直接提示始终允许

实际结果:

第二次进入后台才提示

bug描述:

iOS云打包后使用后台定位 第一次启动app只有允许一次、使用app时允许和不允许三个选项 (如下图)。 选择使用app时允许后可以获取定位,这时候app进入后台后 会报这个错误"errMsg": "getLocation:fail Error Domain=PGLocation Code=2 \"不能获取到位置\" UserInfo={NSLocalizedDescription=不能获取到位置},https://ask.dcloud.net.cn/article/282", 然后再打开app定位能够获取,但是重新进入后台才会弹出保持仅使用期间、更改为始终允许两个选项(如下图),这时候选择始终允许 再次进入后台,才能后台定位 1.这里面必须第二次进入后才才出现这个弹框。第一次没有且报错 ,这是为什么。2.可有办法在第一次就出现始终允许的选项 已经配置了NSLocationAlwaysUsageDescription 看别人说要离线打包才行 云打包不行吗

2023-02-08 13:42 负责人:无 分享
已邀请:
BoredApe

BoredApe - 有问题就会有答案。

图一是调用uni.getLocation方法触发的。
图二是在manifest.json中配置UIBackgroundModes弹出的

  • 海角 (作者)

    你没解决我提的问题啊

    2023-02-08 15:44

BoredApe

BoredApe - 有问题就会有答案。

iOS13之前的系统。在弹出的权限申请框中有始终允许。

但是iOS13后 用户只可以选择【使用APP时允许】或者【只允许一次】

当选择【使用APP时允许】选项后,并且当app退到后台后如果需要还持续定位,系统会择机弹窗提示用户是否要升级权限为始终允许。

总结:iOS13之后的系统不能直接设置始终允许定位。需要分两步获取始终定位的权限。无法主动用代码去实现控制。

  • 海角 (作者)

    这个明白了 但是目前是进入后台的第二次才提示你最后一个图片 第一次进入后台报错 获取不到数据

    2023-02-09 08:35

  • 海角 (作者)

    我使用离线打包 就没有这个问题了

    2023-02-09 08:35

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