startMonitoringSignificantLocationchanges не работает в swift

я добавил CLLocationManager в свое приложение, используя Swift в файле AppDelegate.

в Appdelegate.swift file,

import CoreLocation
@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate, CLLocationManagerDelegate {
var locationManager: CLLocationManager!

в методе didbecomeActive:

func applicationDidBecomeActive(application: UIApplication) {
    if((locationManager) != nil)
    {
        locationManager.stopMonitoringSignificantLocationChanges()
        locationManager.delegate = nil
        locationManager = nil
    }
    locationManager = CLLocationManager()
    locationManager.delegate = self
    locationManager.desiredAccuracy = kCLLocationAccuracyBest
    locationManager.activityType = CLActivityType.OtherNavigation
    locationManager.requestAlwaysAuthorization()
    locationManager.startMonitoringSignificantLocationChanges()
}

если я использую startUpdatingLocation, didUpdateLocations метод вызывается, но не для startMonitoringSignificantLocationChanges.

почему его не вызывают startMonitoringSignificantLocationChanges. Я тестирую это в симуляторе ios. Я не знаю, как проверить устройство.

2 ответов


Он работает, но очень трудно вызвать значительные изменения местоположения - это обычно происходит, когда устройство меняет вышки сотовой связи - я не думаю, что это возможно сделать с симулятором.

вам, вероятно, придется сесть на велосипед/автомобиль и проехать по крайней мере несколько километров.

есть трюк, который вы можете использовать, хотя, что вызовет значительное изменение местоположения:

включение и выключение режима Airplaine в вашем iPhone с несколькими секундными интервалами неоднократно он должен обмануть устройство, думая, что он изменил башни сотовой связи и вызвать значительное изменение местоположения.

enter image description here


в вашем симуляторе goto Debug - >Location - >Custom и измените местоположение, затем проверьте его.