Атрибуция нативных уведомлений для веб-приложений на macOS

Марийн Круиссельбринк
Marijn Kruisselbrink
Дэн Мерфи
Dan Murphy

Опубликовано: 16 июля 2026 г.

Начиная с Chrome 152, уведомления для прогрессивных веб-приложений (PWA), установленных на macOS, будут автоматически привязываться к самому PWA, а не к Google Chrome.

Это значительно улучшает пользовательский опыт, делая веб-приложения более интегрированными в macOS. Однако это также вносит важные изменения в обработку разрешений на уведомления и в поведение некоторых API уведомлений.

Что меняется?

Ранее все уведомления, отправляемые PWA, приписывались Chrome на уровне операционной системы. В Центре уведомлений macOS они отображались в разделе «Google Chrome» и использовали значок Chrome. Чтобы отключить уведомления, пользователям нужно было использовать элементы управления внутри Chrome, а не системные настройки macOS.

При использовании функции атрибуции уведомлений , если сайт установлен как PWA, macOS рассматривает его как отдельное приложение для уведомлений. Это относится как к недавно установленным PWA, так и к PWA, которые пользователь установил ранее.

Преимущества:

  • Фирменный стиль : В уведомлениях в Центре уведомлений macOS и на баннерах отображается собственное название и значок PWA.
  • Привычные элементы управления : элементы управления уведомлениями для этих приложений теперь отображаются именно там, где пользователи ожидают: в системных настройках macOS (а не в Chrome).
  • Детальный контроль : пользователи могут управлять индивидуальными настройками уведомлений PWA-приложений (например, стилем оповещений, поведением на экране блокировки).
  • Режимы фокусировки : PWA можно разрешить или отключить по отдельности в профилях фокусировки macOS (режим «Не беспокоить»).
Приписывается компании Google Chrome, о чем свидетельствует значок Chrome.
Ранее: Приписывалось «Google Chrome» с иконкой Chrome.
Приписывается «Названию PWA» с пользовательской иконкой PWA.
После: Приписано "Название PWA" с пользовательской иконкой PWA.

Новый порядок предоставления разрешений

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

Новые пользователи (первый запрос на предоставление прав)

Если пользователь устанавливает PWA, и сайт запрашивает разрешение на отправку уведомлений после установки:

  1. Chrome пропустит запрос на предоставление разрешений на уровне браузера (выпадающее меню в адресной строке).
  2. Chrome немедленно вызовет запрос на предоставление системных разрешений macOS для PWA.
Диалоговое окно системных разрешений macOS: PWA Name хочет отправлять вам уведомления. Уведомления могут включать оповещения, звуковые сигналы и значки с кнопками «Не разрешать» и «Разрешить».
Диалоговое окно разрешения доступа к установленному PWA в системе macOS.
Блок-схема, демонстрирующая процесс получения разрешений для PWA. Начинается с «PWA запрашивает разрешение», после чего принимается решение «Установлено?». Если «Да», то пропускается запрос Chrome и отображается системное сообщение macOS. Если «Нет», то отображается сообщение браузера Chrome, пользователь устанавливает PWA, после чего отображается системное сообщение macOS.
Блок-схема процесса предоставления разрешений на уведомления в PWA.

Существующие пользователи (путь миграции)

Если пользователь уже предоставил вашему сайту разрешение на отправку уведомлений в Chrome, а затем установил (или уже установил) PWA, ему все равно необходимо предоставить PWA разрешение на уровне операционной системы.

Чтобы этот переход прошёл максимально плавно:

  1. При первой попытке PWA отправить уведомление macOS отобразит запрос на предоставление системных разрешений.
  2. Если пользователь даст согласие, уведомления будут продолжать работать без сбоев.
  3. Если пользователь проигнорирует или отклонит это сообщение, PWA отобразит внутри приложения индикатор (обычно в заголовке приложения или меню), который направит его в системные настройки macOS для ручного включения разрешений.
Запрос на установленное PWA, информирующий пользователя о том, что уведомления отключены в системных настройках Mac, с кнопкой для перехода туда.
Встроенное в PWA подсказка, направляющая пользователя к системным настройкам macOS.
Настройки приложения с возможностью включения или выключения уведомлений, а также указатель на системные настройки для включения уведомлений.
Настройки приложения в Chrome с индикатором для открытия системных настроек macOS.
Встроенное в браузер приложение, информирующее пользователя о том, что уведомления отключены в системных настройках Mac, с кнопкой для перехода туда.
В браузере появляется подсказка, направляющая пользователя к системным настройкам macOS.

Влияние на разработчиков: устаревание requireInteraction в macOS

В macOS параметр «Оставаться на экране до тех пор, пока пользователь его не закроет» ( «Постоянное» ) или «Исчезать автоматически» ( «Временное» ) настраивается пользователем для каждого приложения в системных настройках macOS.

Из-за особенностей архитектуры ОС Chrome больше не будет учитывать параметр requireInteraction в API уведомлений на macOS, если включена функция атрибуции.

Что это значит для вашего кода:

Если ваше приложение использует requireInteraction: true для отображения важных уведомлений на экране, на macOS это больше не будет гарантировано. Вместо этого следует:

  • При разработке приложения учитывайте, что уведомления могут быть временными ( кратковременными ).
  • Рекомендуем пользователям, которым необходимы постоянные уведомления, настроить стиль оповещений PWA как «Постоянные» в System Settings > Notifications > [Your PWA] .
В системных настройках macOS выделен параметр «Стиль оповещений», отображающий «Временные» и «Постоянные».
Системные настройки macOS для PWA, отображающие стиль оповещений (временные или постоянные).

Влияние на разработчиков: API для создания значков приложений требует разрешения на отправку уведомлений.

API App Badging позволяет веб-приложениям устанавливать значок на иконке приложения (например, отображать количество непрочитанных сообщений). В macOS отображение значка на иконке приложения технически связано с настройками уведомлений приложения. Поскольку PWA теперь имеет собственную собственную систему идентификации уведомлений:

  • Требуемые разрешения : Для отображения значка уведомлений на значке в Dock PWA должен иметь включенное разрешение на уровне операционной системы. Это соответствует стандартам платформы macOS и тому, как Safari уже обрабатывает API значков для веб-приложений.
  • Сбой без уведомления : Если пользователь отключит значок приложения «Уведомления» в System Settings > Notifications > [Your PWA] или полностью запретит уведомления, вызовы navigator.setAppBadge() все равно будут успешно выполняться в JavaScript (без возникновения ошибки), но значок не будет отображаться в Dock. Если ваше приложение использует значки, обязательно запросите разрешение на уведомления, чтобы гарантировать их отображение.

Влияние управления предприятием

Для корпоративных администраторов, управляющих устройствами macOS и желающих предварительно предоставить разрешения на отправку уведомлений:

  1. Политика Chrome : Вам по-прежнему необходимо настроить политику Chrome ( NotificationsAllowedForUrls ), чтобы предоставить разрешение источнику PWA.
  2. Политика macOS : Кроме того, теперь необходимо развернуть профиль конфигурации macOS (MDM), чтобы предварительно предоставить разрешения на уведомления идентификатору пакета PWA (App Shim).

Без применения обеих политик пользователям по-прежнему будут предлагаться варианты на уровне операционной системы.

Рекомендации для разработчиков

  1. Проверка статуса разрешений : Всегда проверяйте Notification.permission перед отправкой уведомления.
  2. Контекстные подсказки : Если вы обнаружите, что разрешение предоставлено на уровне веб-интерфейса, но уведомления не отображаются (что может произойти, если разрешение на уровне ОС отозвано), направьте пользователя в системные настройки macOS.
  3. Будьте готовы к временным уведомлениям : не полагайтесь на requireInteraction для критически важных пользовательских сценариев в macOS.