删除iOS中的后台位置提醒?

时间:2017-04-20 08:54:21

标签: ios swift location core-location

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

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

我一直在努力解决这个问题很长一段时间并且阅读了很多关于它的问题,但找不到我正在寻找的答案。 我已经实现了两个选项:

选项1 - 使用中的请求

locationManager.requestWhenInUseAuthorization()):

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

  1. 有没有办法删除此横幅?或者只在很短的时间内得到它?再次 - 我 不能使用locationManager.stopUpdatingLocation() - 因为我需要 他们在后台。
  2. 选项2 - 始终请求(locationManager.requestAlwaysAuthorization()):

    过了一会儿,我的用户得到了背景位置可怕的提示信息。示例:

      

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

    1. 有没有办法删除此邮件? (以Waze为例 - 同样的 权限,但我很确定我从未收到过这样的消息)
    2. 我是否可以停止在后台中获取位置更新 应用程序被终止?并避免应用程序被唤醒(我实际上不想要这些位置)?我试着用 终止应用时locationManager.stopUpdatingLocation() applicationWillTerminate(_ application: UIApplication)
    3. 似乎两者都不仅是可以阻止用户的糟糕用户体验,而且在其他基于位置的应用程序中也非常罕见。

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

1 个答案:

答案 0 :(得分:2)

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

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

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

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

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

  

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

     

如果应用在后台获取用户的位置,则无法采取任何开发人员操作来避免此确认。

Source: Apple Forums

Alert

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