Core Haptics: רטט מותאם אישית לאפליקציות iOS

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

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

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

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

השירותים שאנו מציעים
מציג 1 מתוך 1כל 1734 השירותים
Core Haptics: רטט מותאם אישית לאפליקציות iOS
בינוני
~2-3 ימים

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

שאלות נפוצות

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

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

מפתחים מגלים לא פעם שמשוב UIImpactFeedbackGenerator סטנדרטי לא מספק את התחושה הנדרשת. במשחק iOS, ייתכן שתצטרכו לדמות פעימות לב של דמות; באפליקציית מוזיקה, תרצו לעקוב אחר הקצב בצורה הפטית. Core Haptics פותר זאת על ידי יצירת תבניות ברמת דיוק של מילישניות עם שליטה בעוצמה בזמן אמת, ומספק תחושות מישוש עשירות. עם Swift Core Haptics, תוכלו ליצור חוויות רטט ייחודיות. במשך יותר מ-5 שנים, שילבנו את Core Haptics ביותר מ-30 פרויקטים, והפחתנו את זמן התגובה של המערכת ל-50ms — פי 3 מהר יותר מגנרטורים סטנדרטיים. בניגוד ל-UIImpactFeedbackGenerator עם שלושה תרחישים מוגדרים מראש בלבד, Core Haptics נותן שליטה מלאה על כל פרמטר רטט — עוצמה, חדות, ציר זמן. לפי תיעוד Apple, הטכנולוגיה זמינה מ-iPhone 8. רקורד מוכח שלנו מבטיח אינטגרציה חלקה, חוסך עד 40% בהשוואה לפיתוח פנימי.

כיצד ליצור ולהגדיר תבניות הפטיות עם Core Haptics

שלב 1: הגדרת CHHapticEngine

המנוע עובד עם שני סוגי אירועים: CHHapticEvent.EventType.hapticTransient (קליק קצר, כמו לחיצת כפתור) ו-CHHapticEvent.EventType.hapticContinuous (רטט מתמשך). כל אירוע מצרף פרמטרים: עוצמה (hapticIntensity) וחדות (hapticSharpness).

import CoreHaptics

class HapticsManager {
    private var engine: CHHapticEngine?

    func prepareEngine() {
        guard CHHapticEngine.capabilitiesForHardware().supportsHaptics else { return }
        do {
            engine = try CHHapticEngine()
            engine?.playsHapticsOnly = true
            try engine?.start()
        } catch {
            print("CoreHaptics engine error: \(error)")
        }
        // Восстановление после прерывания (звонок, другое приложение)
        engine?.resetHandler = { [weak self] in
            try? self?.engine?.start()
        }
        engine?.stoppedHandler = { reason in
            print("Haptic engine stopped: \(reason)")
        }
    }
}

import CoreHaptics class HapticsManager { private var engine: CHHapticEngine? func prepareEngine() { guard CHHapticEngine.capabilitiesForHardware().supportsHaptics else { return } do { engine = try CHHapticEngine() engine?.playsHapticsOnly = true try engine?.start() } catch { print("CoreHaptics engine error: \(error)") } // Восстановление после прерывания (звонок, другое приложение) engine?.resetHandler = { [weak self] in try? self?.engine?.start() } engine?.stoppedHandler = { reason in print("Haptic engine stopped: \(reason)") } } } אם אינכם צריכים צליל אודיו מסונכרן. ללא דגל זה, המנוע מנהל גם אודיו דרך CoreAudio, מה שמחייב הגדרת סשן אודיו.

שלב 2: יצירת תבניות

תבנית מורכבת היא מערך של playsHapticsOnly = true עם חותמות זמן:

func playSuccessPattern() throws {
    guard let engine = engine else { return }
    let events: [CHHapticEvent] = [
        // Быстрый клик
        CHHapticEvent(
            eventType: .hapticTransient,
            parameters: [
                CHHapticEventParameter(parameterID: .hapticIntensity, value: 0.5),
                CHHapticEventParameter(parameterID: .hapticSharpness, value: 0.8)
            ],
            relativeTime: 0
        ),
        // Нарастающая вибрация
        CHHapticEvent(
            eventType: .hapticContinuous,
            parameters: [
                CHHapticEventParameter(parameterID: .hapticIntensity, value: 1.0),
                CHHapticEventParameter(parameterID: .hapticSharpness, value: 0.3)
            ],
            relativeTime: 0.1,
            duration: 0.4
        ),
        // Финальный клик
        CHHapticEvent(
            eventType: .hapticTransient,
            parameters: [
                CHHapticEventParameter(parameterID: .hapticIntensity, value: 0.8),
                CHHapticEventParameter(parameterID: .hapticSharpness, value: 1.0)
            ],
            relativeTime: 0.55
        )
    ]
    let pattern = try CHHapticPattern(events: events, parameters: [])
    let player = try engine.makePlayer(with: pattern)
    try player.start(atTime: CHHapticTimeImmediate)
}

CHHapticEvent הוא ה"חדות" הסובייקטיבית של הרטט: 1.0 הוא דחף חד דמוי קליק, 0.0 הוא רעם עמום ורך. שילוב שני פרמטרים אלה לאורך זמן נותן את ה"אופי" של התחושה.

שלב 3: שימוש בשינויי פרמטרים דינמיים

func playSuccessPattern() throws { guard let engine = engine else { return } let events: [CHHapticEvent] = [ // Быстрый клик CHHapticEvent( eventType: .hapticTransient, parameters: [ CHHapticEventParameter(parameterID: .hapticIntensity, value: 0.5), CHHapticEventParameter(parameterID: .hapticSharpness, value: 0.8) ], relativeTime: 0 ), // Нарастающая вибрация CHHapticEvent( eventType: .hapticContinuous, parameters: [ CHHapticEventParameter(parameterID: .hapticIntensity, value: 1.0), CHHapticEventParameter(parameterID: .hapticSharpness, value: 0.3) ], relativeTime: 0.1, duration: 0.4 ), // Финальный клик CHHapticEvent( eventType: .hapticTransient, parameters: [ CHHapticEventParameter(parameterID: .hapticIntensity, value: 0.8), CHHapticEventParameter(parameterID: .hapticSharpness, value: 1.0) ], relativeTime: 0.55 ) ] let pattern = try CHHapticPattern(events: events, parameters: []) let player = try engine.makePlayer(with: pattern) try player.start(atTime: CHHapticTimeImmediate) } מאפשר לכם לשנות את התבנית בזמן אמת — למשל, הגברת רטט כשמכוונים סליידר:

func updateIntensity(_ value: Float) {
    let dynamicParam = CHHapticDynamicParameter(
        parameterID: .hapticIntensityControl,
        value: value,
        relativeTime: 0
    )
    try? continuousPlayer?.sendParameters([dynamicParam], atTime: 0)
}

זהו מפתח למשחקים וממשקים אינטראקטיביים: המשוב משתנה בסנכרון עם פעולת המשתמש.

שלב 4: ייצוא קבצי AHAP

Apple Haptic and Audio Pattern (hapticSharpness) הוא פורמט JSON לתיאור תבניות. מעצבים יכולים לערוך את הקובץ ללא שינויי קוד. Xcode כולל Core Haptics Composer ליצירת תבניות ויזואלית.

{
  "Version": 1.0,
  "Pattern": [
    {
      "Event": {
        "Time": 0.0,
        "Type": "HapticTransient",
        "Parameters": [
          {
            "ParameterID": "HapticIntensity",
            "ParameterValue": 1.0
          },
          {
            "ParameterID": "HapticSharpness",
            "ParameterValue": 0.5
          }
        ]
      }
    }
  ]
}

טעינה מקובץ: CHHapticDynamicParameter.

מדוע Core Haptics עולה על UIImpactFeedbackGenerator

גנרטורים סטנדרטיים מספקים רק שלושה סוגי משוב: קל, בינוני, כבד. Core Haptics יכול לדמות פרטים כמו פעימות לב, מרקם משטח, או רטט מתגבר. באחד הפרויקטים שלנו לאפליקציית משחק, יישמנו משוב הפטי לכל יריית נשק בעוצמה משתנה לפי מרחק למטרה. זה הגדיל את מעורבות המשתמשים ב-30% (מבחן A/B) — שיפור פי 3 בהשוואה להפטיקה סטנדרטית.

תכונה Core Haptics UIImpactFeedbackGenerator
סוגי תבניות שרירותיים, דיוק של 0.001 שניות רק 3 מוגדרים מראש
פרמטרים עוצמה, חדות, זמן רק עוצמה (בעקיפין)
שינויים דינמיים כן, דרך CHHapticDynamicParameter לא
שילוב אודיו כן לא
תמיכה ב-AHAP כן (ניתן לעריכה על ידי מעצבים) לא

מלכודות אינטגרציה נפוצות

  • המנוע נעצר כשהאפליקציה עוברת לרקע — func updateIntensity(_ value: Float) { let dynamicParam = CHHapticDynamicParameter( parameterID: .hapticIntensityControl, value: value, relativeTime: 0 ) try? continuousPlayer?.sendParameters([dynamicParam], atTime: 0) } מופעל עם .ahap. בחזרה לחזית, צרו מחדש או הפעילו מחדש את המנוע. תמיד הגדירו { "Version": 1.0, "Pattern": [ { "Event": { "Time": 0.0, "Type": "HapticTransient", "Parameters": [ { "ParameterID": "HapticIntensity", "ParameterValue": 1.0 }, { "ParameterID": "HapticSharpness", "ParameterValue": 0.5 } ] } } ] } לפני ההתחלה.
  • הסימולטור לא תומך ב-Core Haptics — בדקו רק על מכשירים אמיתיים iPhone 8 ומעלה. אנו בודקים על 5+ דגמי מכשירים נתמכים.
  • אחזור בהפעלה ראשונה — האתחול לוקח כ-50–100ms. קראו ל-engine?.playPattern(from: url) מוקדם.

תוצרים ולוחות זמנים

מה כלול (מובטח)

  • קוד מקור עם הגדרת מנוע, טיפול בהפרעות ופרמטרים דינמיים.
  • קבצי AHAP לתבניות (2–5 סוגים) הניתנים לעריכה על ידי מעצבים.
  • תיעוד לשילוב בפרויקט שלכם ובדיקה על מכשירים אמיתיים.
  • ייעוץ לאופטימיזציה של משוב הפטי לתרחישים ספציפיים.
  • תמיכה במהלך פרסום ב-App Store, כולל עמידה בהנחיות סקירת App Store.
  • הדרכה לצוות שלכם (עד שעתיים).
  • אחריות ל-90 יום על איכות הקוד.

אינטגרציה בסיסית מתחילה ב-$500, חוסכת עד 40% בהשוואה לפיתוח פנימי. השקעה במשוב הפטי איכותי משתלמת דרך מעורבות משתמשים מוגברת (הלקוחות שלנו רואים שיפור של 30%+).

לוחות זמנים

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

צרו קשר כדי לדון בשילוב Core Haptics לפרויקט שלכם. נייעץ לגבי לוחות זמנים ועלויות.