【问题标题】:iOS 13 - requesting "When in Use" location permissions prevents me from requesting "Always" lateriOS 13 - 请求“使用时”位置权限会阻止我稍后请求“始终”
【发布时间】:2019-11-04 21:50:04
【问题描述】:

我们的应用在启动时请求“使用时”位置权限。稍后,如果用户想要打开某个功能,我们会请求“始终”位置权限。关于这些更改的WWDC talk 表明这应该是可能的:

如果您的应用预先请求使用时授权,并且用户在此提示下授予了它,那么您的应用已收到使用时授权,没有临时期限,也没有后续提示。当你引入一个真正需要它的杀手级新功能时,它也会节省它的机会,以便以后总是请求它。

但是在 iOS 13 中,当我第一次请求“使用时”权限时,我看到后来对 [CLLocationManager requestAlwaysAuthorization] 的调用被默默地丢弃,没有任何迹象。如果我删除第一个调用以获取“使用时”权限,则请求始终可以正常工作。这是预期的行为吗?

【问题讨论】:

  • 这是预期的行为。

标签: ios core-location cllocationmanager ios13


【解决方案1】:

无声无息地丢弃

它不是“默默地丢弃”。它被默默地授予。继续使用需要在后台始终授权的功能。

【讨论】:

  • 你是对的,我在调试时错过了这个。后续问题:对于相同的工作流程,但用户在初始对话框中选择“允许一次”而不是“使用时允许”。我看到,对于随后对 requestAlwaysAuthorization 的调用,我们仍然默默地获得 Always 权限。但是,当需要稍后实际使用该权限时,这将如何工作?是否与他们最初选择“使用时允许”相同 - 因为他们会在使用时获得一个对话框,询问他们是否要将应用程序提升为“始终允许”?
  • 一次是一次。但一次就是你所需要的。下一次,你可以再问一次。
  • 我不明白......在这种情况下,我看到随后对 requestAlwaysAuthorization 的调用默默地授予权限。那么,如果我的应用未运行/未使用,那么在使用权限时会发生什么?
  • 您已经拥有“使用时”授权,即使只有一次。当您进入后台时,您要求始终授权并立即配置您的后台位置监控。当你在后台时它可以工作。
  • 我确实多次观看了该视频。对于它的价值,我看到的“允许一次”场景是用户可以授予“始终允许”的后续对话框永远不会出现。从应用程序的角度来看,这是一种误导,因为就像我说的那样,如果它调用 requestAlwaysAuthorization 它会得到它始终可以访问的回调,但我认为我的应用程序正在采取不同的方向,所以我不倾向于进一步调查。
猜你喜欢
  • 2015-12-07
  • 2014-11-17
  • 1970-01-01
  • 2020-02-19
  • 2014-10-01
  • 2018-07-29
  • 2022-08-02
  • 2015-01-19
相关资源
最近更新 更多