【发布时间】:2020-08-06 16:35:38
【问题描述】:
我在 iOS 位置授权过程中遇到意外行为。这是我的步骤,包括屏幕抓取
- 我在 iOS 13 上请求“始终”授权。
- 我只授予应用“允许一次”授权,该授权授予用户临时“使用时”授权。
- 我再次请求“始终”授权。
- 这一次,没有显示授权提示,
didChangeAuthorization委托方法给出了.authorizedAlways - 但是,当我在“设置”应用中查看授权状态时,它显示“下次询问”,这对应于
.notDetermined的授权状态。
我的问题:
- 为什么我第二次请求“始终”授权时没有第二次提示?
- 为什么委托方法在我没有实际授权的情况下提供
.authorizedAlways状态? - 为什么设置应用显示授权状态为
.notDetermined,而委托方法说是.authorizedAlways。
我觉得这是 iOS 中的一个错误,但我也可能只是误解了授权流程的工作方式。你怎么看?
我没能在iOS13的真机上测试这个,不知道是不是模拟器的问题?
【问题讨论】:
-
这个WWDC video解释得很好。
-
@Don 我看过视频,知道 iOS 13 的变化有临时和临时授权。我看不到视频如何解释我提出的三个问题中的任何一个?
-
该视频似乎非常具体地解决了这些问题。例如。 “因此,您的应用程序始终要求授权,然后用户在使用时授予它。现在,如果用户进入设置,他们将看到您的应用程序具有使用授权。但是,Core Location 已经给你的代表回了电话,说它总是得到授权。”这不是非常具体地回答了问题 2 和 3 吗?并且它谈到第二个“总是”提示不会出现,直到需要始终权限的“事件”发生(例如地理围栏或其他),回答问题 1。
-
仅供参考,您可能想具体说明您正在谈论的 iOS 13 版本,因为他们在 13.4 中调整了状态更改逻辑。
标签: ios swift core-location ios13