Wie löst HealthKit die Aufzeichnung derselben Aktivität durch mehrere Quellen?

Was passiert, wenn mehr als eine bei HealthKit registrierte „Quelle“ dieselbe Aktivität verfolgt?

Wenn ich zum Beispiel meine Aktivität im Allgemeinen von Menschen verfolgen lasse und dann Cyclemeter (das HealthKit in Version 10.3 unterstützt) verwende, um eine bestimmte Radtour zu verfolgen, werden beide (ich nehme an) dieselbe Aktivität an HealthKit übermitteln. Vermutlich sollte es HealthKit möglich sein, zu erkennen, dass es sich bei diesen Aktivitäten wahrscheinlich um Duplikate handelt, und mich zumindest zu fragen, wie die "Duplizierung" behoben werden kann (so wie Synchronisierungskonflikte gelöst werden). Tatsächlich enthalten die Aktivitäten genügend Daten, so dass eine solche Erkennung im Allgemeinen automatisch durchgeführt werden können sollte.

Macht HealthKit das? Löst es doppelte Aufzeichnungen derselben Aktivität auf (entweder automatisch oder halbautomatisch)?

Dies könnte verfrüht sein, da Cyclemeter 10.3 noch nicht im App Store veröffentlicht wurde. Apple ändert den Health-Kit-Code eindeutig mit der Version 8.0.2 von iOS.
@bmike: Cyclemeter ist nur ein Beispiel: Die Frage gilt für zwei oder mehr Quellen.
AFAIK gibt es keine Apps im App Store, die Daten in das Gesundheitskit einspeisen, daher ist mein Vorschlag verfrüht. Ich bin mir sicher, dass Entwickler seit Juni wissen, wie Apple Dinge programmiert hat, damit sie funktionieren, aber bis der Code auf die Straße kommt, werden wir nicht wissen, was Apple tatsächlich programmiert und veröffentlicht hat. Meine Vermutung ist, dass die Daten mit dem Reverse-Domain-Namen gekennzeichnet werden und Sie zwei Sätze unterschiedlicher Daten ohne Zusammenführung erhalten - aber das ist an dieser Stelle nur eine Vermutung.
@bmike: Mehrere Apps (8.0.2) funktionieren jetzt mit HealthKit als Quellen. Überprüfen Sie den App-Store.
Warum nicht in bestimmten Apps bearbeiten, die dann tatsächlich in Ihrer Frage funktionieren?

Antworten (2)

HealthKit geht ziemlich schlau mit Ihren Daten um. Für jede Quelle in der Health-App können Sie die Priorität unterschiedlicher Apps festlegen. Tippen Sie auf eine der Metriken in der Health-App, tippen Sie auf Daten teilen > Bearbeiten , um Quellen in die richtige Reihenfolge zu ziehen.

Wenn andere Apps Daten anfordern, führt HealthKit die Datensätze automatisch zusammen, wahrscheinlich basierend auf Zeitstempeln. Es wählt zuerst die App mit hoher Priorität aus und füllt die Lücken in den Daten mit der App Nummer 2 usw.

Diese WWDC wäre ein guter Anfang, um sich einen vollständigen Überblick zu verschaffen .

Soweit ich recherchiert habe, ist die Antwort von Paul Veugen nur teilweise richtig. HealthKit führt diese Daten zusammen, wenn Sie eine HKStatisticsQuery oder eine HKStatisticsCollectionQuery verwenden. Andernfalls liegt es an Ihnen, eine Logik zum Zusammenführen/Deduplizieren der Ergebnisse bereitzustellen.

Eine mögliche Lösung könnte sein, HKSourceQuery zu verwenden, um verschiedene Quellen zu identifizieren und zB nur eine auszuwählen.

Eine andere Möglichkeit wäre, über HKSourceRevision in den Ergebnissen einer HKQuery auf die Quelle zuzugreifen und nur die Daten aus einer Quelle zu nehmen oder zu versuchen, Daten aus den verschiedenen Quellen zu vergleichen. Ab iOS 9.3 besteht auch die Möglichkeit mittels HKDevice auf die verschiedenen Quellgeräte zuzugreifen.

Wenn Sie ein Gerät nehmen, besteht immer die Möglichkeit, dass ein Benutzer das Gerät während des angeforderten Zeitraums teilweise nicht verwendet hat, was zu fehlenden Datenpunkten führt.

Aufgrund dieser Priorisierung bleiben die Ergebnisse immer noch schmerzhaft, da Apple nicht dokumentiert hat, ob die angeforderten Daten nach der benutzerdefinierten Quellenpriorität in Health sortiert werden.

Vor diesem Hintergrund könnte es sich lohnen, sich überschneidende Datumsbereiche zu untersuchen, um Duplikate zu identifizieren.