שילוב Core Motion: מד תאוצה וגירוסקופ באפליקציות iOS

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

פיתוח ותמיכה בכל סוגי היישומים הניידים:

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

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

השירותים שאנו מציעים
מציג 1 מתוך 1כל 1734 השירותים
שילוב Core Motion: מד תאוצה וגירוסקופ באפליקציות iOS
בינוני
מ- 1 יום עד 3 ימים

הכישורים שלנו:

שאלות נפוצות

העבודות האחרונות

  • פיתוח אפליקציית מובייל עבור FEEDME
    פיתוח אפליקציית מובייל עבור FEEDME
    971
  • פיתוח אפליקציית מובייל עבור XOOMER
    פיתוח אפליקציית מובייל עבור XOOMER
    869
  • פיתוח אפליקציית מובייל עבור RHL
    פיתוח אפליקציית מובייל עבור RHL
    1289
  • פיתוח אפליקציית מובייל עבור ZIPPY
    פיתוח אפליקציית מובייל עבור ZIPPY
    1143
  • פיתוח אפליקציית מובייל עבור Affhome
    פיתוח אפליקציית מובייל עבור Affhome
    1076
  • פיתוח אפליקציית מובייל עבור חברת FLAVORS
    פיתוח אפליקציית מובייל עבור חברת FLAVORS
    677

שילוב Core Motion: מד תאוצה וגירוסקופ באפליקציות iOS

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

Core Motion הוא נקודת הכניסה היחידה לחיישני האינרציה של iPhone ו-iPad: מד תאוצה, גירוסקופ, מגנומטר, ברומטר ו-Motion Coprocessor. הוא מספק גישה ישירה לנתונים גולמיים בתדירות של עד 100 הרץ, בנוסף לנתוני Device Motion מעובדים עם תיקון כבידה וסינון סחיפה של הגירוסקופ. רוב המשימות ניתנות לפתרון ברמת Device Motion—אין צורך ליישם פילטרים של Madgwick או Mahony ידנית.

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

איך לשלב Core Motion עבור מד תאוצה וגירוסקופ?

CMMotionManager: מופע אחד לכל אפליקציה

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

final class MotionManager { static let shared = MotionManager() let motion = CMMotionManager() private init() {} } 

למה Device Motion על פני מד תאוצה גולמי?

Device Motion (final class MotionManager { static let shared = MotionManager() let motion = CMMotionManager() private init() {} } ) מספק שלושה רכיבים שימושיים ישירות:

  • userAcceleration — תאוצה לינארית ללא כבידה.
  • attitude — כיוון במרחב (pitch, roll, yaw).
  • rotationRate — מהירות זוויתית עם תיקון סחיפה חומרתי.

מד תאוצה גולמי (let manager = MotionManager.shared.motion manager.deviceMotionUpdateInterval = 1.0 / 60.0 // 60 Гц manager.startDeviceMotionUpdates( using: .xMagneticNorthZVertical, to: .main ) { [weak self] motion, error in guard let motion = motion else { return } let pitch = motion.attitude.pitch // наклон вперёд/назад (радианы) let roll = motion.attitude.roll // наклон влево/вправо let yaw = motion.attitude.yaw // поворот вокруг вертикальной оси let accel = motion.userAcceleration // линейное ускорение без гравитации let rotation = motion.rotationRate // угловая скорость рад/с } ) מחזיר תאוצה כוללת כולל כבידה (≈9.81 מ'/שנ'² על ציר Z במצב נייח). כדי לחלץ תנועה, נדרש פילטר נוסף.

השוואת דיוק:

פרמטר Device Motion מד תאוצה גולמי
דיוק כיוון <1° סטטי דורש סינון, שגיאה עד 5°
מאמץ יישום נמוך (נתונים מוכנים) גבוה (פילטר מותאם אישית)
צריכת סוללה בינונית (coprocessor) בינונית (CPU)

Device Motion מעבד נתונים על ה-coprocessor—דיוק כיוון פי 10 טוב יותר מעיבוד נתונים גולמיים ידני.

let manager = MotionManager.shared.motion
manager.deviceMotionUpdateInterval = 1.0 / 60.0 // 60 Гц
manager.startDeviceMotionUpdates(using: .xMagneticNorthZVertical, to: .main) { [weak self] motion, error in
    guard let motion = motion else { return }
    let pitch = motion.attitude.pitch // наклон вперёд/назад (радианы)
    let roll = motion.attitude.roll // наклон влево/вправо
    let yaw = motion.attitude.yaw // поворот вокруг вертикальной оси
    let accel = motion.userAcceleration // линейное ускорение без гравитации
    let rotation = motion.rotationRate // угловая скорость рад/с
}

CMAttitudeReferenceFrame.xMagneticNorthZVertical — כיוון יחסית לצפון המגנטי, Z כלפי מעלה. עבור אפליקציות משחק ו-AR, זו הבחירה הנכונה. לזיהוי מחוות פשוט, השתמש ב-xArbitraryZVertical (ללא מגנומטר, הספק נמוך יותר).

איך לזהות מחוות עם Core Motion?

מחוות השייק מובנית ב-UIKit אך מוגבלת. למחוות מותאמות אישית—נתח את userAcceleration. דפוס שייק: שיאי תאוצה > 2.5g עם סימנים מתחלפים על ציר אחד בתוך < 500 אלפיות השנייה.

var accelerationHistory: [Double] = []

// В обработчике device motion:
let magnitude = sqrt(
    pow(motion.userAcceleration.x, 2) +
    pow(motion.userAcceleration.y, 2) +
    pow(motion.userAcceleration.z, 2)
)
accelerationHistory.append(magnitude)

if accelerationHistory.count > 30 {
    accelerationHistory.removeFirst()
}

let peakCount = accelerationHistory.filter { $0 > 2.5 }.count
if peakCount >= 3 {
    triggerShakeAction()
    accelerationHistory.removeAll()
}

קביעת כיוון והטיה

עבור אפליקציות פלס, סימון AR, שליטה במצלמה: var accelerationHistory: [Double] = [] // В обработчике device motion: let magnitude = sqrt( pow(motion.userAcceleration.x, 2) + pow(motion.userAcceleration.y, 2) + pow(motion.userAcceleration.z, 2) ) accelerationHistory.append(magnitude) if accelerationHistory.count > 30 { accelerationHistory.removeFirst() } let peakCount = accelerationHistory.filter { $0 > 2.5 }.count if peakCount >= 3 { triggerShakeAction() accelerationHistory.removeAll() } ו-attitude.pitch מדויקים מספיק (שגיאה < 1° בתנאים נייחים).

מד צעדים ללא CMPedometer

במכשירים ללא תמיכה ב-attitude.roll (iPod Touch ללא Motion Coprocessor)—זיהוי צעדים ממד התאוצה. אלגוריתם: פילטר מעביר נמוך על CMPedometer, זיהוי שיאים > 0.2g עם מרווח מינימלי של 300 אלפיות השנייה.

איך לעבוד עם CMAltimeter: גובה ברומטרי?

userAcceleration.y הוא מחלקה נפרדת עבור הברומטר:

let altimeter = CMAltimeter()
guard CMAltimeter.isRelativeAltitudeAvailable() else { return }
altimeter.startRelativeAltitudeUpdates(to: .main) { data, error in
    guard let data = data else { return }
    let relativeAltitude = data.relativeAltitude.doubleValue // метры от старта
    let pressure = data.pressure.doubleValue // кПа
}

CMAltimeter הוא השינוי בגובה מתחילת העדכונים, לא גובה מוחלט מעל פני הים. דיוק: ±0.1 מ' במזג אוויר יציב. משמש לספירת קומות ב-let altimeter = CMAltimeter() guard CMAltimeter.isRelativeAltitudeAvailable() else { return } altimeter.startRelativeAltitudeUpdates(to: .main) { data, error in guard let data = data else { return } let relativeAltitude = data.relativeAltitude.doubleValue // метры от старта let pressure = data.pressure.doubleValue // кПа } ולאפליקציות כושר (עלייה/ירידה בגובה במסלול).

מקרה בוחן: מעקב פעילות באפליקציית כושר

בפרויקט אחד, היינו צריכים ספירת צעדים מדויקת, זיהוי קומות וזיהוי מחוות נדנוד יד. שילבנו Device Motion בתדירות 50 הרץ, השתמשנו ב-relativeAltitude למד צעדים וב-CMPedometer.floorsAscended לזיהוי הרמת יד. אופטימיזציה הפחיתה את צריכת הסוללה ב-30% בהשוואה לעיבוד נתונים גולמיים. התוצאה—האפליקציה עברה את בדיקת App Store וקיבלה דירוגי משתמשים גבוהים.

איך לבצע אופטימיזציה של צריכת סוללה בעבודה עם חיישנים?

תרחיש תדירות צריכה
זיהוי מחוות 10–25 הרץ נמוכה
מד צעדים 25–50 הרץ בינונית
שליטה במשחק 60 הרץ בינונית
AR/עיבוד אותות 100 הרץ גבוהה

אל תשמור על חיישנים פעילים שלא לצורך: קרא ל-userAcceleration ב-attitude או בעת מעבר לרקע (אם נתוני רקע אינם נדרשים).

מה כלול בשילוב Core Motion

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

לוחות זמנים

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

הערך את הפרויקט שלך—צור קשר לייעוץ בנוגע למקרה השימוש שלך ב-Core Motion. הזמן שילוב, והאפליקציה שלך תקבל נתוני חיישן מדויקים.

תיעוד Apple: Core Motion