查看 statUpdatingLocation 在 Swift 中是否处于活动状态

Find out if statUpdatingLocation is active in Swift

我在 swift 中有一个基于位置的应用程序 运行。我正在尝试检测 self.locationManager.startUpdatingLocation() 当前是否处于活动状态。

我正在努力寻找如何执行此操作,也无法在 Internet 上找到很多相关信息。我相当确定这很容易实现。我不想设置 BOOL,因为这需要是全局的。

    if CLLocationManager.locationServicesEnabled() && /* START UPDATE LOCATION GOES HERE */ {

        self.locationManager.delegate = self
        self.locationManager.desiredAccuracy = kCLLocationAccuracyBest
        self.locationManager.requestAlwaysAuthorization()
        self.locationManager.startUpdatingLocation()

        //self.locationManager.startMonitoringSignificantLocationChanges()

        sender.setTitle("END DAY", forState: UIControlState.Normal)

    } else {


    }

你无法知道startUpdatingLocation()是否是"active",因为是你说的

如果您需要从其他地方跟踪它,请创建一个 Bool 属性 并在您调用 startUpdatingLocation() 时将其设置为 true 并在您调用 false 时将其设置为 false呼叫 stopUpdatingLocation().

我知道这是一个迟到的答案。但如果您想知道 locationManager 是否正在更新,这可能是一种解决方案。

您的应用中应该只有一个 CLLocationManager 实例。所以创建一个单例是理想的。然后,您应该覆盖方法 startUpdatingLocationstopUpdatingLocation.

(Swift 3)

import CoreLocation

class LocationManager: CLLocationManager {
    var isUpdatingLocation = false

    static let shared = LocationManager()

    override func startUpdatingLocation() {
        super.startUpdatingLocation()

        isUpdatingLocation = true
    }

    override func stopUpdatingLocation() {
        super.stopUpdatingLocation()

        isUpdatingLocation = false
    }
}

用法:

  if LocationManager.shared.isUpdatingLocation {
    print("Is currently updating location.")
  } else {
    print("Location updates have stopped.")
  }