הבנת תפקידה של Core Motion ב-Step Tracking

מסגרת הליבה של אפל היא הבסיס לבניית תכונות מדויקות, סוללת-יעילות מעקב אחר צעד ביישומים של iOS כושר.על ידי הפשטות של מורכבות של נתוני חיישן גולמי ממטר, גירוסקופ, ו pedometer, Core Motion מספק API מאוחדת המאפשר למפתחים להתמקד בחוויית המשתמש ולא באפליקציות אישיות ברמה נמוכה מסתמכות על Core כדי לספק ביצועים אמיתיים והיסטוריים, אפילו בתנאי ניתוחי ביצועים, והערכה של המשתמש.

בלב של מעקב אחר צעד הוא נתוני FLT:0 (CMPedometerFLT) מחלקה 1:1, אשר חושף ספירת צעד, מרחק, קצב ונתוני צונח מבלי לדרוש מפתחים לפרש ישירות את תצורת גלפורממטר.זה יישום קווי זרם ומבטיח עקביות על פני דגמי iPhone ו- Apple Watch שונים.

המונחים: Step and Activity Tracking

CMPedometer - The Primary Step Tracking Interface

(ב) [ה]ה']: [ה], [ה], [ה], [ה], [ה],] [ה], [ה],] [ה],] [ה'], [ה'], [ה'], [ה']'[ה']']'[ה']']'[ה']']']'[ה'[ה']']']'[ה']']'[ה'[ה']'[ה'[ה'[ה'[ה']'[ה'[ה']']']'[ה']'[ה'[ה']']']']'[ה']'[ה'[ה'[ה'[ה']']']']']'[ה'[ה']']'[ה']']'[ה']']'[ה'[ה']']'[ה'[ה'[ה'[ה']'[ה']']'[ה'[ה'[ה'[ה'[ה

לפני השימוש CMPedometer, עליך לבדוק זמינות עם FLT:8 בעוד כמעט כל מכשירי iOS מודרניים לתמוך ספירת צעד, מודלים ישנים יותר או Apple Watches ללא מדפדים בנוי עשוי להחזיר FLT:9 יישום חזק יהיה להתמודד עם מקרים כאלה ולספק נפילה מתאימה או להשבית את התכונה.

CMMotionManager - Raw Sensor Access for Advanced Use Cases

בעוד CMPedometer מספיק עבור רוב הצרכים של המסלולים, CMMotionManagerFLT 1 נותן מפתח גישה אל מד תאוצה של המכשיר, גירוסקופ, ומגנטometer. זה יכול להיות שימושי עבור אלגוריתמים מתקדמים, ניתוח gait יוצא דופן, או כאשר אתה צריך לשלב נתונים עם אוריינטציה, 000 גולמי כי ריצה הוא יעיל עבור מחסנית גבוהה הוא צורך סוללת Cercreitated נתונים מרוקן באופן קבוע, או כאשר אתה יכול להיות מרוקן באופן קבוע הוא מחסנית הוא סוללת Cercreciated נתונים מחסנית הוא מחסנית הוא יעיל יותר מרוקן.

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

CMStepCounter ו-Hygation

(ה) גירסאות קודמות של iOS (FLT:10) עבור מעקב אחר צעד, אך שיעור זה היה מוקרן ב- iOS 13.כל הפיתוח החדש צריך להשתמש ב-FLT:0CMPedometerFLT:1 באופן בלעדי, אם אתה שומר קוד מורשת, הגירה כוללת החלפת FLT:11 שיחות עם המקבילה FLT:12 שיטות הגירה למעשה קטין:FLT 13 הופך להיות LTF, ו-FLT, ו- 14.

יישום שלב העבודה

בדיקת זמינות ובקשה לקבל אישורים

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

פרטיות המשתמש היא קריטית: Core Motion מבקשת באופן אוטומטי רשות מהמשתמש בפעם הראשונה שהאפליקציות שלך מנסה לגשת לנתונים של התנועה.You חייב לכלול את מפתח FLT 18 בקובץ שלךFLT:19, מתן הסבר מעמיק מדוע האפליקציה שלך צריכה נתונים בתנועה.ללא מפתח זה, המערכת תמנע גישה ושיחותיך לא ייכשלו בשקט.

החל מעדכון Pedometer בזמן אמת

כדי לקבל עדכונים של צעד חי, התקשר ל-FLT:21 פרמטר 22 פרמטר הוא בדרך כלל התאריך והשעה הנוכחי.בלוק המטפל מופעל בכל פעם שנתוני שלב חדשים זמינים.בתוך המטפל, תמיד לבדוק שגיאות ראשונות - לדוגמה, אם המשתמש הכחיש את רשותו, השגיאה תכיל FLT:23 או דומה, אז ללא ספק את האובייקט של LT:24 ועדכון של UI או מודל שלך.

דפוס משותף הוא ליצור לדוגמה את ה-FLT:25 כנכס של בקר או מחלקה למנהלי הראייה שלך, ולהתחיל עדכונים כאשר המסך הרלוונטי מופיע.

let pedometer = CMPedometer()
pedometer.startUpdates(from: Date()) { (data, error) in
 guard let data = data, error == nil else { return }
 DispatchQueue.main.async {
 self.stepCountLabel.text = "\(data.numberOfSteps) steps"
 }
}

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

שאילתות מידע היסטורי

בנוסף לעדכונים חיים, CMPedometer יכול לאחזר ספירות שלב בכל טווח זמן באמצעות (FLT:27) זה שימושי להציג את יום יומי, שבועי, או סיכומים חודשיים.השאילתה פועלת באופן מסונכרן ומחזירה את הנתונים המצטברים לתקופה שצוין. Note כי המערכת עשויה להגביל את הנאות של נתונים היסטוריים, במיוחד עבור תאריכים רבים בעבר, ואת המרחק עשוי להיות לא זמין אם המכשיר לא פעיל לא היה פעיל.

כדי להימנע מצוואר בקבוק ביצועים, להגביל שאילתות לחלונות זמן סביר (למשל, לא יותר משבוע בזמן) ומטמון את התוצאות אם האפליקציה שלך מציגה לעתים קרובות תרשימים היסטוריים.אתה יכול גם לשלב שאילתות של Core Motion עם HealthKit קורא תמונה מלאה יותר.

עדכון ל- Battery Life

תמיד לקרוא ל-FLT:28 במקרה הנדמטר שלך כאשר אתה כבר לא צריך נתונים חיים.כישלון להפסיק עדכונים יכול לנקז את הסוללה להוביל לתלונות משתמשים.לקשור את מחזור החיים של העדכון לתפיסתך - חוסר שביעות רצון או שיטות דה-ניוט.עבור יישומים הדורשים מעקב רציף ברקע (למשל, מסלול הליכה), לאפשר את LTF:29 ולבחון את השימוש באפליקציות של מערכת ההפעלה, אך לא צריך עדיין לבצע מעקב רציף ברקע.

טעויות ודברים

תאימות ו- Motion Sensor Calibration

לא כל מכשירי iOS יש את אותן יכולות לחישה תנועה.אייפון 5s ומאוחר יותר כוללים מעבד תנועה של Apple M-series כי מקלקל חישובים של pedometer מה-CPU הראשי, אבל ההתנהגות המדויקת יכולה להיות שונה.לדוגמה, ה-iPhone SE (1st Generation) תומך בספירת צעד, בעוד iPod touch (6th Generation) לא תמיד לבדוק זמינות ומבחן על משפחות מרובות.

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

ניהול אפשרויות ועדכוני רקע

אם האפליקציה שלך נכנסת לרקע, Core Motion עשויה זמנית להשעות עדכונים. Upon foregrounding, תצטרך להפעיל מחדש את העדכונים של pedometer. כדי לספק חוויה חלקה, לשאול את נקודת הנתונים הידועה האחרונה מזמנים שנשמרו לפני ההפרעה, ולקרוא ל-FLT:31 למלא את הפער. גישה זו מבטיחה לא אבדה בעוד האפליקציה לא הייתה פעילה.

עבור יישומי WatchOS, נתוני pedometer מסונכרנים באופן אוטומטי באמצעות מעבד התנועה של Apple Watch, אבל אפליקציית iOS שלך חייבת לשאול במפורש את מדמטר המכשיר עצמו - זה לא מקבל באופן אוטומטי שלבים שנרשמו על השעון. HealthKit אינטגרציה (שלא מתמקדת מאוחר יותר) פותר בעיה סינכרונית זו.

שיטות טובות לביצועים ופרטיות

אופטימיזציה של סוללה ותהליכים Overhead

כדי למזער את ניקוז הסוללה, בצע את ההנחיות האלה:

  • (ב) ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
  • התחל עדכונים רק כאשר המשתמש מאפשר במפורש מעקב אחר צעד או מתחיל אימון.
  • תפסיקו עדכונים מיד כאשר מסך המעקב נעלם או שהאימון מסתיים.
  • עבור ספירת צעד פסיבית (למשל, תמיד על שלב מוחלט), לשקול שימוש ב- HealthKit כדי לקרוא שלבים שנרשמו על ידי המערכת - המטר של המערכת פועל ביעילות ברקע.
  • נתונים היסטוריים של Cache באופן מקומי כדי להימנע משאילתות חוזרות על פני אותו טווחי זמן.

פרטיות והתאמה לנתונים

נתוני שלב נחשבים למידע בריאות רגיש.אפל לאכוף כללי פרטיות נוקשים:

  • תמיד כוללים את המחרוזת של ה-FLT:32; אי-אפשר לעשות זאת, גורם לשיח ההרשאות לא להופיע.
  • לעולם אל תשתף נתונים של צעד עם ניתוח צד שלישי או רשתות מודעות ללא הסכמת משתמשים מפורשת.
  • אם אתה מאחסן נתונים על שרת, להצפין אותו במעבר ובמנוחה, ולספק דרך למשתמשים למחוק את הנתונים שלהם.
  • לכבד את החלטת המשתמש לבטל את הרשאות; האפליקציה שלך צריכה להתמודד עם השגיאה בחסד ובחוסר יכולת מעקב אחר צעד.

היכרות עם Apple Health באמצעות HealthKit

קריאה וכתיבה של שלב נתונים לבריאות

לפתרון כושר מקיף, משלב את Core Motion עם FLT:0.HealthKitFLT:1 .בעוד Core Motion מספק נתונים בזמן אמת, HealthKit משמש כמחסן מרכזי עבור כל מדדי הבריאות.You יכול לקרוא ספירות שלב שנכתבו על ידי יישומים אחרים או המערכת עצמה, ואתה יכול לכתוב את נתוני הצעד שלך לתוך HealthKit לחלוק עם רשומות הבריאות של המשתמש.

כדי לכתוב שלבים, ליצור קונסולת:33 (ב) סוג של אלפבית 34; וכדי להציל אותו באמצעות (FLT:35) תמיד לבקש אישור FLT:36 על ידי קריאה FLT:37 ליד השקת אפליקציה.

לשמור על סט נתונים סינכרוני

בעת קריאת השלבים ההיסטוריים, ניתן להשתמש בשאילתות של HealthKit'sFLT:38 כדי לסכם צעדים לאורך תקופה.זה יכול לשמש כנפילה אם שאילתות CMPedometer להיכשל או אם אתה רוצה לשלב נתונים של שלב מ-Apple Watch. כדי להימנע מדיווח כפול, לאמץ אסטרטגיה: או להסתמך על Core עבור אחסון בזמן אמת ובריאות לטווח ארוך, או תמיד לקרוא בריאות מ-Kit ו להתעלם מיישומים היסטוריים.

שיפור שלב מתקדם

ניתוח עם Core Motion

(ה- Core Motion's (FLT:39) יכול לסווג את מצב התנועה הנוכחי של המשתמש - למשל, לוח, הליכה, ריצה, רכיבה על אופניים או נהיגה.שלב זאת עם נתונים של צעד מאפשר לאפליקציית שלך להציג משוב קומבי, כגון "אתה הולך במשך 10 דקות" לעומת "אתה עדיין רוכב על אופניים".

פייס וקאדינס מסובכים מ-Pedometer Data

התכונות של ה-FLT:41 ו-FLT:42 (ה-FLT:42) לספק הליכה מיידית או מטרי ריצה.פייס מוערכת בשניים למטר, וגזרה היא מספר השלבים לשנייה.ערכים אלה שימושיים לבניית לוחות עתונים המציגים את עוצמת האימון הנוכחית של המשתמש.

שילוב נתונים של Accelerometer for Step Accuracy

אם אתה מוצא כי מסננים בנוי-מונים של CMPedometer מפסדים במהלך פעילויות מסוימות (למשל, טיפוס מדרגות עם פצעי יד), אתה יכול להשלים אותו עם נתונים של מד תאוצה גולמיים מ-FLT:44 , יישום אלגוריתם פשוט זיהוי צעד באמצעות מסנן נמוך על גודל האצה וסף של פיזור שיא.

שיקולים אמיתיים ובדיקות

בדיקות על מודלים שונים של iPhone וגירסאות iOS

התנהגות מעקב אחר צעד יכולה להשתנות על פני מכשירים.לבחון את האפליקציה שלך לפחות על תצורה זו:

  • אייפון 6s או מבוגר יותר (ללא M9 מעבד בפועל?) למעשה כל מכשירי 5 ומעלה יש מעבדי תנועה, אבל מבוגרים עשויים להיות נתונים פחות מדויקים.
  • אייפון 8 ואילך (חדשן מעבדים).
  • iPhone עם iOS 13+ (הבטחה API האחרון).
  • iPad (חלק מהמודלים של iPad יש pedometers, אבל רבים לא).

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

אימות שלב הרוזן

אין pedometer מדויק ב-100%.כדי לקבוע ציפיות של משתמשים, לפרסם טווח דיוק טיפוסי (למשל, "דיוק משתנה על ידי המכשיר, אבל טעות טיפוסית היא בתוך 5%") במהלך פיתוח, להשוות את מדדי הצעד של האפליקציה שלך נגד בסיס ידוע-טוב כמו אפליקציית הבריאות הבנויה.עבור בדיקות רגרסיה, הליכה אוטומטית עם שולחן (אם זמין) או שימוש ברצף מבחן ידני.

בנייתו של פנקס הפקה-Ready Step Tracker עם Core Motion

(הופנה מהדף Core Motion) הוא תהליך פשוט כאשר אתה עוקב אחר הנחיות אפל.התחל עם (FLT:0)CMPedometerveFLT:1 עבור ספירות צעד, להוסיף FLT:2CMMotion Activity (ManagerFLT) עבור הקשר, לשלב עם FLT:4HealthKitFLT:5 עבור אחסון לטווח ארוך וצלב, תמיד לסנכרן ו-iOS, תמיד גירסאות מרובות של התנהגות עקבית.

לקריאה נוספת, מומלץ להתייעץ עם המסמכים הרשמיים של אפל:

  • (ב) ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
  • (ב) ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
  • (ב) ,0) ,HealthKit FrameworkFLT:1 - שילוב נתונים של צעד עם מסד הנתונים הבריאותי.
  • (ב) CMMotion Activity ManagerFLT:1) - סיווג פעילות.
  • (FLT:0) הבטחת שלב ספירת זמינות 1 (AvailabilityFLT) – תיעוד של בדיקת תמיכה בחומרה.

על ידי מינוף ממשקי API המותאמים ל- Core Motion ודבקות בפרקטיקה הטובה ביותר של אפל, אתה יכול לספק חוויה מעקב אחר צעד שהוא מדויק, ידידותי לסוללה, וכבוד לפרטיות של משתמשים - שילוב קריטי עבור כל יישום כושר מוצלח.