Core Haptics: кастомні вібрації для iOS-додатків

Тактильний зворотний зв'язок на Core Haptics для iOS Розробники часто стикаються з тим, що стандартні тактильні відгуки `UIImpactFeedbackGenerator` не передають потрібних відчуттів. В iOS-грі потрібно імітувати пульс персонажа, а в музичному додатку — тактильно відстежувати ритм. Core Haptics вир

Розробка та підтримка будь-яких видів мобільних додатків:

Інформаційні та розважальні мобільні програми
Новинки, ігри, довідники, онлайн-каталоги, погодні, фітнес та здоров'я, туристичні, освітні, соціальні мережі та месенджери, квіз, блоги та подкасти, форуми, агрегатори
Мобільні програми електронної комерції
Інтернет-магазини, B2B-додатки, маркетплейси, онлайн-обмінники, кешбек-сервіси, біржі, дропшиппінг-платформи, програми лояльності, доставка їжі та товарів, платіжні системи
Мобільні програми для управління бізнес-процесами
CRM-системи, ERP-системи, управління проектами, інструменти для команди продажів, облік фінансів, управління виробництвом, логістика та доставка, управління персоналом, системи моніторингу даних
Мобільні програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, платформи надання електронних послуг, платформи кешбеку, відеохостинги, тематичні портали, платформи онлайн-бронювання та запису, платформи онлайн-торгівлі

Це лише деякі з типів мобільних додатків, з якими ми працюємо, і кожен із них може мати свої специфічні особливості та функціональність, а також бути адаптованим під конкретні потреби та цілі клієнта.

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1734 послуг
Core Haptics: кастомні вібрації для iOS-додатків
Середній
~2-3 дні

Наші компетенції:

Часті запитання

Останні роботи

  • image_mobile-applications_feedme_467_0.webp
    Розробка мобільного додатка для компанії FEEDME
    895
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    782
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1216
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    1079
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    1002
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    597

Тактильний зворотний зв'язок на Core Haptics для iOS

Розробники часто стикаються з тим, що стандартні тактильні відгуки UIImpactFeedbackGenerator не передають потрібних відчуттів. В iOS-грі потрібно імітувати пульс персонажа, а в музичному додатку — тактильно відстежувати ритм. Core Haptics вирішує ці завдання, дозволяючи створювати патерни з точністю до мілісекунди і керувати інтенсивністю в реальному часі. За 5+ років роботи ми впровадили Core Haptics у більш ніж 30 проектах, скоротивши час відгуку системи до 50 мс. На відміну від UIImpactFeedbackGenerator, який пропонує лише три визначених сценарії, Core Haptics дає повний контроль над кожним параметром вібрації — від інтенсивності до часової шкали. Згідно з документацією Apple, технологія доступна починаючи з iPhone 8. Наш досвід гарантує, що інтеграція пройде без несподіванок.

Як створювати та налаштовувати тактильні патерни з Core Haptics?

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)") } } } 

playsHapticsOnly = true — якщо не потрібен синхронізований аудіо-тон. Без цього прапора двигун також керує аудіо через CoreAudio, що вимагає налаштування аудіо-сесії.

Створення патернів

Складний патерн — це масив CHHapticEvent з часовими мітками:

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) } 

hapticSharpness — суб'єктивна «гострота» вібрації: 1.0 це чіткий клікоподібний імпульс, 0.0 — м'яке глибоке гудіння. Комбінування цих двох параметрів у часі і дає «характер» відчуття.

Динамічна зміна параметрів

CHHapticDynamicParameter дозволяє змінювати патерн у реальному часі — наприклад, посилювати вібрацію з натисканням на повзунок:

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

Це ключова фіча для ігор та інтерактивних інтерфейсів: зворотний зв'язок змінюється в такт дії користувача.

AHAP-файли

Apple Haptic and Audio Pattern (.ahap) — 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 } ] } } ] } 

Завантаження з файлу: engine?.playPattern(from: url).

Чому Core Haptics краще UIImpactFeedbackGenerator?

Стандартні генератори дають лише три типи відгуку: легкий, середній, важкий. Core Haptics же дозволяє імітувати такі деталі, як пульс, текстуру поверхні, наростаючу вібрацію. В одному з наших проєктів для ігрового додатку ми реалізували тактильний супровід кожного пострілу — з різною інтенсивністю залежно від відстані до цілі. Це підвищило залученість користувачів на 30% (дані A/B тесту).

Характеристика Core Haptics UIImpactFeedbackGenerator
Типи патернів Довільні, з точністю до 0.001 с Тільки 3 зумовлених
Параметри Intensity, Sharpness, Time Тільки інтенсивність (і то не напряму)
Динамічні зміни Так, через CHHapticDynamicParameter Ні
Комбінація з аудіо Так Ні
Підтримка AHAP Так (редагування дизайнерами) Ні

Типові помилки при інтеграції Core Haptics

  • Двигун зупиняється при переході в backgroundstoppedHandler викликається з .applicationSuspended. При поверненні в foreground потрібно перестворити або перезапустити двигун. Обов'язково встановіть resetHandler до запуску.
  • Симулятор не підтримує Core Haptics — тестувати тільки на реальному пристрої iPhone 8+. Ми тестуємо на всіх підтримуваних пристроях — не менше 5 моделей.
  • Затримка при першому запуску — ініціалізація займає ~50–100 мс. Викликайте prepareEngine() заздалегідь.

Що входить в роботу з інтеграції та терміни

Обсяг робіт

  • Вихідний код з налаштуванням двигуна, обробкою переривань та динамічними параметрами.
  • AHAP-файли для патернів (від 2 до 5 типів) з можливістю редагування дизайнером.
  • Документація з інтеграції у ваш проєкт та тестування на реальних пристроях.
  • Консультації з оптимізації тактильного зворотного зв'язку для конкретних сценаріїв.
  • Підтримка при публікації в App Store, включаючи перевірку відповідності App Store Review Guidelines.

Вартість розраховується індивідуально в залежності від складності патернів та обсягу інтеграції. Інвестиції в якісний тактильний зворотний зв'язок окупаються за рахунок підвищення залученості користувачів.

Орієнтири за термінами

Базові патерни (2–3 типи) з правильною ініціалізацією двигуна та обробкою переривань — від 1 дня. Динамічні патерни з реальним часом зміни параметрів, AHAP-файли, інтеграція з ігровими подіями — від 2 до 3 днів. Точні терміни розраховуємо після аналізу вашого проєкту.

Замовте впровадження Core Haptics — ми проконсультуємо за термінами та вартістю. Отримайте консультацію з інтеграції Core Haptics у ваш проєкт.