Keskustele projektistasi
MicrocosmWorksInnovoimassa ja Arkkitehtuuria Digitaalisessa Kosmoksessa
TietoaYhteystiedot
MicrocosmWorksInnovoimassa ja suunnittelemassa digitaalista kosmosta

Toimitamme IT-ratkaisuja, joilla on merkitystä. Olemme intohimoisia teknologiasta, turvallisuudesta ja autamme yrityksiä kasvamaan luotettavan, innovatiivisen IT-infrastruktuurin kautta.

[email protected]
+91 7011868196
New Delhi, India

Ratkaisut

RakennaAI-tuotekehitysSaaS-tuotekehitysRäätälöity Ohjelmistokehitys
ModernisoiOhjelmiston ModernisointiAI-modernisointiPilvisovellusten Modernisointi
SkaalaaBackend ja Hajautetut JärjestelmätPilven SuorituskykytekniikkaLuotettavuus- ja SuorituskykytekniikkaAI-infrastruktuuri
LaajennaTuotekehitystiimit
Kaikki ratkaisutAI-agenttikehitysAI-videoplatformiHyvinvointi- ja kuntoilusovellukset

Palvelut

Digitaalinen konsultointiPilvi-infrastruktuuriSaaS-kehitysAI-kehitysVideoteknologia
ERP-kehitysZoho-mukautusOdoo-kehitysSalesforce-integraatioMukautettu CRM-kehitys
QuickBooks-integraatioIoT-ratkaisutLohkoketjukehitys
KyberturvallisuuskonsultointiIT-tuki - L3

AI Kasvuhubi

AI HubStartup-innovaatiotYrityskiihdyttämö

Resurssit

OivalluksetToimialan oppaatKäyttötapausmallitArkkitehtuurimallitTapaustutkimukset

Yritys

Tietoa meistäYhteystiedotKeskustele projektistasiTyömme

© 2026 MicrocosmWorks. Kaikki oikeudet pidätetään.

TietosuojakäytäntöKäyttöehdot
Takaisin oivalluksiin
SaaS Applications

Apple Healthin ja Health Connectin synkronointi

Apple HealthKit ja Android Health Connect eivät sovi melkein mistään – niissä on erilaiset lukumallit, käyttöoikeusjärjestelmät ja tietorakenteet. Tässä kerrotaan, miten rakensimme kolmikerroksisen synkronointiarkkitehtuurin, joka normalisoi molemmat yhdeksi kaksoiskappaleet poistetuksi, aikavyöhykekorjatuksi päivittäiseksi terveysprofiiliksi kuluttamatta akkua tai laskematta päällekkäisten laitteiden askeleita kahteen kertaan.

Mayank Joshi.webpMayank Chandra Joshi
•
August 12, 2026
•
Päivitetty September 16, 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

Askeleet, matka, kalorit, syke ja uni on haettava käyttäjän alustalta (Androidin Android Health Connect, iOS:n Apple HealthKit) terveys- ja ravitsemussovellukseen – ja esitettävä yhtenä selkeänä, kaksoiskappaleet poistettuna päiväprofiilina. Näiden kahden API:n välillä on hyvin vähän yhtäläisyyksiä: erilliset lukumekaniikat, erilaiset valtuutusjärjestelmät ja erilaiset tietorakenteet. Rakensimme mobiilisynkronointikerroksen, joka saa ne näyttämään yhtenäiseltä.

 

Haaste

  • Kaksi natiivia API:a, jotka eivät sovi mistään. Apple HealthKit palauttaa päivittäiset aggregaatit callbackien kautta; Health Connect palauttaa raakoja, sivutettuja näytteitä runsaalla lähdemetadatalla. Samat konseptit, täysin erilaiset muodot – ja sovelluksen täytyi normalisoida molemmat yhdeksi skeemaksi.
  • Kaksoislaskenta on oletus. Puhelin, älykello ja kolmannen osapuolen sovellus voivat kaikki raportoida samat 8 000 askelta. Niiden naiivi yhteenlaskenta paisuttaa jokaista mittaria. Sovelluksen täytyi tunnistaa päällekkäiset lähteet ja laskea jokainen todellinen aktiviteetti vain kerran.
  • Akku ja verkko eivät voi maksaa tuoreudesta. Terveystiedot muuttuvat koko päivän, mutta koko historian lukeminen jokaisella synkronoinnilla kuluttaisi akun ja kuormittaisi mobiiliyhteydet. Synkronointitiheyden täytyi pysyä kevyenä, mutta silti tuntua reaaliaikaiselta.
  • Käyttöoikeudet voivat olla hämmentäviä. Kymmeniä tietotyyppejä, kaksi käyttöoikeusmallia, taustaluku-rajoituksia ja käyttäjiä, jotka myöntävät joitakin oikeuksia mutta eivät toisia – kaikki, mitä sovelluksen on käsiteltävä kaatumatta.

     

Ratkaisumme

Rakensimme kolmikerroksisen synkronoinnin: ohut natiivikerros lukee kunkin alustan API:n, laitteessa suoritettava normalisointikerros poistaa kaksoiskappaleet ja tiivistää tiedot päivittäisiksi yhteenvedoiksi, ja taustajärjestelmä tallentaa ja yhdistää ne yhdeksi luotetuksi kirjanpitokansioksi. Asiakas ei koskaan lähetä raakoja näytteitä – se lähettää puhtaita, aikavyöhykekorjattuja päivittäisiä koosteita.

health-sync-pipeline.webp

 

Arkkitehtuuri

  • iOS lukee Apple HealthKitia react-native-health-kirjaston kautta; Android lukee Health Connectia react-native-health-connect-kirjaston kautta.
  • Laitteessa tapahtuva normalisointi muuntaa molempien alustojen ulostulon yhdeksi skeemaksi ja poistaa kaksoiskappaleet ennen kuin mitään lähtee puhelimesta.
  • Synkronoinnin käynnistimet — 30 päivän historia ensimmäisellä käynnistyksellä, sitten kevyet yhden päivän inkrementaaliset lukuoperaatiot 10 minuutin välein ja joka kerta kun sovellus jatkaa toimintaansa.
  • Siirto — normalisoidut päivittäiset koosteet POSTataan pääpalvelimen osoitteeseen /user-health/system-activity, joka välittää ne (käyttäjätunnuksella + aikavyöhykkeellä) terveys-mikropalveluun.
  • Pysyvyys — kukin lähde/päivä tallennetaan idempotentisti nimellä HealthSystemAggregate; MongoDB change stream sovittaa sen sitten päiväkohtaiseksi HealthLedgeriksi.
  • Expo / React Native hallittu työnkulku natiivien HealthKit- ja Health Connect -moduulien kanssa.

     

Avainominaisuudet

  1. Yksi normalisointisopimus kahdelle API:lle. Alustakohtaiset lukijat syöttävät yhteen formatHealthData-vaiheeseen, joka tuottaa saman muodon lähteestä riippumatta – joten taustajärjestelmä ja käyttöliittymä eivät koskaan haaraudu iOS:n ja Androidin välillä.

2. Maksimiin perustuva kaksoiskappaleiden poisto laitteella. Kussakin lähteessä päivän lukemat summataan; sitten päivittäinen arvo on Math.max() lähteiden yli (kalorit avaimella source|deviceType), joten yhdestä laitteesta tulevat useat lukemat kertyvät, kun taas samasta päivästä raportoiva kello ja puhelin eivät kerrytä kaksinumeroista summaa: 
 

// 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.Oikea lukustrategia kullekin alustalle. Health Connect -lukemat ovat sivutettuja pageToken-silmukalla (1 000 tietuetta/sivu); HealthKitin päivittäiset aggregaatit käydään läpi päivä kerrallaan. Jokainen erikoisuus sisältyy omaan lukijaan, näkymättömänä muulle sovellukselle.

4. Synkronointitiheys, joka huomioi akun. Täysi 30 päivän takautuva täyttö suoritetaan vain kerran (suojattuna ensimmäisen kutsun lipulla); sen jälkeen jokainen synkronointi hakee vain yhden päivän – nopeasti mobiiliverkossa, edullisesti virrankulutuksen osalta.

5. Aikavyöhykekorjattu päivittäinen ryhmittely. Näytteet ryhmitellään YYYY-MM-DD-avaimiin käyttäjän omalla aikavyöhykkeellä, joten klo 23:n harjoitus päätyy oikealle päivälle riippumatta siitä, missä palvelin sijaitsee.

6. Idempotentit taustajärjestelmän kirjoitukset. Kukin kooste päivittää tai lisää tiedot avaimella (userId, deviceId, source, date) – saman päivän uudelleenlähetys on no-op-operaatio, mikä tekee uudelleenyrityksistä ja päällekkäisistä synkronoinneista turvallisia.

7. Rehellinen vikatilanteen käsittely. Puuttuvat käyttöoikeudet, tyhjät lukemat ja Health Connectin nopeusrajoitusvirheet havaitaan ja tuodaan esiin selkeästi – tyhjä päivä ei koskaan kaada synkronointia, ja käyttäjä saa selkeän ilmoituksen hiljaisen virheen sijaan.

 

Tulokset

  • Yksi, yhtenäinen terveysprofiili iOS:n ja Androidin välillä – alustojen välinen ero on näkymätön muulle sovellukselle.
  • Päällekkäiset laite-/sovelluslähteet on deduplikoitu, joten askeleet ja kalorit heijastavat todellisuutta paisutettujen summien sijaan.
  • Kevyet inkrementaaliset synkronoinnit pitävät tiedot tuoreina kuluttamatta akkua tai mobiilidataa.
  • Aikavyöhykekorjatut, idempotentit kirjoitukset tarkoittavat, että jokainen mittari päätyy oikealle päivälle, eivätkä uudelleenyritykset koskaan vioita tietoa.

     

Teknologiapino

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

Apple HealthKitAndroid Health ConnectTerveystietojen synkronointiMobiilisovelluskehitysReact Native
Mayank Joshi.webp

Tietoa kirjoittajasta

Mayank Chandra Joshi

AI & Cloud Solutions Expert at MicrocosmWorks

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

Haluatko oppia lisää?

Ota meihin yhteyttä keskustellaksemme siitä, kuinka voimme auttaa toteuttamaan nämä ratkaisut liiketoiminnassasi.

Ota yhteyttä

Usein kysytyt kysymykset

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!