iOS 定位服务中"Always"和"While Using App"之间的差异



我对定位服务中的选项感到困惑。这三个选项是"始终"和"从不"和"使用应用程序时"。

最初,我认为"使用应用程序时"是指在前台使用应用程序时。

"总是"是指在前景或背景中使用它时。

但是这份文件

某些应用会要求仅在应用正在使用时使用您的位置信息。 当您在 前景,或者当它在后台使用时,其状态 条将指示。

其他应用程序会要求访问您的位置,即使该应用程序 未在使用中。当您允许应用始终使用您的位置信息时,iOS 会在应用发布后提醒您哪些应用可以使用您的位置信息 在后台使用您的位置。

混乱。那么"总是"和"使用应用程序时"有什么区别呢?

AlwaysWhen-in-use之间的主要区别在于:如果您使用的是后者并且您的应用程序被杀死(由用户或操作系统杀死),那么您的应用程序将停止接收 CoreLocation 服务更新。你的应用只有在前台和后台(假设你启用了后台位置功能)时才会接收更新。前一个权限将启动你的应用,即使它不在内存中也是如此。

您可以在此开发人员文档页面上阅读更多信息。以下是Apple开发人员文档的摘录:

使用时授权。您的应用可以使用大多数服务,但不能使用自动重新启动应用的服务。应用在前台运行时必须始终启动服务。如果为应用启用后台位置功能,则挂起的应用将在后台唤醒以处理位置事件。但是,如果你的应用未运行,则不会启动它。

始终授权。你的应用可以使用所有位置服务,并且可以从前台或后台启动这些服务。如果在应用未运行时发生与位置相关的事件,系统会启动应用并传递该事件。

使用授权:

当我们需要访问位置时,使用这种类型的授权 仅在后台和前台模式下。(像许多电子商务应用程序一样基于位置的建议应用程序)

此类型的授权仅支持标准位置服务, iBeacon测距, 航向服务, 地理编码服务.

当应用程序使用我们的位置时显示蓝色条。

始终授权:

当我们需要访问位置时,使用这种类型的授权 在背景、前景、杀戮和挂起状态。(跟踪应用程序,如Fitbit和Capchur)

这种类型的授权支持所有类型的位置服务,例如标准位置服务, 信标测距, 航向服务, 地理编码服务, 重大变化位置服务、访问服务和区域 监测。

当应用程序使用 我们的位置。

最新更新