iOS 14:允许位置访问 | 总是找不到菜单

Sri*_*har 5 xcode ios swift ios14

我尝试使用 iOS 14 模拟器在 Xcode 12 beta 2 中运行我的项目。我发现在“允许位置访问设置”屏幕中找不到“始终”菜单。

在此处输入图片说明

我已经给出了以下 info.plist

<key>NSLocationAlwaysAndWhenInUseUsageDescription</key>
<string>TEST APP</string>
<key>NSLocationAlwaysUsageDescription</key>
<string>TEST APP</string>
<key>NSLocationWhenInUseUsageDescription</key>
<string>TEST APP</string>
Run Code Online (Sandbox Code Playgroud)

Sha*_*hra 7

“始终允许”选项已从初始位置权限提示中删除。您可以稍后将此选项作为新提示获取。那么问题来了,如果后台需要定位功能,我们该如何支持呢?

在此输入图像描述

实现这一目标的方法 -

  1. 在您的应用程序可以接收位置信息之前,请调用方法“locationManager.requestAlwaysAuthorization()” 。如果您的应用需要始终权限,并且您希望稍后收到始终权限的提示。

  2. 最初,用户可以选择“使用应用程序时”或选择一个新选项“允许一次”(iOS 13 本身引入)。

  3. 如果用户继续使用该应用,iOS 13 现在会自动提示将位置权限从“使用该应用时”升级为“始终允许”。

    在此输入图像描述

  4. 下次解锁设备并使用已授予的“使用应用程序时”权限启动应用程序后,您将收到#2 提示。

来源

这个 WWDC 2019 视频也表明这仍然是可能的: https: //developer.apple.com/videos/play/wwdc2019/705/

6:57 “...您可以在使用时首先请求授权,然后,在稍后的某个时刻,当用户与需要授权的应用程序功能进行交互时,稍后始终寻求授权...”


Bil*_*lal -1

无论您在应用程序中请求什么,相同的选项都会出现在应用程序的设置中。

如果您在使用时请求了仅使用requestWhenInUseAuthorization()方法的授权,CLLocationManagerWhile Using the App只会出现在您的应用程序设置中。

如果您请求始终使用requestAlwaysAuthorization() Always选项,则会出现在您的应用程序设置中。

您可以根据您的用例在应用程序中的某个时刻请求两者requestAlwaysAuthorization()requestWhenInUseAuthorization()