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

Стандартные тактильные отклики iOS не всегда передают нужные ощущения, особенно когда требуется точная имитация пульса или ритма. Мы разрабатываем кастомные вибрации на Core Haptics, создавая паттерны с точностью до миллисекунды и полным контролем интенсивности. Наша команда реализует проект под ключ — от концепции до внедрения и последующей поддержки, обеспечивая надёжную работу решения.

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

Информационные и развлекательные мобильные приложения
Новостные приложения, игры, справочники, онлайн-каталоги, погодные, фитнес и здоровье, туристические, образовательные, социальные сети и мессенджеры, квиз, блоги и подкасты, форумы, агрегаторы
Мобильные приложения электронной коммерции
Интернет-магазины, B2B-приложения, маркетплейсы, онлайн-обменники, кэшбэк-сервисы, биржи, дропшиппинг-платформы, программы лояльности, доставка еды и товаров, платежные системы
Мобильные приложения для управления бизнес-процессами
CRM-системы, ERP-системы, управление проектами, инструменты для команды продаж, учет финансов, управление производством, логистика и доставка, управление персоналом, системы мониторинга данных
Мобильные приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, платформы предоставления электронных услуг, платформы кешбека, видеохостинги, тематические порталы, платформы онлайн-бронирования и записи, платформы онлайн-торговли

Это лишь некоторые из типы мобильных приложений, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента.

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

Тактильная обратная связь на 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

  • Движок останавливается при переходе в background — stoppedHandler вызывается с .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 в ваш проект.

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

Последние работы

  • Разработка мобильного приложения для компании FEEDME
    Разработка мобильного приложения для компании FEEDME
    1010
  • Разработка мобильного приложения для компании XOOMER
    Разработка мобильного приложения для компании XOOMER
    903
  • Разработка мобильного приложения для компании RHL
    Разработка мобильного приложения для компании RHL
    1332
  • Разработка мобильного приложения для компании ZIPPY
    Разработка мобильного приложения для компании ZIPPY
    1180
  • Разработка мобильного приложения для компании Affhome
    Разработка мобильного приложения для компании Affhome
    1107
  • Разработка мобильного приложения для компании FLAVORS
    Разработка мобильного приложения для компании FLAVORS
    714