Ich habe eine Funktion, die ich in der App Hintergrund Modus ausführen und mindestens jede Minute ausgeführt werden, um auf Wifi-Verbindung zu überprüfen und Entscheidungen zu treffen. Ich verwende locationManager Delegat, so dass ich meine NSTimer im Hintergrund ausführen kann. Der Standortmanager verbraucht jedoch viel Batterieleistung. Diese App ist nicht für Apple-Version. Aber ich suche nach effizienteren Einstellungen für den Standortmanager, damit es nicht so machthungrig ist oder vielleicht andere gute Ideen? Die aktuellen Einstellungen, die ich habe, sind in Ordnung, aber seit ich die automatische Pause für den Standortmanager aktiviert habe, werden Funktionsupdates zu sehr verzögert. Bevor ich zwei Delegates-Methoden (didEnterRegion und didExitRegion) verwendete, waren diese leistungshungriger und nicht genau. Ich lese jede Menge verfügbar Tutorials und checkten anderen verwandten Beiträge auf Überlauf-Stack, aber haben nichts gefunden, das mir meine problm zu lösen helfen würde Hier ist, was ich in meiner Delegatfunktion haben:NSTimer im Hintergrund-Modus mit locationManager Delegat ("Cheat Weg") SWIFT
func locationManager(manager: CLLocationManager, didUpdateLocations locations: [CLLocation]) {
self.timer = NSTimer.scheduledTimerWithTimeInterval(45, target: self, selector: #selector(self.checkNetworkSSID), userInfo: nil, repeats: true)
manager.stopMonitoringSignificantLocationChanges()
manager.stopUpdatingLocation()
}
Hier ist, was ich habe in meinem viewDidLoad und AppDelegate
manager = CLLocationManager()
manager?.delegate = self
manager?.requestWhenInUseAuthorization()
manager?.startUpdatingLocation()
manager?.desiredAccuracy = kCLLocationAccuracyThreeKilometers
manager?.pausesLocationUpdatesAutomatically = true
manager?.activityType = CLActivityType.Fitness
Ich habe NSLocationAlwaysUsageDescription in Plist. Ich interessiere mich nicht wirklich für irgendwelche Standortänderungen, weil ich sie nicht verwende, benutze ich nur einen Delegaten, damit er meinen NSTimer laufen lässt. Wie wäre es mit startMonitoringSignificantLocationChanges() wofür ist das wirklich? –