我怎么知道我的应用程序在后台工作?

时间:2017-05-08 03:16:35

标签: ios swift cocoa-touch cllocation background-mode

我已经编写了这个程序,当应用程序在屏幕上显示时它正常工作

如果应用程序在后台停止打印纬度,当我恢复应用程序时,它将再次开始打印。

我在xcode中启用了后台模式,还检查了Location updates,为什么我的应用仍未在后台运行?

如果应用正在运行,只有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

    }
}

1 个答案:

答案 0 :(得分:2)

首先,您的问题:

locationManager.requestWhenInUseAuthorization()

这会要求您的位置管理员仅在您的应用位于前台时更新其位置。您必须将其更改为:

locationManager.requestAlwaysAuthorization()

如果仍然无效,请确保您的位置管理员通过在委托函数中添加print语句来触发更新。

其次,如何在后台打印东西:

我最喜欢的方法是在UserDefaults中记录内容,因为这些内容会在应用重启时保持不变。例如,我将我的print语句设置为log键的值。重启后,我将从log键读取UserDefaults的内容。