在模拟器中启用 CoreLocation

CoreLocation enabled in simulator

didUpdateLocations 未触发 - CLLocationManagerDelegate 已通过 viewcontroller 作为代表

正确实施
import Foundation
import UIKit
import CoreLocation

protocol LocationServiceDelegate {
    func tracingLocation(currentLocation: CLLocation)
    func tracingLocationDidFailWithError(error: NSError)
}

class LocationService: NSObject, CLLocationManagerDelegate {

    static var sharedInstance = LocationService()

    var locationManager: CLLocationManager?
    var currentLocation: CLLocation?
    var delegate: LocationServiceDelegate?
    var paymentVC: PaymentViewController?

    override init() {
        super.init()

        self.locationManager = CLLocationManager()
        guard let locationManager = self.locationManager else {
            return
        }

        if CLLocationManager.authorizationStatus() == .notDetermined {
            locationManager.requestAlwaysAuthorization()
        }

        locationManager.distanceFilter = 200

    }

    func startUpdatingLocation() {
        print("Starting Location Updates")
        self.locationManager!.startUpdatingLocation()
    }

    func stopUpdatingLocation() {
        print("Stop Location Updates")
        self.locationManager?.stopUpdatingLocation()
    }

    func locationManager(_ manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {

        guard let location = locations.last else {
            return
        }

        self.currentLocation = location
        updateLocation(currentLocation: location)
    }

    private func locationManager(manager: CLLocationManager, didFailWithError error: Error) {
        updateLocationDidFailWithError(error: error as NSError)
    }

    private func updateLocation(currentLocation: CLLocation){
        guard let delegate = self.delegate else {
            return
        }
        delegate.tracingLocation(currentLocation: currentLocation)
    }

    private func updateLocationDidFailWithError(error: NSError) {
        guard let delegate = self.delegate else {
            return
        }
        delegate.tracingLocationDidFailWithError(error: error)
    }
}

corelocation 跟踪没有在模拟器中触发。然而,这是启用的。

enter image description here 不幸的是,我现在无法使用设备进行测试

我知道在模拟器上模拟核心位置跟踪的唯一方法是选择模拟器调试选项卡中可用的位置选项之一。