В библиотеке MAX Bridge пятнадцать подсистем, и одна из них отвечает не за данные, а за ощущения: объект HapticFeedback заставляет телефон вздрогнуть в ответ на нажатие или уведомление. Три метода, пять стилей вибрации — и полное молчание на десктопе и в браузере.

3метода у объекта HapticFeedback — ни один не работает вне телефона
5стилей вибрации у метода impactOccurred, от soft до rigid
3типа уведомления у notificationOccurred — и один спутанный пример кода
0условий, при которых selectionChanged советуют звать на подтверждении выбора

HapticFeedback: почему его нет на десктопе

Документация MAX Bridge вводит объект одной фразой:

Чтобы активировать и настроить тактильную обратную связь при взаимодействии пользователя с веб-приложением, используйте объект HapticFeedback.

Раздел «Тактильные отклики», dev.max.ru

Сразу под ней — предупреждение вынесено в отдельную врезку, а не растворено в тексте:

Методы этого объекта не поддерживаются десктоп- и веб-клиентом.

Раздел «Тактильные отклики», dev.max.ru

Что именно произойдёт при вызове любого из трёх методов на десктопе или в веб-версии — страница не уточняет: не сказано, вернёт ли вызов ошибку или просто ничего не случится. Единственный факт, зафиксированный документацией, — поддержки там нет. Для мини-приложения, открытого не на телефоне, тактильный отклик как канал связи с пользователем просто отсутствует.

Хотите зарабатывать на своём канале в MAX?
Пошаговый курс «Как выйти на доход с канала в мессенджере MAX»: с нуля до системного заработка — ниши, продвижение, монетизация, реальные цифры. А если канал уже есть — бесплатно добавьте его в каталог MaxOfficial.

Три метода — три сигнала

У объекта HapticFeedback ровно три метода, и у каждого своё назначение: impactOccurred — отклик на нажатие интерактивного элемента, notificationOccurred — отклик на результат действия, selectionChanged — отклик на смену выбора без результата как такового. Про первый документация пишет так:

С помощью этого метода приложение MAX может воспроизвести соответствующие тактильные эффекты на основе переданного значения стиля.

window.WebApp.HapticFeedback.impactOccurred(), dev.max.ru

Формулировка про второй метод устроена иначе — сначала описан не сам вызов, а смысл параметра, который в него передают:

Возвращает статус событий или действий: выполнены успешно, не удалось выполнить или выдано предупреждение.

window.WebApp.HapticFeedback.notificationOccurred(), dev.max.ru

Слово «возвращает» тут не про Promise и не про значение, которое метод отдаёт вызвавшему коду — ни у одного из трёх методов раздел не показывает пример возвращаемого значения, только форму передаваемых параметров. Возвращает статус в этом предложении сам факт вибрации: телефон отвечает пользователю on-device, а не приложению.

Пять стилей одного нажатия

У impactOccurred самый широкий выбор из трёх методов — стиль вибрации задаётся одним из пяти значений:

  • soft — мягкая вибрация
  • light — лёгкая вибрация
  • medium — средняя вибрация
  • heavy — сильная вибрация
  • rigid — жёсткая вибрация

В типах TypeScript это перечисление выглядит так:

impactStyle: 'light' | 'medium' | 'heavy' | 'rigid' | 'soft'

Пример кода, window.WebApp.HapticFeedback.impactOccurred(), dev.max.ru

У notificationOccurred выбор втрое уже — только error, success и warning. У selectionChanged выбора нет вовсе: метод принимает единственный необязательный параметр и не различает, что именно изменилось в выборе пользователя.

В примере кода — чужое имя параметра

Сигнатура второго метода называет параметр notificationType — так написано в заголовке раздела и в тексте описания. Но в блоке «Типы данных и пример» под тем же методом строка выглядит иначе:

impactStyle: 'error' | 'success' | 'warning'

Пример кода, window.WebApp.HapticFeedback.notificationOccurred(), dev.max.ru

Имя параметра в примере — impactStyle, то есть буквально то же имя, что и в примере кода соседнего метода impactOccurred, только со значениями error / success / warning вместо стилей вибрации. По всему разделу словосочетание notificationType встречается один раз — в заголовке метода, и ни разу больше в его собственном примере кода. Похоже на копию блока от impactOccurred, в которой заменили набор значений, но не имя переменной.

Когда вибрацию просят не использовать

У третьего метода, selectionChanged, в документации есть отдельная оговорка о том, когда его вызывать не следует:

Не используйте эту обратную связь, когда пользователь делает или подтверждает выбор. Используйте её только при изменении выбора.

window.WebApp.HapticFeedback.selectionChanged(), dev.max.ru

Разница на первый взгляд едва заметна: и пролистывание списка вариантов, и финальный тап по одному из них — это действия с одним и тем же переключателем. Но документация разводит их по разным откликам: смена варианта во время выбора — это selectionChanged, а подтверждение или отмена самого выбора — задача уже impactOccurred или notificationOccurred, а не этого метода.

Один запасной вариант на все три метода

У каждого из трёх методов есть общий необязательный параметр — disableVibrationFallback. Формулировка повторяется у всех троих дословно:

Разрешение использовать вибрацию с постоянной амплитудой на устройствах, которые не поддерживают вибрацию с переменной амплитудой. Значение по умолчанию: false.

dev.max.ru
Смысл параметра — не про отключение вибрации, а про то, чем её заменить. Если телефон не умеет менять силу вибромотора на лету, по умолчанию (false) MAX всё равно попробует передать оттенок стиля — soft, light, medium и так далее — через доступные аппарату средства. Параметр со значением true, наоборот, запрещает такую замену вибрацией постоянной силы.

Частые вопросы

Работают ли тактильные отклики MAX в мини-приложении на компьютере?

Нет. Документация прямо пишет, что методы объекта HapticFeedback не поддерживаются десктоп- и веб-клиентом, и не уточняет, что происходит при попытке их вызвать вне телефона.

Сколько стилей вибрации доступно в MAX Bridge?

У метода impactOccurred — пять: soft, light, medium, heavy, rigid. У notificationOccurred — три: error, success, warning. У selectionChanged своего перечисления стилей нет.

Есть ли неточность в примерах кода для тактильных откликов?

Похоже на да: в примере кода для notificationOccurred параметр назван impactStyle вместо notificationType, хотя в заголовке и описании того же метода используется правильное имя.

Когда не стоит вызывать selectionChanged?

Документация советует не использовать этот отклик, когда пользователь делает или подтверждает выбор — только когда сам выбор меняется, до подтверждения.

Развиваете канал или бота в MAX?

Добавьте его в каталог MaxOfficial — читатели находят каналы через поиск и подборки, а статистика копится автоматически.

Добавить канал в каталог
HapticFeedback MAX Bridgeтактильные отклики MAXвибрация мини-приложение MAXimpactOccurred MAX
Разбор основан на видимом тексте раздела «Тактильные отклики» библиотеки MAX Bridge документации dev.max.ru; все замеры — по состоянию на 12 августа 2026 года. Читайте также разбор соседней подсистемы: NFC-модуль MAX Bridge — эмулировать метку, не прочитать.