2017-06-14 4 views
0

Ich habe eine Anwendung, die Benutzer Herzfrequenzwerte von Apple Watch verfolgen, also tat ich alle erforderlichen Schritte, die ich auf Apfelführungen gefunden, und hier ist der Code, den ich verwende:HKObserverQuery im Hintergrundmodus

und ich rufe "startObservingHeartRate" in didFinishLaunchingWithOptions in AppDelegate, vorausgesetzt, dass diese Abfrage ausgeführt werden soll, sobald eine neue Lesung aus dem Health Kit-Speicher hinzugefügt oder gelöscht wird, ist alles in Ordnung, wenn App im Hintergrund oder getötet den Handler wecke meine App auf und mache die Updates.

Aber wenn ich die App in den Hintergrund setze, stelle sie wieder in den Vordergrund, führe die Beobachterabfrage viele Male aus, auch wenn keine neuen Messwerte zum HealthKit Store hinzugefügt wurden und in diesem Fall bekomme ich die gleiche letzte Herzfrequenz für viele Male ohne Grund.

Bitte irgendwelche Empfehlungen zur Verwendung dieser Art von Abfrage oder Änderungen, die ich mit meiner aktuellen Implementierung machen muss.

Antwort

1

Wenn Sie die hinzugefügten und entfernten Herzfrequenzproben genauer verfolgen möchten, sollten Sie eine HKAnchoredObjectQuery verwenden. HKObserverQuery garantiert nicht, dass der Update-Handler nur aufgerufen wird, wenn eine Probe hinzugefügt oder entfernt wird. Beachten Sie, dass Sie eine HKObserverQuery neben HKAnchoredObjectQuery weiterhin ausführen müssen, da Sie auch enableBackgroundDelivery(for:frequency:completion:) verwenden.

Verwandte Themen