הטמעת מעקב שינה באמצעות אפליקציה לנייד
מעקב שינה באפליקציה לנייד נתקל במגבלות חומרה. מד התאוצה של הטלפון מספק רק סיווג בסיסי של "שינה/ערות" עם דיוק שלב מתחת ל-60%. מעקב ברמה רפואית דורש חיישנים לבישים, המשתלבים באמצעות HealthKit ב-iOS ו-Health Connect באנדרואיד. מאמר זה צולל לפרטים טכניים, אלגוריתמים ומלכודות המבוססים על הניסיון שלנו (10+ שנים, מעל 50 פרויקטים של מעקב בריאות). צרו קשר כדי לדון בפרויקט שלכם.
איך עובד מעקב שינה ללא חיישנים לבישים?
טלפון על המזרן: מד התאוצה לוכד תנועות גוף. המשימה היא לסווג תקופות זמן. אנו מקליטים בתדר של 10 הרץ (אופטימלי לסוללה). כל 30 שניות אנו מחשבים פעילות כסכום של עוצמות שינוי התאוצה. אם activity_count < порога — שינה, אחרת ערות. הסף מכויל במהלך 3–7 הלילות הראשונים עם משוב משתמש.
בפרויקט אחד נתקלנו בבעיה: האלגוריתם פיצל מפגשים במהלך יקיצות ליליות של המשתמש. לאחר מיזוג מפגשים עם פער של עד 30 דקות, שימור המשתמשים עלה ב-15%. זה מדגיש את החשיבות של מודל התנהגות משתמש.
ללא דופק וטמפרטורה, שלבי שינה (REM, עמוק, קל) נקבעים בדיוק של <60%. אם המוצר טוען לרמה רפואית, נדרש חיישן לביש. חיישנים לבישים משפרים את דיוק שלבי השינה פי 1.5 בזכות נתוני דופק וטמפרטורה.
מנגנון שעון מעורר חכם
השעון המעורר החכם מעיר בשלב שינה קל. בתוך חלון זמן מוגדר, האפליקציה מנתחת את מד התאוצה ברקע. ב-iOS: לא ניתן ליישום באמצעות HKCategorySample, אך ניתן להשתמש ב-BackgroundTask. באנדרואיד: אנו משתמשים ב-AlarmManager.setAlarmClock() להפעלה מובטחת במצב Doze. אלגוריתם: כל 30 שניות בדוק activity_count; אם שתי קריאות רצופות עוברות את הסף, אנו רואים במשתמש כבשלב שינה קל ומפעילים את האזעקה.
למה חיישנים לבישים מדויקים יותר?
Apple Watch מתעד שינה אוטומטית באמצעות אלגוריתמים משלו — מד תאוצה, דופק, טמפרטורת עור (בדגמים חדשים). התוצאה מופיעה ב-HealthKit כ-HKCategoryValueSleepAnalysis. באנדרואיד — דרך Health Connect:
let sleepType = HKObjectType.categoryType(forIdentifier: .sleepAnalysis)!
let query = HKSampleQuery(
sampleType: sleepType,
predicate: HKQuery.predicateForSamples(withStart: startDate, end: endDate),
limit: HKObjectQueryNoLimit,
sortDescriptors: [NSSortDescriptor(key: HKSampleSortIdentifierStartDate, ascending: true)]
) { _, samples, _ in
guard let samples = samples as? [HKCategorySample] else { return }
samples.forEach { sample in
switch sample.value {
case HKCategoryValueSleepAnalysis.asleepCore.rawValue:
// лёгкий
case HKCategoryValueSleepAnalysis.asleepDeep.rawValue:
// глубокий
case HKCategoryValueSleepAnalysis.asleepREM.rawValue:
// REM
case HKCategoryValueSleepAnalysis.awake.rawValue:
// пробуждение
default:
break
}
}
} val response = healthConnectClient.readRecords(
ReadRecordsRequest(
recordType = SleepSessionRecord::class,
timeRangeFilter = TimeRangeFilter.between(startTime, endTime)
)
)
response.records.forEach { session ->
session.stages.forEach { stage ->
when (stage.stage) {
SleepSessionRecord.STAGE_TYPE_DEEP -> { /* глубокий */ }
SleepSessionRecord.STAGE_TYPE_REM -> { /* REM */ }
SleepSessionRecord.STAGE_TYPE_LIGHT -> { /* лёгкий */ }
SleepSessionRecord.STAGE_TYPE_AWAKE -> { /* пробуждение */ }
}
}
} כולל במשלוחים
בהזמנת פרויקט סוהר, אתם מקבלים: פיתוח אלגוריתמים לאיסוף וניתוח נתוני מד תאוצה, אינטגרציה עם HealthKit (iOS) ו-Health Connect (אנדרואיד), שעון מעורר חכם עם חלון יקיצה, לוח מחוונים סטטיסטי עם גרפי שלבי שינה, מודול כיול ללילות הראשונים, תיעוד, הדרכת צוות, גישה לקוד מקור ותמיכה שוטפת. לדוגמה, מעקב בסיסי עם מד תאוצה ושעון מעורר מתחיל מ-$15,000. על ידי אופטימיזציה של אלגוריתמים, אנו מקצרים את זמן ההטמעה ב-20%, ומורידים את עלות היישום.
סף ה-activity_count מכויל על סמך 3–7 הלילות הראשונים. המשתמש מאשר את זמני השינה והיקיצה, והאלגוריתם מתאים את עצמו לדפוסי התנועה האישיים שלו.
השוואת גישות
| פרמטר | ללא חיישן לביש | עם חיישן לביש |
|---|---|---|
| דיוק שלב | <60% | ~85-90% (פי 1.5 טוב יותר מאשר טלפון בלבד) |
| מקור נתונים | מד תאוצה | דופק + מד תאוצה + טמפרטורה |
| דרישות מכשיר | כל סמארטפון | גאדג'ט לביש |
| עלות פיתוח | נמוכה יותר | גבוהה יותר |
| מקרה שימוש | מוצר לשוק המוני | רפואי / פרימיום |
חיישנים לבישים טובים פי 1.5 ממעקב טלפון בלבד לדיוק שלבי שינה.
טעויות נפוצות
אנו רואים לעיתים קרובות שלוש טעויות נפוצות. ראשית, פיצול שינה: המשתמש קם בלילה ל-20 דקות, האלגוריתם יוצר שני מפגשים נפרדים. הפתרון — מיזוג מפגשים אם הפער קטן מ-30 דקות. שנית, טיפול באזורי זמן: אחסן חותמות זמן ב-UTC; זמן מקומי רק לתצוגה, אחרת הסטטיסטיקות נשברות בעת שינוי אזורי זמן. שלישית, מפגשים קצרים: סנן "שינה" קצרה מ-30 דקות כדי להוציא תנומות יום וחיובי שווא.
ציר זמן ושלבים
| שלב | משך |
|---|---|
| אנליטיקה ועיצוב | 1-2 שבועות |
| פיתוח אלגוריתם וממשק משתמש | 2-3 שבועות |
| אינטגרציית HealthKit/Health Connect | 1-2 שבועות |
| בדיקות וכיול | 1-2 שבועות |
| השקה ותמיכה | שבוע אחד |
מעקב בסיסי עם מד תאוצה ושעון מעורר — 3–5 שבועות. עם אינטגרציית חיישן לביש, שלבי שינה ואנליטיקה מתקדמת — 6–10 שבועות.
למהנדסים שלנו יש ניסיון של 10+ שנים והם סיפקו מעל 50 פרויקטים עם HealthKit ו-Health Connect. אנו מטפלים במשימות בכל מורכבות — מ-MVP ועד מוצר בר-הרחבה. אנו מבטיחים עמידה בלוחות זמנים ואיכות.
קבלו ייעוץ ממומחה טכני והערכת פרויקט תוך יום אחד. הזמינו פיתוח מעקב שינה — כתבו לנו, נמצא את הפתרון האופטימלי לתקציב וללוח הזמנים שלכם.







