מדד וחקירה
בניית אפליקציה מעקב אחרי כושר עם אינטגרציה נתונים חושית ב Ios
Table of Contents
למה חיישנים נתונים חשובים ב- Fitness Apps
מכשירים מודרניים של iOS לארוז מערך של חיישנים שיכולים לזהות תנועה, מיקום ואפילו קצב לב. integraing החיישנים האלה לתוך יישום מעקב כושר הופך נתונים חומרה גולמיים למדדים משמעותיים כגון ספירות צעד, מרחק, קלוריות שרוף, ומפת נתיב. על ידי הזז לתוך ה-FLT:0Core MotionFLT:1 ו-FLT2Corebitrebitalples: 3 מסגרות, ומאפשרות פעילות חכמה יותר, כלומר, מאפשר משובים מתקדמים (מתאים) כגון פונקציות הפעלה, כגון פונקציות פעילות גופנית, תכונות פעילות גופנית, ומאפשרות).
חיישן מפתח זמין ב- iOS מכשירים
לפני צלילה לקוד, חשוב להבין מה הם חיישנים לרשותך:
- (ב) ,0) ,AccelereralerometerFLT:1 - כוחות האצה, המשמשים לגילוי וכיוון של צעד.
- (ב) ,0)GyroscopesFLT:1 - צעדים רוטציה, מסייע עם סיווג פעילות וגילוי בסתיו.
- (ב) ,0)GPSIRLT:1 - מספק מיקום מדויק, מהירות ועיבוד המסלול.
- (ב) ,0 מ"מממנטרול 1 (מספק כיוון מצפן, שימושי עבור תכונות ניווט.
- (ב) ,0) ,19011 , ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
- (FLT:0)Heart Rate SensorssFLT:1 - זמין באמצעות Apple Watch או מכשירים Bluetooth של צד שלישי, משולבים באמצעות HealthKit או Core Bluetooth.
כל חיישן דורש מסגרות ספציפיות: Core Motion for accelerometer,gyroscope, ומגנטימטר; מיקום הליבה עבור GPS וברמטר; HealthKit לשיעור לב ונתונים בריאותיים אחרים.
הגדרת סביבת הפיתוח שלך
החל על ידי התקנת Xcode (זמין מחנות Mac App Store) ויצירת פרויקט iOS חדש.בחר את תבנית ה- 0.0 (AppveFLT:1 ולהבטיח שיש לך חשבון מפתח Apple לבדיקה על מכשירים אמיתיים.נתוני חיישן לעתים קרובות דורשים חומרה אמיתית; סימולטורים יש תמיכה חיישן מוגבל (למשל, לא גובה GPS, לא ממש רעש מאיץ).
בפרויקט ה-Xקוד שלך, אפשרו את היכולות הנדרשות תחת FLT:0 מינוף ואמפ; CapabilitiesveFLT:1:
- (ב) ,0) ,Lowing ServicesveFLT:1 - עבור GPS ו ניטור אזור.
- (ב) אם אתם מתכננים לקרוא / לשכת בריאות.
- (FLT:0) Background ModesFLT:1 - בדוק "עדכונים לרישום" ו"Audio, Airplay ו- Picture in Picture" אם יש צורך בפידבק אודיו.
הוסף את ההטבות המתאימות ואת מפתחות המידע.
לבקש אישורים בדרך הנכונה
משתמשים הם יותר ויותר מודעים לפרטיות, תמיד מבקשים הרשאות בשלב שבו יש צורך בתכונה, לא בעת ההשקה.
import CoreLocation
let locationManager = CLLocationManager()
locationManager.delegate = self
locationManager.requestWhenInUseAuthorization()
לקבלת נתונים בתנועה, השתמש בנתוני תנועה:0 CMMotionManagerph1 . Note כי נתוני התנועה אינם דורשים אישור מפורש מהמשתמש (המכונה internal), אך עדיין עליך להסביר מדוע אתה צריך את זה במדיניות הפרטיות שלך.עבור נתוני HealthKit, עליך לקבל אישור הוגן HKHealthStore ולקרוא ל-F:3 לספק, להבהיר, למקם מידע במחרוזת כדי לבנות אמון.
יישום חיישנים Data Collection
איסוף נתונים הוא הליבה של אפליקציית הכושר שלך.למטה אנו מכסים את ההצעה ואת אוסף המיקום.
Accelerometer ו- Gyroscope נתונים עם Core Motion
השתמש ב-FLT:0 CMMotionManager1ve כדי להתחיל עדכונים.בחר מרווח עדכון הממאזן את דיוק חיי הסוללה.עבור ספירת השלבים, 1/50 השני (20 מ') הוא טיפוסי, אבל עבור עדכונים UI, 1/10 השני הוא מספיק.
import CoreMotion
let motionManager = CMMotionManager()
motionManager.accelerometerUpdateInterval = 0.1
motionManager.startAccelerometerUpdates(to: .main) { (data, error) in
guard let accelData = data else { return }
// Use accelData.acceleration.x, .y, .z
}
עבור גירוסקופ ומגנטמטר, שיטות דומות קיימות: FLT:5 ו-FLT:6 אם אתה צריך גישה למכשיר (גזר ביחס לכובד ראש), שימוש ב-FLT 7 המשלב תאוצה, גירוסקופ ונתוני מגנטימטר.
GPS ומיקום נתונים עם מיקום ליבה
(הופנה מהדף ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
locationManager.delegate = self
locationManager.desiredAccuracy = kCLLocationAccuracyBest
locationManager.distanceFilter = 5 // meters
locationManager.startUpdatingLocation()
יישום שיטת הציר (FLT:11) כדי לעבד קואורדינטות חדשות. השתמש ב- FLT:0horizontalAccuracycioFLT:1 נכס כדי לסנן קריאות באיכות נמוכה.
עיבוד נתונים של חיישן לתוך metrics שימושיים
נתוני חיישן Raw הם רועשים.שלבי עיבוד כוללים בדרך כלל סינון, קלברציה, חישוב.
שלב הרוזנת מ- Accelerometer
השתמש אלגוריתם גילוי שיא על גודל האצה.גישה נפוצה היא למקם את נורמה Euclidean (sqrt(x2+y2+z2)), להחיל מסנן גבוה לפטור את הכבידה, ולאחר מכן לזהות שיאים מעל סף.
if CMPedometer.isStepCountingAvailable() {
var pedometer = CMPedometer()
pedometer.startUpdates(from: Date()) { (data, error) in
if let steps = data?.numberOfSteps {
// update UI
}
}
}
כך למשל, ניתן להגיע ל[[1924]], [[1924]], [[1924]], [[1924]], [[1924]], [[1924]]]], [[1924]]]]]], [[1924]]]]]], [[1924]]]]]], [[1924]]]]]]
ניתוח פעילות
השתמש ב-FLT:0 CMMotion ActivityManagerFIRLT:1 כדי לסווג באופן אוטומטי את מצב התנועה של המשתמש (הליכה, ריצה, רכיבה, אופניים, כלי רכב) זה מקטין את הצורך באלגוריתמים נפרדים ומספק קונטקסט ברמה גבוהה.
let activityManager = CMMotionActivityManager()
activityManager.startActivityUpdates(to: .main) { (activity) in
if activity?.walking == true {
// treat as walking
} else if activity?.running == true {
// treat as running
}
}
מרחק ומהירות מ- GPS
מרחק בין נקודות מיקום רצופות באמצעות FLT:0 Distance (מ:)Felople 1: שיטה על מהירויות קבועות. Sum מרחקים כדי לקבל מרחק מוחלט.מהירות זמינה באמצעות נכס FLT:14 (m/s) פילטר החוצה מהירויות בלתי סבירות (למשל, ואגט; 30 / ms for Human Activity).
מידע: תרשימים ומפות
(הופנה מהדף ויקרא י"ד) , [17] , ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
import MapKit
let polyline = MKPolyline(coordinates: &coordinates, count: coordinates.count)
mapView.addOverlay(polyline)
עבור קצב לב, אם מחובר באמצעות בריאותי או Bluetooth, להציג גרף בזמן אמת באמצעות נוף FLT:0WKinterfaceGraphicphioFLT:1 או SwiftUIFLT:2ChartphveFLT 3.
עדכון רקע
יישומים של הכושר צריכים לעתים קרובות לאסוף נתונים כאשר האפליקציה נמצאת ברקע. Enable (FLT:0Background ModesFLT:1 ובחירת "עדכונים לרישום" עבור מיקום רקע מתמשך, להשתמש ב-FLT:16 עבור ניטור משמעותי (פחות תכופים, ידידותי סוללה), להשתמש ב-FLT:17.
לקבלת נתונים בתנועה, עדכוני רקע מוגבלים.המערכת עשויה לספק עדכונים רק בעוד האפליקציה נמצאת בחזית או זמן קצר לאחר עדכון מיקום.כדי לשפר את האמינות, שקול באמצעות שימוש ב-FLT:0CLActivityTypephFLT 1 שנקבע ל-FLT 18 כדי לרמוז למערכת שנתוני המיקום קשורים לאימון.
אחסון נתונים ובריאות
נתוני אימון בחנות בעקביות.אפשרויות:
- (ב) ,0) ,4 , טוב לאובייקטים מורכבים ולמערכות יחסים.
- (ב) ,0) ,SQLiteph:1 ; קל משקל, בקרה ישירה של SQL.
- (ב) ,0 משתמשים (הראשונה) , רק להגדרות קטנות, לא לגני החיישן.
- (FLT:0)HealthKitigof 1 (האתר המרכזי של אפל עבור נתוני בריאות.כתיבה של אימון לבריאות עושה אותם זמינים לבריאות אפל ואפליקציות אחרות.
כדי לשלב את הבריאות, בקשה ראשונה להגשת מידע על אימון ולקרוא דגימות רלוונטיות (קצב לב, מרחק) ולאחר מכן ליצור LT:0HKWorkouttureFLT:1 ו-"לחסוך את זה:
let healthStore = HKHealthStore()
let workout = HKWorkout(activityType: .running, start: startDate, end: endDate, duration: duration, totalEnergyBurned: energy, totalDistance: distance, metadata: nil)
healthStore.save(workout) { (success, error) in
// handle
}
ניתן לבצע דגימות קצב לב במהלך האימון במקביל באמצעות FLT:0 (HKAnchoredObjectQueryFLT:1 או FLT:2HKObserverQueryFLT 3).
אופטימיזציה של סוללה חיים וביצועים
שימוש בחיישנים רציף מרוקן סוללות.ליישם אסטרטגיות אלה:
- (ב) ,0) עדכון המרווחים של עדכון (FLT:1) - השתמש בתדירות נמוכה יותר עבור עדכוני UI, רק כאשר יש צורך.
- (ב) ,0) ,Use Distanceסינון: עבור GPS, להגדיר את ה-FLT:20 לערך סביר (למשל, 10 מטרים).
- (ב) ויקרא י"א:2 CMMotion ActagerFLT 3) כדי לזהות תקופות מעצר ולעצור את עדכוני ה- GPS.
- (ב) ב-iOS 6+ ניתן לאפשר עדכוני מיקום להסרה על מנת לחסוך בכוח באמצעות FLT:21.
- (ב) ,0) עיבוד של תהילים 1 (ב) - איסוף נתונים בזיכרון וכתוב לאחסון מעת לעת (למשל, כל 10 דקות).
בדיקות ו-Deguing Sensor Data
בדיקה על סימולטור מוגבל.תמיד לבדוק את המכשירים האמיתיים של מד תאוצה מדויקת, GPS, ונתוני קצב הלב. השתמש ב- Xcode:0.Simulate LocationFLT:1 תכונה לבדיקת נתיבי נהיגה חינם.עבור נתוני תנועה, באפשרותך להשתמש ב-FLT:2Core MotionFLT 3; 3 debuing כלים במפתח על גבי המכשיר, כמו גם כדי לתקן את תנאי תיקון התנהגות "FLT" על ידי אימות" על ידי אימות" על ידי בדיקת דרכים.
חוויות המשתמש ושיקולי הפרטיות
פרטיות היא קריטית.עקוב אחר הנחיות ההנחיות של אפל:0App Store Revieweur GuidelinesFLT 1:1 ושמירה על מדיניות פרטיות ברורה.לעולם אל תשתף נתונים של חיישן ללא הסכמה מפורשת. השתמש בעיבוד הניתוק במידת האפשר.
חווית המשתמש צריכה לכלול:
- מסך על הסיפון המסביר שימוש בחיישנים והטבות.
- משוב בזמן אמת במהלך אימון (רמזים בינוניים, משוב מטושטש).
- היכולת לסקור, לערוך ולמחוק נתוני אימון.
- פונקציונליות Offline - לאחסן נתונים באופן מקומי וסנכרון כאשר הרשת זמינה.
שיפור עתידי
שקול להוסיף:
- אינטגרציה עם (FLT:0) Apple WatchveFLT 1 עבור קצב לב ואימון מעקב.
- מודלים של למידת מכונות (Core ML) עבור הכרה בפעילות מתקדמת.
- תכונות חברתיות (מנהיגים, אתגרים) באמצעות CloudKit.
- מדרש: ויקרא י"ד:
מסקנה
(ב) בניית אפליקציה למעקב אחר כושר עם אינטגרציה של נתוני חיישן ב- iOS היא אתגר מתגמל.על ידי מינוף של Core Motion, Core Location, HealthKit, באפשרותך ליצור אפליקציה המספקת תובנות מדויקות, ניתנות לפעולה תוך שמירה על פרטיות המשתמשים.