我写了这个程序,当应用程序显示在屏幕上时它可以工作
如果应用程序在后台,它会停止打印纬度,当我恢复应用程序时,它会再次开始打印。
我已经在 xcode 中启用了后台模式,并且还检查了位置更新
,为什么我的应用程序仍然没有在后台运行?
如果应用程序正在运行,只是print
函数在后台不起作用,我怎么知道应用程序正在运行?
class ViewController: UIViewController,
CLLocationManagerDelegate {
var locationManager: CLLocationManager = CLLocationManager()
var startLocation: CLLocation!
func locationManager(_ manager: CLLocationManager,
didUpdateLocations locations: [CLLocation])
{
let latestLocation: CLLocation = locations[locations.count - 1]
print(latestLocation.coordinate.latitude)
}
override func viewDidLoad() {
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.delegate = self
locationManager.requestWhenInUseAuthorization()
locationManager.startUpdatingLocation()
startLocation = nil
}
}
最佳答案
首先,您的问题:
locationManager.requestWhenInUseAuthorization()
这要求您的位置管理器仅在您的应用程序位于前台时更新其位置。您必须将其更改为:
locationManager.requestAlwaysAuthorization()
如果它仍然不起作用,请通过在委托(delegate)函数中添加打印语句来确保您的位置管理器完全触发更新。
二、如何在后台打印东西:
我最喜欢的方式是在 UserDefaults 中记录内容,因为这些内容在应用重启后仍然存在。例如,我会将打印语句设置为 log
键的值。重新启动后,我将从 log
键中读取 UserDefaults 的内容。
关于ios - 我怎么知道我的应用程序在后台运行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43839247/