Core Haptics: кастомные вибрации для iOS-приложений

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

Разработка и поддержка любых видов мобильных приложений:

Информационные и развлекательные мобильные приложения
Новостные приложения, игры, справочники, онлайн-каталоги, погодные, фитнес и здоровье, туристические, образовательные, социальные сети и мессенджеры, квиз, блоги и подкасты, форумы, агрегаторы
Мобильные приложения электронной коммерции
Интернет-магазины, 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 в ваш проект.