【问题标题】:Blue banner '%MyApp% is Using Your Location' for app that uses location services only when active仅在活动时才使用位置服务的应用的蓝色横幅“%MyApp% 正在使用您的位置”
【发布时间】:2014-12-19 03:57:26
【问题描述】:

在我的应用中,每当应用激活时,我都会更新用户位置。一旦收到更新的位置或在applicationWillResignActive: 中,我就会停止CLLocationManager。 在Info.plist 中有一个NSLocationWhenInUseUsageDescription 并带有适当的描述。

如果应用程序被激活,然后立即移至后台,则显示“%MyApp% 正在使用您的位置”的蓝色横幅会出现不到一秒钟。一旦调用applicationWillResignActive:,此横幅就会隐藏。

我在 Google 地图中发现了同样的问题,但在 Apple 地图中没有。

有没有办法完全摆脱这个横幅?我还应该做些什么来让 iOS 开心吗?我不希望它吓到我的用户并阻止他们使用需要位置的酷功能。

【问题讨论】:

  • 你的意思是,用户没有在弹出窗口中点击“允许”和“取消”并立即移至后台..?
  • 你的意思是你想在不告诉他们的情况下使用他们的位置?为了解决您的问题,您可以在十秒后开始获取位置。

标签: ios ios8 cllocationmanager


【解决方案1】:

您可能在 info.plist 中将 location 设置为 Background mode。如果你删除它,那么蓝条就不会再出现了。

或者,您可以在CLLocationManager 上使用requestAlwaysAuthorization 代替requestWhenInUseAuthorization(并在info.plist 文件中提供相关的NSLocationAlwaysUsageDescription),然后它也不会出现。

在我的情况下,我的应用在某些情况下会在后台使用位置信息,我希望在这种情况下出现蓝条。但我不希望它在退出应用程序时出现,而在后台没有位置。据我所知,这是不可能实现的(我已经问过了here)。

编辑:请注意,从 iOS-9 开始,您可以确保蓝条仅在用户真正希望应用在后台使用该位置时出现。见this answer

【讨论】:

  • 不要使用答案来提问。如果您有问题,请作为问题提出!
  • 第一部分是答案。最后一部分只是指出答案的局限性。我现在改写了。
  • 当然,我只是说也许有人可以帮助解决您遇到的问题,他们不会看到您在这里寻求帮助。恐怕我不能,但这是一个聪明的程序员的大世界,所以你永远不知道!所以我鼓励你把它当作一个问题来问。
  • @matt 谢谢,我已经把它作为一个单独的问题问过了。
  • 我在您的答案中添加了一个链接到您的单独问题。我认为这很有用(一方面,它使您的问题出现在右侧的已链接类别中),但我并不是要干涉;如果您不喜欢它,请回滚我的编辑!
【解决方案2】:

如果您想使用CLLocationManager 访问用户的位置,则应用需要显示该横幅并且用户需要按“允许”。如果他们不这样做,您的位置管理器将无法检测到用户的位置。

Apple 的地图是一个特例,因为它是第一方应用程序。

【讨论】:

    猜你喜欢
    • 2015-09-29
    • 1970-01-01
    • 1970-01-01
    • 2017-02-20
    • 1970-01-01
    • 1970-01-01
    • 2015-10-26
    • 2015-01-23
    • 2017-03-12
    相关资源
    最近更新 更多