В библиотеке MAX Bridge пятнадцать подсистем, и одна из них отвечает не за данные, а за ощущения: объект HapticFeedback заставляет телефон вздрогнуть в ответ на нажатие или уведомление. Три метода, пять стилей вибрации — и полное молчание на десктопе и в браузере.
HapticFeedback: почему его нет на десктопе
Документация MAX Bridge вводит объект одной фразой:
Чтобы активировать и настроить тактильную обратную связь при взаимодействии пользователя с веб-приложением, используйте объект HapticFeedback.
Раздел «Тактильные отклики», dev.max.ruСразу под ней — предупреждение вынесено в отдельную врезку, а не растворено в тексте:
Методы этого объекта не поддерживаются десктоп- и веб-клиентом.
Раздел «Тактильные отклики», dev.max.ruЧто именно произойдёт при вызове любого из трёх методов на десктопе или в веб-версии — страница не уточняет: не сказано, вернёт ли вызов ошибку или просто ничего не случится. Единственный факт, зафиксированный документацией, — поддержки там нет. Для мини-приложения, открытого не на телефоне, тактильный отклик как канал связи с пользователем просто отсутствует.
Три метода — три сигнала
У объекта 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.rufalse) 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 — читатели находят каналы через поиск и подборки, а статистика копится автоматически.
Добавить канал в каталог







