MicrocosmWorksInnovation und Architektur digitaler Kosmen
Ăśber unsKontakt
MicrocosmWorksInnovieren und Gestalten digitaler Kosmen

Bereitstellung von IT-Lösungen, die zählen. Wir sind leidenschaftlich für Technologie, Sicherheit und helfen Unternehmen, durch zuverlässige, innovative IT-Infrastruktur zu wachsen.

[email protected]
+91 7011868196
New Delhi, India

AI Wachstumszentrum

AI HubStartup-InnovationUnternehmensbeschleuniger

Lösungen

Alle LösungenWellness- & Fitness-AppsAI Video PlattformAI Agent Entwicklung

Ressourcen

EinblickeBranchenleitfädenAnwendungsfall-BlaupausenArchitektur-MusterFallstudien

Unternehmen

Ăśber unsKontaktUnsere Arbeit

Dienstleistungen

Digitale BeratungCloud-InfrastrukturSaaS-EntwicklungKI-EntwicklungVideotechnologie
ERP-EntwicklungZoho-AnpassungOdoo-EntwicklungSalesforce-IntegrationBenutzerdefinierte CRM-Entwicklung
QuickBooks-IntegrationIoT-LösungenBlockchain-Entwicklung
Cybersecurity-BeratungIT-Support - L3

© 2026 MicrocosmWorks. Alle Rechte vorbehalten.

DatenschutzrichtlinieNutzungsbedingungen
ZurĂĽck zu Einblicken
SaaS Applications

Synchronisierung von Apple Health & Health Connect

Apple HealthKit und Android Health Connect sind sich in fast nichts einig – unterschiedliche Lesemodelle, Berechtigungsschemata und Datenformen. Hier ist, wie wir eine dreischichtige Synchronisierungsarchitektur aufgebaut haben, die beide in ein dedupliziertes, zeitzonenkorrektes tägliches Gesundheitsprofil normalisiert, ohne den Akku zu entleeren oder Schritte von überlappenden Geräten doppelt zu zählen.

Mayank Joshi.webpMayank Chandra Joshi
•
August 12, 2026
•
Aktualisiert August 29, 2026
•
4 min read
Health data synchronization architecture connecting Apple HealthKit and Android Health Connect to a unified health profile with on-device normalization.
4 min read

Schritte, Distanz, Kalorien, Herzfrequenz und Schlaf müssen von der Plattform des Benutzers (Android Health Connect auf Android, Apple HealthKit auf iOS) von einer Gesundheits- und Ernährungs-App abgerufen und als ein sauberes, dedupliziertes Tagesprofil dargestellt werden. Es gibt sehr wenige Ähnlichkeiten zwischen den beiden APIs: separate Lese-Mechanismen, unterschiedliche Autorisierungsschemata und verschiedene Datenstrukturen. Wir haben die mobile Synchronisierungsschicht entwickelt, die sie wie eine Einheit erscheinen lässt.

 

Die Herausforderung

  • Zwei native APIs, die sich ĂĽber nichts einig sind. Apple HealthKit gibt tägliche Aggregationen ĂĽber Callbacks zurĂĽck; Health Connect gibt Rohdaten, paginierte Samples mit umfangreichen Quell-Metadaten zurĂĽck. Gleiche Konzepte, völlig unterschiedliche Formen – und die App musste beide in ein einziges Schema normalisieren.
  • Doppelte Zählung ist der Standard. Ein Telefon, eine Smartwatch und eine Drittanbieter-App können alle die gleichen 8.000 Schritte melden. Eine naive Summierung bläht jede Metrik auf. Die App musste ĂĽberlappende Quellen erkennen und jede reale Aktivität nur einmal zählen.
  • Akku und Netzwerk können die Aktualität nicht bezahlen. Gesundheitsdaten ändern sich den ganzen Tag ĂĽber, aber das Auslesen der vollständigen Historie bei jeder Synchronisierung wĂĽrde den Akku entladen und Mobilfunkverbindungen ĂĽberlasten. Die Synchronisierungskadenz musste leicht bleiben und sich dennoch live anfĂĽhlen.
  • Berechtigungen können verwirrend sein. Dutzende von Datentypen, zwei Berechtigungsmodelle, Einschränkungen beim Hintergrundlesen und Benutzer, die einige Bereiche gewähren, andere aber nicht – all das muss die App handhaben, ohne den Ablauf zum Absturz zu bringen.

     

Unsere Lösung

Wir haben eine dreischichtige Synchronisierung entwickelt: Eine dünne native Schicht liest die API jeder Plattform, eine Normalisierungsschicht auf dem Gerät dedupliziert und fasst die Daten zu täglichen Zusammenfassungen zusammen, und das Backend speichert und gleicht sie in einem einzigen vertrauenswürdigen Ledger ab. Der Client versendet niemals Rohdaten – er versendet saubere, zeitzonenkorrekte tägliche Rollups.

health-sync-pipeline.webp

 

Architektur

  • iOS liest Apple HealthKit ĂĽber react-native-health; Android liest Health Connect ĂĽber react-native-health-connect.
  • Die Normalisierung auf dem Gerät wandelt die Ausgabe beider Plattformen in ein einziges Schema um und dedupliziert, bevor etwas das Telefon verlässt.
  • Synchronisierungs-Trigger — 30 Tage Historie beim ersten Start, dann leichte inkrementelle Lesezugriffe fĂĽr 1 Tag in einem 10-Minuten-Intervall und bei jeder App-Wiederaufnahme.
  • Transport — normalisierte tägliche Rollups werden per POST an den Hauptserver unter /user-health/system-activity gesendet, der sie (mit user ID + timezone) an den Health Microservice weiterleitet.
  • Persistenz — jede Quelle/jeder Tag wird idempotent als HealthSystemAggregate gespeichert; ein MongoDB change stream gleicht sie dann in einem pro Tag gefĂĽhrten HealthLedger ab.
  • Expo / React Native managed workflow mit nativen HealthKit- und Health Connect-Modulen.

     

Hauptmerkmale

  1. Ein Normalisierungsvertrag für zwei APIs. Plattformspezifische Reader speisen einen einzigen formatHealthData-Schritt, der unabhängig von der Quelle die gleiche Form ausgibt – sodass Backend und UI nie zwischen iOS und Android unterscheiden müssen.

2. Maximale Deduplizierung auf dem Gerät. Innerhalb jeder Quelle werden die Messwerte eines Tages summiert; der Tageswert ist dann der Math.max()-Wert ĂĽber alle Quellen hinweg (Kalorien, die nach source|deviceType verschlĂĽsselt sind), sodass sich mehrere Messwerte von einem Gerät ansammeln, während eine Uhr und ein Telefon, die denselben Tag melden, sich nicht verdoppeln: 
 

// Sum readings within each source, then take the max ACROSS sources

dateSourceMap[date][source] += entry.count;

const totalSteps = Math.ceil(Math.max(...Object.values(dateSourceMap[date])));

3. Die richtige Lesestrategie pro Plattform. Health Connect-Lesezugriffe sind mit einer pageToken-Schleife (1.000 Datensätze/Seite) paginiert; HealthKits tägliche Aggregationen werden Tag für Tag durchlaufen. Jede Besonderheit ist in ihrem eigenen Reader enthalten, unsichtbar für den Rest der App.

4. Eine Synchronisierungskadenz, die den Akku schont. Eine vollständige 30-Tage-Nachfüllung läuft nur einmal (geschützt durch ein First-Call-Flag); danach ruft jede Synchronisierung nur noch einen Tag ab – schnell über Mobilfunk, energiesparend.

5. Zeitzonenkorrekte tägliche Gruppierung. Samples werden in YYYY-MM-DD-Schlüssel in der Zeitzone des Benutzers gruppiert, sodass ein Training um 23 Uhr am richtigen Tag landet, egal wo der Server steht.

6. Idempotente Backend-Schreibvorgänge. Jedes Rollup führt ein Upsert auf (userId, deviceId, source, date) durch – das erneute Senden desselben Tages ist ein No-Op, wodurch Wiederholungen und überlappende Synchronisierungen sicher sind.

7. Ehrliche Degradation. Fehlende Berechtigungen, leere Lesezugriffe und Health Connect-Rate-Limit-Fehler werden abgefangen und sauber angezeigt – ein leerer Tag bringt die Synchronisierung nie zum Absturz, und der Benutzer erhält eine klare Aufforderung anstelle eines stillen Fehlers.

 

Ergebnisse

  • Ein einziges, konsistentes Gesundheitsprofil ĂĽber iOS und Android hinweg – der Plattformunterschied ist fĂĽr den Rest der App unsichtbar.
  • Ăśberlappende Geräte-/App-Quellen werden dedupliziert, sodass Schritte und Kalorien die Realität widerspiegeln und nicht aufgeblähte Summen.
  • Leichte inkrementelle Synchronisierungen halten die Daten aktuell, ohne den Akku zu entleeren oder mobiles Datenvolumen zu verbrauchen.
  • Zeitzonenkorrekte, idempotente Schreibvorgänge bedeuten, dass jede Metrik am richtigen Tag landet und Wiederholungen den Datensatz niemals beschädigen.

     

Technologie-Stack

React Native (Expo) · react-native-health (HealthKit) · react-native-health-connect · NestJS · MongoDB · MongoDB Change Streams · moment-timezone

Apple HealthKitAndroid Health ConnectHealth Data SyncMobile App DevelopmentReact Native
Mayank Joshi.webp

Ăśber den Autor

Mayank Chandra Joshi

AI & Cloud Solutions Expert at MicrocosmWorks

Building innovative AI-powered solutions and helping businesses transform through cutting-edge technology.

Möchten Sie mehr erfahren?

Kontaktieren Sie uns, um zu besprechen, wie wir Ihnen bei der Implementierung dieser Lösungen für Ihr Unternehmen helfen können.

Kontakt aufnehmen

Häufig gestellte Fragen

A shared normalization layer converts HealthKit and Health Connect data into the same schema, allowing iOS and Android health data to be handled consistently.

The sync layer aggregates readings by source and uses the maximum daily value across overlapping sources, preventing the same activity from being counted multiple times.

After an initial 30-day history sync, the app performs lightweight one-day incremental reads every 10 minutes and when the app resumes, keeping data fresh while limiting battery and network usage.

Health samples are grouped into daily YYYY-MM-DD values using the user's local timezone, ensuring activities are assigned to the correct calendar day.

The backend upserts each daily health aggregate using identifiers such as user, device, source, and date, making repeated syncs safe without creating duplicate records.

Comments (0)

Share your thoughts and join the conversation

Leave a Comment

Your email will not be published

No comments yet

Be the first to share your thoughts!