MicrocosmWorksחדשנות ותכנון קוסמוס דיגיטלי
אודותצור קשר
MicrocosmWorksמחדשים ומתכננים קוסמוס דיגיטלי

מספקים פתרונות IT חשובים. אנו נלהבים מטכנולוגיה, אבטחה ועוזרים לעסקים לצמוח באמצעות תשתית IT אמינה וחדשנית.

[email protected]
+91 7011868196
New Delhi, India

מרכז צמיחה AI

מרכז AIחדשנות סטארטאפמאיץ ארגוני

פתרונות

כל הפתרונותאפליקציות בריאות וכושרפלטפורמת וידאו AIפיתוח סוכני AI

משאבים

תובנותמדריכי תעשייהתוכניות מקרה שימושתבניות ארכיטקטורהמחקרי מקרה

חברה

אודותינוצור קשרהעבודה שלנו

שירותים

ייעוץ דיגיטליתשתית ענןפיתוח SaaSפיתוח AIטכנולוגיית וידאו
פיתוח ERPהתאמה אישית של Zohoפיתוח Odooאינטגרציה של Salesforceפיתוח CRM מותאם אישית
אינטגרציה של QuickBooksפתרונות IoTפיתוח בלוקצ'יין
ייעוץ סייברתמיכה טכנית - L3

© 2026 MicrocosmWorks. כל הזכויות שמורות.

מדיניות פרטיותתנאי שירות
חזרה לתובנות
SaaS Applications

סנכרון Apple Health ו-Health Connect

Apple HealthKit ו-Android Health Connect כמעט ואינם מסכימים על כלום — מודלי קריאה שונים, סכימות הרשאה וצורות נתונים. הנה כיצד בנינו ארכיטקטורת סנכרון תלת-שכבתית שמנרמלת את שניהם לפרופיל בריאות יומי אחד, מנוטרל כפילויות ונכון מבחינת אזור זמן, מבלי לרוקן את הסוללה או לספור פעמיים צעדים ממכשירים חופפים.

Mayank Joshi.webpMayank Chandra Joshi
•
August 12, 2026
•
עודכן 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

צעדים, מרחק, קלוריות, דופק ושינה צריכים להימשך מפלטפורמת המשתמש (Android Health Connect באנדרואיד, Apple HealthKit ב-iOS) על ידי אפליקציית בריאות ותזונה — ולהציג אותם כפרופיל יומי נקי ומנוטרל כפילויות אחד. יש מעט מאוד קווי דמיון בין שני ה-APIs: מכניקות קריאה נפרדות, סכימות הרשאה שונות, ומבני נתונים שונים. בנינו את שכבת הסנכרון הנייד שגורמת להם להיראות כאחד.

 

האתגר

  • שני APIs מקוריים שלא מסכימים על כלום. Apple HealthKit מחזיר אגרגטים יומיים באמצעות callbacks; Health Connect מחזיר דגימות גולמיות, מדורגות עם מטא-דאטה עשיר של מקורות. אותם מושגים, צורות שונות לחלוטין — והאפליקציה נאלצה לנרמל את שניהם לסכימה אחת.
  • ספירה כפולה היא ברירת המחדל. טלפון, שעון חכם ואפליקציית צד שלישי יכולים כולם לדווח על אותם 8,000 צעדים. סיכום תמים שלהם מנפח כל מדד. האפליקציה נדרשה לזהות מקורות חופפים ולספור כל פעילות בעולם האמיתי פעם אחת.
  • סוללה ורשת לא יכולים לשלם על טריות. נתוני בריאות משתנים כל היום, אך קריאת ההיסטוריה המלאה בכל סנכרון תרוקן את הסוללה ותרווה חיבורים סלולריים. קצב הסנכרון היה צריך להישאר קל תוך שמירה על תחושה חיה.
  • הרשאות יכולות לבלבל. עשרות סוגי נתונים, שני מודלי הרשאה, הגבלות קריאת רקע, ומשתמשים המעניקים הרשאות מסוימות אך לא אחרות — כל אלה שהאפליקציה צריכה לטפל בהם מבלי לקרוס את התהליך.

     

הפתרון שלנו

בנינו סנכרון תלת-שכבתי: שכבת קלט מקורית דקה קוראת את ה-API של כל פלטפורמה, שכבת נורמליזציה על המכשיר מנטרלת כפילויות ומגלגלת את הנתונים לסיכומים יומיים, והבקאנד שומר אותם ומתאים אותם ל-HealthLedger אמין אחד. הלקוח לעולם אינו שולח דגימות גולמיות — הוא שולח סיכומים יומיים נקיים ונכונים מבחינת אזור זמן.

health-sync-pipeline.webp

 

ארכיטקטורה

  • iOS קורא את Apple HealthKit דרך react-native-health; Android קורא את Health Connect דרך react-native-health-connect.
  • נורמליזציה על המכשיר ממירה את הפלט של שתי הפלטפורמות לסכימה אחת ומנטרלת כפילויות לפני שכל דבר עוזב את הטלפון.
  • טריגרים לסנכרון — 30 ימי היסטוריה בהפעלה ראשונה, ואז קריאות מצטברות קלות של יום אחד במרווחי זמן של 10 דקות ובכל חידוש אפליקציה.
  • העברה — סיכומים יומיים מנורמלים נשלחים ב-POST לשרת הראשי ב- /user-health/system-activity, אשר מעביר אותם (עם user ID + timezone) למיקרו-שירות הבריאות.
  • עמידות — כל מקור/יום נשמר באופן אידמפוטנטי כ- HealthSystemAggregate; זרם שינויים של MongoDB מתאים אותו אז ל-HealthLedger יומי.
  • Expo / React Native זרימת עבודה מנוהלת עם מודולי HealthKit ו-Health Connect מקוריים.

     

תכונות עיקריות

  1. חוזה נורמליזציה אחד לשני APIs. קוראים ספציפיים לפלטפורמה מזינים שלב אחד של formatHealthData אשר פולט את אותה צורה ללא קשר למקור — כך שהבקאנד וה-UI לעולם אינם מתפצלים על iOS מול Android.

2. נטרול כפילויות מבוסס מקסימום על המכשיר. בתוך כל מקור, קריאות של יום מסוכמות; ואז הערך היומי הוא ה- Math.max() לאורך מקורות (קלוריות מקושרות על ידי source|deviceType), כך שקריאות מרובות ממכשיר אחד נצברות, בעוד ששעון וטלפון המדווחים על אותו יום לא יוצרים כפילויות: 
 

// 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.אסטרטגיית קריאה נכונה לכל פלטפורמה. קריאות Health Connect מדורגות עם לולאת pageToken (1,000 רשומות/עמוד); האגרגטים היומיים של HealthKit עוברים בלולאה יום אחר יום. כל ייחוד מוכל בקורא משלו, בלתי נראה לשאר האפליקציה.

4. קצב סנכרון שמכבד את הסוללה. מילוי חוזר מלא של 30 יום פועל רק פעם אחת (בפיקוח של דגל קריאה ראשונה); לאחר מכן, כל סנכרון מושך רק יום אחד — מהיר בסלולר, זול בצריכת חשמל.

5.קיבוץ יומי נכון מבחינת אזור זמן. דגימות מקובצות לתוך YYYY-MM-DD מפתחות באזור הזמן של המשתמש, כך שאימון בשעה 23:00 נוחת ביום הנכון ללא קשר למקום שבו השרת נמצא.

6.כתיבות בקאנד אידמפוטנטיות. כל סיכום מבצע upsert על (userId, deviceId, source, date) — שליחה חוזרת של אותו יום היא פעולה ללא שינוי (no-op), מה שהופך ניסיונות חוזרים וסנכרונים חופפים לבטוחים.

7.התמודדות גלויה עם כשלים. הרשאות חסרות, קריאות ריקות ושגיאות הגבלת קצב של Health Connect נתפסות ומוצגות בצורה נקייה — יום ריק לעולם אינו מפיל את הסנכרון, והמשתמש מקבל הנחיה ברורה במקום כשל שקט.

 

תוצאות

  • פרופיל בריאות יחיד ועקבי לרוחב iOS ו-Android — ההבדל בפלטפורמה בלתי נראה לשאר האפליקציה.
  • מקורות מכשיר/אפליקציה חופפים מנוטרלים כפילויות, כך שצעדים וקלוריות משקפים מציאות במקום סכומים מנופחים.
  • סנכרונים מצטברים קלים שומרים על טריות הנתונים מבלי לרוקן את הסוללה או לשרוף נתונים סלולריים.
  • כתיבות אידמפוטנטיות ונכונות מבחינת אזור זמן משמעותן שכל מדד נוחת ביום הנכון, וניסיונות חוזרים לעולם אינם משחיתים את הרשומה.

     

מחסנית טכנולוגית

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

Apple HealthKitAndroid Health Connectסנכרון נתוני בריאותפיתוח אפליקציות מוביילReact Native
Mayank Joshi.webp

אודות המחבר

Mayank Chandra Joshi

AI & Cloud Solutions Expert at MicrocosmWorks

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

רוצים ללמוד עוד?

צרו קשר לדון כיצד נוכל לעזור ליישם פתרונות אלו עבור העסק שלכם.

צרו קשר

שאלות נפוצות

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!