作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
复制步骤如下:
最佳答案
为了补充@greenOrange 在他的更新中所写的内容,您在这里遇到的情况与 iOS 13 的“临时性始终”位置权限“功能”有关。
一些背景:在 iOS 12 及更低版本上,App Store 中的许多应用程序都在请求 authorizedAlways
位置访问,但实际上并不需要它。因此,Apple 删除了请求 authorizedAlways
的选项。马上。这有几个含义:
requestAlwaysAuthorization()
在 iOS 13.0+ 上,弹出的面向用户的对话框永远不会提供实际选择 authorizedAlways
的选项。 .用户将看到的最普遍的选项是 authorizedWhenInUse
. authorizedWhenInUse
时在对话中,应用程序将进入所谓的“始终临时”状态。这意味着(以编程方式)询问当前位置权限设置将返回 authorizedAlways
,即使设置应用程序会显示 authorizedWhenInUse
.是的,这非常令人困惑。这里有更多关于此的信息(快进到 4:23 以获得有用的图形):https://developer.apple.com/videos/play/wwdc2019/705 authorizedWhenInUse
或将其更改为 authorizedAlways
.这个对话框看起来像一个普通的警报 Controller ,但顶部有一张 map ,显示了应用程序在过去 72 小时内访问用户位置数据的所有地点。注意:此对话框通常出现在手机的主屏幕上,而不是在您的应用程序本身中。 requestWhenInUseAuthorization()
,并且假设它是由用户授予的,立即调用
requestAlwaysAuthorization()
获得另一个系统对话,提示用户授予
authorizedAlways
(并绕过“临时总是”状态)。这显然会对您的 UI/UX 产生影响,但总体而言,对于开发人员而言,这比 iOS 13.0-13.3 的体验更好。它可能不是一个完美的解决方案,但至少它可以帮助我们避免令人困惑的“始终临时”状态。
关于CLLocationManager.authorizationStatus() 返回 alwaysInUse 即使在设备设置中选择了 authorizedWhenInUse,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58167889/
复制步骤如下: 从设备中完全删除应用程序 从 XCode 安装它 提示时选择“使用时” 在应用中开启区域监控 在第 4 步我检查了这个 CLLocationManager.authorizationS
我是一名优秀的程序员,十分优秀!