iOS 13位置授权流中的错误?
我在iOS位置授权过程中遇到意外行为。以下是我的步骤,包括屏幕抓取iOS 13位置授权流中的错误?,ios,swift,core-location,ios13,Ios,Swift,Core Location,Ios13,我在iOS位置授权过程中遇到意外行为。以下是我的步骤,包括屏幕抓取 我在iOS 13上请求“始终”授权 我只授予应用程序“允许一次”授权,即授予用户临时“使用时”授权 我再次请求“始终”授权 这一次,不显示授权提示,didChangeAuthorizationdelegate方法给出.authorizationdalways 但是,当我在设置应用程序中查看授权状态时,它会显示“询问下一次”,这对应于授权状态.notDetermined 我的问题: 为什么在我第二次请求“始终”授权时没有第二次
- 我在iOS 13上请求“始终”授权
- 我只授予应用程序“允许一次”授权,即授予用户临时“使用时”授权
- 我再次请求“始终”授权
- 这一次,不显示授权提示,
delegate方法给出didChangeAuthorization
.authorizationdalways
- 但是,当我在设置应用程序中查看授权状态时,它会显示“询问下一次”,这对应于授权状态
.notDetermined
.authorizedAllways
状态.authorizedAllways
时,设置应用程序指示授权状态是.notDetermined
在WWDC 2020视频中,他们描述了iOS 13.4中引入的变化。您可以请求“使用时”,并假设用户已授予,您可以请求“始终”并获得第二个警报(这次询问用户是否要升级到“始终”)。您只需要“隐私-使用时的位置使用说明”和“隐私-位置始终和使用时的位置使用说明”使用字符串。这很好地解释了这一点。@Don我看过视频,知道iOS 13在临时和临时授权下的变化。我看不出这段视频如何解释我提出的三个问题中的任何一个?这段视频似乎非常具体地解决了这些问题。例如,“因此,你的应用程序请求始终授权,然后用户在使用时授予它。现在,如果用户转到“设置”,他们会看到你的应用程序在使用时具有授权。但是,Core Location已经给你的代表回了电话,告诉他它收到了始终授权。”这不是非常明确地回答了问题2和3吗?第二个“始终”提示在需要始终权限的“事件”发生之前不会显示(如geofence或其他),回答问题1。仅供参考,您可能需要明确说明您所谈论的iOS 13版本,因为他们在13.4.1中调整了状态更改逻辑。我当时一定是误解了这个计划的目的。我认为只有在请求“始终”并在使用时接收后才能授予它,以便以后可以升级为“永久始终”或在使用时保持“永久”。我不知道再次调用requestAlwaysAuthorization()时也会授予此权限,在用户根据@Paulw11的回答选择“允许一次”后,在用户选择允许一次后第二次调用
requestAlwaysAuthorization()
后,我收到了一个临时始终授权。据我所知,临时始终只有在用户请求始终并在使用应用程序时给予之后才能授予。我想我希望CoreLocation忽略第二个requestAlwaysAuthorization()
调用,而不是将其升级为临时always。我发现,短时间后请求“使用中”并后跟“始终”也会触发“始终”权限请求对话框(只要“使用中”最初被授予)@Rob。我理解,只有在生成实际需要始终授权的事件后,才会出现“延迟始终”提示。实际上,我感到困惑的是,第二次调用requestAlwaysAuthorization()
时,总是升级到临时版本。我想我确实理解为什么CoreLocation在再次使用时不会显示相同的提示,因为用户已经看到了它,我不明白的是(而且我也不认为我在视频或文档中看到过任何地方)是否通过调用requestAlwaysAuthorization
两次升级到“临时”始终?上面讨论的视频明确指出,用户只需执行任何需要“始终”权限的操作,这将触发