Ich benutze Swift, um eine iPhone App zu schreiben, die ein startendes und landendes Flugzeug verfolgt (wie durch eine Änderung des Luftdrucks angezeigt).iPhone-Höhe messen, während im Hintergrund läuft
Dafür muss ich den Luftdruck des iPhone messen, während es im Hintergrund läuft. Ich muss den Druck in Intervallen von mindestens einmal pro Minute für eine Dauer von einer Stunde oder 2 messen. Ich habe die Apple Developer Background Execution guide gelesen, aber ich glaube nicht, dass einer der Hintergrundmodi relevant ist; Beispielsweise dauert eine Aufgabe mit endlicher Länge nicht lange genug und eine Abrufaufgabe scheint zu selten zu sein.
Mein aktueller Code Luftdruck zu erhalten, ist wie folgt:
let opQueue = OperationQueue.current!
opQueue.qualityOfService = .background
altimeter.startRelativeAltitudeUpdates(to: opQueue) { (data, error) in
print ("Pressure returned")
//If pressure returned from iPhone correctly:
if let data = data {
self.localPressure = convertPressure(data.pressure.doubleValue, fromUnit: .kPa, toUnit: .hPa) //In hPa
}
}
ich die operationQueue
-.background
QoS
dies geändert habe, aber wie ich es verstehe, das macht ihn nur eine niedrigere Priorität & aktualisiert erhalten hat nichts mit der Ausführung als Hintergrund zu tun (richtig?).
Gibt es noch etwas, ich kann versuchen, den Luftdruck in einer Hintergrundausführung regelmäßig zu erhalten? Ich kann mir nicht vorstellen, dass der Erhalt des Luftdrucks jede Minute eine enorme Menge an Energie verbrauchen würde, also würde ich hoffen, dass es möglich wäre.
Jede verfügbare Hilfe würde sehr geschätzt werden!
Danke,
CLLocation erhält die Höhe vom GPS, nicht vom Drucksensor. Aber wenn Sie die Daten nur einmal pro Minute für ein startendes/landendes Flugzeug benötigen, dann ist GPS sowieso gut genug und Sie werden die zusätzliche Empfindlichkeit des Drucksensors nicht benötigen. – fishinear
Das ist gut zu wissen, obwohl 'CLLocation' seine Daten auch von' CMAlometer' bezieht. AFAIK hat leider leider keine API, um von dem Hintergrund auf 'CMAlometer' zuzugreifen und Updates von ihm zu erhalten. Daher ist die Verwendung von Standortaktualisierungen die einzige Möglichkeit, selbst wenn Sie eine bessere Genauigkeit benötigen. –