【问题标题】:Removing the background location alerts in iOS?删除 iOS 中的后台位置警报?
【发布时间】:2017-09-16 19:17:45
【问题描述】:

我正在编写一个跟踪用户位置的导航应用程序。

为了继续显示有关路线的通知(当手机被锁定时,接听电话等) - 我还需要在应用程序处于后台时继续跟踪位置:(Capabilities>Background Modes>Location updates, locationManager.allowsBackgroundLocationUpdates = true)

我已经为这个问题苦苦挣扎了很长时间,并且阅读了很多关于它的内容,但找不到我正在寻找的答案。 我已经实现了这两个选项:

选项 1 - 使用中的请求

(locationManager.requestWhenInUseAuthorization()):

每当应用程序处于后台时,每个应用程序顶部都会有一个额外的蓝色位置警报栏。

  1. 有没有办法删除这个横幅?还是只在很短的时间内得到它?再次 - 我 不能使用locationManager.stopUpdatingLocation() - 因为我需要 他们在后台。

选项 2 - 始终请求 (locationManager.requestAlwaysAuthorization()):

一段时间后,我的用户收到后台位置可怕的提示消息。示例:

“APP”一直在后台使用您的位置。你想要_____吗 继续允许吗?

  1. 有没有办法删除这条消息? (以 Waze 为例 - 相同 权限,但我很确定我从来没有收到过这样的消息)
  2. 我可以停止在后台获取位置更新只有当 应用程序被终止?并避免应用程序被唤醒(我实际上不想要这些位置)?我试着用 locationManager.stopUpdatingLocation() 终止应用程序时 - 开启 applicationWillTerminate(_ application: UIApplication)

似乎这两者不仅是糟糕的用户体验,会阻碍用户,而且在其他基于位置的应用中也非常少见。

我无法弄清楚我在这里缺少什么。

【问题讨论】:

  • 没有办法。
  • 使用只被提醒一次后台位置使用。您可能只是不记得何时收到 waze 的提示。

标签: ios swift location core-location


【解决方案1】:

您提到的两种机制都是操作系统为了保护用户而设置的。它们不仅会提醒用户后台应用程序正在检索其位置,而且还会提醒用户在不再需要时可能会消耗电池电量。

没有办法避免这种情况,所以您应该根据您的应用程序的需要来决定哪一个最适合。

例如,某些应用会提供路线指示,这些应用往往会在顶部显示蓝色横幅(请参阅 Google Maps 甚至 Apple Maps)。

另一方面,其他一些应用程序有兴趣随时获取位置更新(例如健身应用程序或跟踪您所有运动的应用程序,请参阅Moves)。在这种情况下,用户将收到一次有关此应用程序在后台持续使用其位置的事实的警报,如果他们接受它,他们将不会再被打扰(iOS 8 及更高版本)。

以下是 Apple 员工关于选项 2 的一些信息:

在应用获得“始终”授权并开始在后台使用定位服务几天后,系统会要求用户再次确认他们仍希望此应用在后台跟踪他们的位置。

如果应用正在后台获取用户的位置,开发人员无法采取任何措施来避免这种确认。

Source: Apple Forums

Source: About privacy and Location Services in iOS 8 and later

【讨论】:

  • 如何选择此警报中显示的消息? Info.plist 键是什么?
猜你喜欢
  • 2017-08-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-04-11
  • 1970-01-01
  • 1970-01-01
  • 2017-07-12
相关资源
最近更新 更多