gpt4 book ai didi

iOS8 : Blue bar "is Using Your Location" appears shortly after exiting app

转载 作者:IT老高 更新时间:2023-10-28 11:47:00 24 4
gpt4 key购买 nike

我想在后台跟踪时获得蓝条,但不是。

我的应用在事件时始终使用定位服务,因此在 iOS8 中,我在 CLLocationManager 上使用 requestWhenInUseAuthorization。通常,当您关闭应用程序时,应用程序会停止跟踪您的位置,但用户可以选择让应用程序在后台跟踪他的位置的选项。因此,我在 Info.plist 文件中有 UIBackgroundModeslocation 选项。这非常有效:当切换到后台时,应用程序会不断获取位置更新,并且会出现一个蓝条,提醒应用程序正在使用位置服务。一切都很完美。

但问题是,当用户没有选择在后台跟踪时,蓝条也会出现。在这种情况下,我只需在进入后台时停止来自 AppDelegate 的位置更新:

- (void) applicationDidEnterBackground:(UIApplication *)application
{
if (!trackingInBackground) {
[theLocationManager stopUpdatingLocation];
}
}

蓝条在关闭应用程序后仅显示一秒钟,但看起来仍然很烦人。

我知道使用 requestAlwaysAuthorization 而不是 requestWhenInUseAuthorization 可以解决问题,但是我根本不会得到任何蓝条,在后台跟踪时也不会实际开启。

我已经在 applicationWillResignActive: 方法中尝试过 stopUpdatingLocation,但这没有任何区别。

有谁知道在后台跟踪时如何获得蓝条,但不知道时不知道?

最佳答案

我们经常向 Apple 报告事情,有时他们实际上会采取行动。正如问题中所述,为了防止蓝条很快出现,Apple 在 iOS-9 中的 CLLocationManager 上引入了一个新属性。在您知道需要在后台使用该位置的那一刻进行设置:

theLocationManager.allowsBackgroundLocationUpdates = YES;

或者,以向后兼容的方式:

if ([theLocationManager respondsToSelector:@selector(setAllowsBackgroundLocationUpdates:)]) {
[theLocationManager setAllowsBackgroundLocationUpdates:YES];
}

在 swift 中:

if #available(iOS 9.0, *) {
theLocationManager.allowsBackgroundLocationUpdates = true
}

如果未设置此属性,则退出应用时不会出现蓝条,并且您的应用无法使用用户位置。请注意,在 iOS 9 中,您必须设置属性才能在后台使用位置信息。

the WWDC video苹果的解释。

关于iOS8 : Blue bar "is Using Your Location" appears shortly after exiting app,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27132698/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com