MicrocosmWorksInovasi dan Seni Bina Kosmos Digital
TentangHubungi
MicrocosmWorksMemperbaharui dan Merangka Kosmos Digital

Menyampaikan penyelesaian IT yang penting. Kami bersemangat tentang teknologi, keselamatan, dan membantu perniagaan berkembang melalui infrastruktur IT yang boleh dipercayai dan inovatif.

[email protected]
+91 7011868196
New Delhi, India

Pusat Pertumbuhan AI

AI HubInovasi PermulaanPemecut Perusahaan

Penyelesaian

Semua PenyelesaianAplikasi Kesihatan & KecergasanPlatform Video AIPembangunan Ejen AI

Sumber

WawasanPanduan IndustriPelan Tindakan Kes PenggunaanCorak Seni BinaKajian Kes

Syarikat

Tentang KamiHubungiKerja Kami

Perkhidmatan

Perundingan DigitalInfrastruktur AwanPembangunan SaaSPembangunan AITeknologi Video
Pembangunan ERPPenyesuaian ZohoPembangunan OdooIntegrasi SalesforcePembangunan CRM Tersuai
Integrasi QuickBooksPenyelesaian IoTPembangunan Blockchain
Perundingan Keselamatan SiberSokongan IT - L3

© 2026 MicrocosmWorks. Hak cipta terpelihara.

Dasar PrivasiTerma Perkhidmatan
Kembali ke Wawasan
SaaS Applications

Penyegerakan Apple Health & Health Connect

Apple HealthKit dan Android Health Connect hampir tidak bersetuju tentang apa-apa — model bacaan yang berbeza, skim kebenaran, dan bentuk data. Berikut adalah cara kami membina seni bina penyegerakan tiga lapisan yang menormalkan kedua-duanya menjadi satu profil kesihatan harian yang dinyahpenduaan, betul zon masa, tanpa menguras bateri atau mengira langkah dua kali dari peranti yang bertindih.

Mayank Joshi.webpMayank Chandra Joshi
•
August 12, 2026
•
Dikemas kini 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

Langkah, jarak, kalori, kadar denyutan jantung, dan tidur perlu ditarik dari platform pengguna (Android Health Connect di Android, Apple HealthKit di iOS) oleh aplikasi kesihatan dan nutrisi — dan mempersembahkannya sebagai satu profil harian yang bersih, dinyahpenduaan. Terdapat sangat sedikit persamaan antara kedua-dua API: mekanik bacaan yang berasingan, skim kebenaran yang berbeza, dan struktur data yang berbeza. Kami membina lapisan penyegerakan mudah alih yang menjadikan mereka kelihatan seperti satu.

 

Cabaran

  • Dua API natif yang tidak bersetuju tentang apa-apa. Apple HealthKit mengembalikan agregat harian melalui panggilan balik (callbacks); Health Connect mengembalikan sampel mentah, berpaginasi dengan metadata sumber yang kaya. Konsep yang sama, bentuk yang sama sekali berbeza — dan aplikasi perlu menormalkan kedua-duanya ke dalam satu skema.
  • Pengiraan berganda adalah lalai. Telefon, jam tangan pintar, dan aplikasi pihak ketiga semuanya boleh melaporkan 8,000 langkah yang sama. Menjumlahkannya secara naif akan menggembungkan setiap metrik. Aplikasi perlu mengenali sumber yang bertindih dan mengira setiap aktiviti dunia nyata sekali sahaja.
  • Ketepatan data tidak boleh membebankan bateri dan rangkaian. Data kesihatan berubah sepanjang hari, tetapi membaca sejarah penuh pada setiap penyegerakan akan menguras bateri dan memenuhkan sambungan selular. Kekerapan penyegerakan perlu kekal ringan sementara masih terasa langsung.
  • Kebenaran boleh mengelirukan. Puluhan jenis data, dua model kebenaran, sekatan bacaan latar belakang, dan pengguna yang memberikan beberapa skop tetapi tidak yang lain — semua ini perlu ditangani oleh aplikasi tanpa mengganggu aliran.

     

Penyelesaian Kami

Kami membina penyegerakan tiga lapisan: lapisan natif yang nipis membaca API setiap platform, lapisan normalisasi pada peranti menyahpenduaan dan menggulung data menjadi ringkasan harian, dan backend menyimpannya serta menyelaraskannya ke dalam satu lejar yang dipercayai. Klien tidak pernah menghantar sampel mentah — ia menghantar ringkasan harian yang bersih, betul zon masa.

health-sync-pipeline.webp

 

Seni Bina

  • iOS membaca Apple HealthKit melalui react-native-health; Android membaca Health Connect melalui react-native-health-connect.
  • Normalisasi pada peranti mengubah output kedua-dua platform menjadi satu skema dan menyahpenduaan sebelum apa-apa meninggalkan telefon.
  • Pencetus penyegerakan — Sejarah 30 hari pada pelancaran pertama, kemudian bacaan inkremental 1 hari yang ringan pada selang 10 minit dan pada setiap sambungan aplikasi.
  • Pengangkutan — ringkasan harian yang dinormalkan dipostkan ke pelayan utama /user-health/system-activity, yang kemudian memajukannya (dengan ID pengguna + zon masa) ke mikroservis kesihatan.
  • Penyimpanan Data — setiap sumber/hari disimpan secara idempotent sebagai HealthSystemAggregate; aliran perubahan MongoDB kemudian menyelaraskannya ke dalam HealthLedger setiap hari.
  • Aliran kerja terurus Expo / React Native dengan modul HealthKit dan Health Connect natif.

     

Ciri-ciri Utama

  1. Satu kontrak normalisasi untuk dua API. Pembaca khusus platform menyalurkan satu langkah formatHealthData yang mengeluarkan bentuk yang sama tanpa mengira sumber — jadi backend dan UI tidak pernah bercabang antara iOS vs Android.

2. Nyahpenduaan berasaskan maksima pada peranti. Dalam setiap sumber, bacaan sehari dijumlahkan; kemudian nilai harian adalah Math.max() merentasi sumber (kalori dikunci oleh source|deviceType), jadi beberapa bacaan dari satu peranti terkumpul manakala jam tangan dan telefon yang melaporkan hari yang sama tidak berganda: 
 

// 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.Strategi bacaan yang betul untuk setiap platform. Bacaan Health Connect dipaginasi dengan gelung pageToken (1,000 rekod/halaman); agregat harian HealthKit diulang hari demi hari. Setiap keunikan terkandung dalam pembacanya sendiri, tidak kelihatan oleh aplikasi yang lain.

4. Kekerapan penyegerakan yang menghormati bateri. Pengisian semula 30 hari penuh hanya berjalan sekali (dilindungi oleh bendera panggilan pertama); selepas itu, setiap penyegerakan hanya menarik satu hari — pantas pada sambungan selular, murah pada kuasa.

5. Pengelompokan harian yang betul zon masa. Sampel dikelompokkan ke dalam kekunci YYYY-MM-DD dalam zon masa pengguna sendiri, jadi senaman pada pukul 11 malam akan jatuh pada hari yang betul tidak kira di mana pelayan berada.

6. Penulisan backend idempotent. Setiap ringkasan 'upsert' pada (userId, deviceId, source, date) — menghantar semula hari yang sama tidak melakukan apa-apa (no-op), menjadikan percubaan semula dan penyegerakan bertindih selamat.

7. Pengendalian kegagalan yang telus. Kebenaran yang hilang, bacaan kosong, dan ralat had kadar Health Connect ditangkap dan dipaparkan dengan bersih — hari kosong tidak pernah merosakkan penyegerakan, dan pengguna mendapat arahan yang jelas dan bukannya kegagalan senyap.

 

Hasil

  • Satu profil kesihatan yang tunggal dan konsisten merentasi iOS dan Android — perbezaan platform tidak kelihatan oleh aplikasi yang lain.
  • Sumber peranti/aplikasi yang bertindih dinyahpenduaan, jadi langkah dan kalori mencerminkan realiti dan bukannya jumlah yang digembungkan.
  • Penyegerakan inkremental yang ringan memastikan data sentiasa terkini tanpa menguras bateri atau membazir data mudah alih.
  • Penulisan idempotent yang betul zon masa bermakna setiap metrik jatuh pada hari yang betul, dan percubaan semula tidak pernah merosakkan rekod.

     

Timbunan Teknologi

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

Tentang Penulis

Mayank Chandra Joshi

AI & Cloud Solutions Expert at MicrocosmWorks

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

Ingin mengetahui lebih lanjut?

Hubungi kami untuk membincangkan bagaimana kami boleh membantu melaksanakan penyelesaian ini untuk perniagaan anda.

Hubungi Kami

Soalan Lazim

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!