iOS应用中的位置权限(始终或在使用时)

定位服务一直是Apple向开发人员提供的功能最强大的框架/ API之一,因此,您可以找到我们经常使用的大多数(如果不是全部)应用中正在使用的定位服务。

核心位置框架为开发人员提供了多种跟踪用户位置的方法,今天我们将讨论两种最常见的方法-要求“使用时”和“始终”请求位置访问。 顾名思义,“使用中”授权可让您的应用在前台或活动状态下访问您的位置,而“始终”授权可让您的应用访问其位置(即使在后台)。

在不过多讨论细节的情况下,让我们谈谈如何在应用程序中请求这些权限。 根据您的要求,您必须在info.plist文件中包括以下密钥:

  • 对于“始终”授权,包括-NSLocationAlwaysUsageDescription”
  • 对于“使用时”授权,请包括-“ NSLocationWhenInUseUsageDescription”

这些键的值应为文本字符串,解释为什么首先需要这些权限,并且在请求权限时显示的警报中会向用户显示相同的文本字符串。 如果您未能在info.plist文件中添加适当的密钥,则不会向用户显示位置提示。

如果我的应用程序可以同时访问前台和后台位置,为什么不总是使用该选项?

就像有人正确地说的那样,强大的能力带来了巨大的责任,只有在为您的应用程序添加确定的价值时,才应请求“始终”授权。 请求“始终”授权不仅会引起隐私问题,而且在后台访问用户的位置也会影响设备的电池。

Uber最近在最近的更新中将授权从“使用时”更改为“始终”,这导致用户和技术社区的强烈反对。

优步表示,需要在后台访问位置,以改善接送服务,客户支持和安全目的。

用户唯一可用的选项是允许“始终”访问,或者在应用程序内收到以下提示,从而消除了他们作为Uber用户最喜欢该应用程序的“易用性”

那么,作为开发人员,我还有哪些其他选择? 如果我希望“始终”访问权限在我的应用程序中提供某些丰富功能,但同时又考虑到用户的隐私或电池使用情况,同时又为用户提供了“使用中”权限的选项,并且仍为他们提供使用权限,该怎么办?很棒的用户体验。

是否可以让您的用户在“始终”或“在使用中”授权之间进行选择?

幸运的是,您愿意!

第一步是在info.plist文件中添加“ NSLocationWhenInUseUsageDescription ”和“ NSLocationAlwaysUsageDescription ”键。 要记住的是,仅向用户显示一次授权提示,因此您应该继续询问“始终”授权:

CoreLocationManager()。requestAlwaysAuthorization

如果用户为您提供了在后台访问位置的权限,您应该会感到非常高兴,但是不幸的是,如果用户不允许,您总是可以提示用户进入设备的隐私设置并将授权更改为“使用时”。

您可以使用“ UIApplicationOpenSettingsURLString”将用户直接导航到设置应用内的应用设置屏幕。

最后,作为开发人员,我们应该构建能够为用户提供丰富直观体验的应用程序,但同时也将其隐私问题放在首位,我希望Uber团队能够理解这一点!