Как сделать оповещения в браузере с сайта

Добавил пользователь Алексей Ф.
Обновлено: 05.10.2024

В попытке найти годную статью по настройке уведомлений в браузере, я получал только статьи где в основном описывалось использование совместно с Firebase, но мне такой вариант не особенно то и подходил.

В данной статье не будут "размусолены" принципы работы и тонкости Push уведомлений, только код, только хардкор.

Да будет код

Авторизация (VAPID)

Для начала стоит установить библиотеку WebPush в ваш php проект:

Далее для авторизации вашего сервера браузером (VAPID), вам нужно сгенерировать публичный и приватный ssh ключи. Данные ключи понадобятся как на сервере, так и на клиенте (за исключением того что на клиенте нужен лишь публичный).

Чтобы сгенерировать несжатый публичный и приватный ключ, закодированный в Base64, введите следующее в свой Linux bash:

Так же автор библиотеки предоставляет генерацию vapid ключей с помощью встроенного метода:

Этап 1 (JS)

В начале стоит проверить наличие поддержки ServiceWorker, PushManager, а так же showNotification в браузере:

Создаем файл sw.js и далее регистрируем его:

Так же нам понадобится функция для проверки состояния подписки:

С сервера нам нужно получить публичный ssh ключ сгенерированный выше:

Далее на ваше усмотрение, вешаем вызов окна на разрешение получение уведомлений. В моем примере человек через 10 секунд получает предложение подписаться.

Далее если процесс получения разрешения подписки прошел успешно вызываем функцию successSubscriptionHandler

Формируем данные пользователя для дальнейшей отправки уведомлений.

Так же нам нужно сформировать отправляемое уведомление

Вы можете манипулировать данными уведомления при помощи Post Message API

Этап 2 (PHP)

Далее в файле subscribeUserToPushNotifications на который мы сделали запрос с фронта при получении разрешения на подписку, мы формируем данные пользователя

На данном этапе мы можем записать данные пользователя в Базу данных (Ну или что у вас там), для последующей отправки уведомлений.

Непосредственно сама отправка происходит следующим образом

Достаем юзера с места его сохранения, и далее создаем объект подписчика:

Далее формируем VAPID для авторизации:

После того как сформировали нужные данные, создаем новый объект WebPush:

Важное замечание

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

$webPush->queueNotification

С 2015 года начала стремительно набирать популярность технология Push API от Chrome. Все чаще, заходя на различные новостные (и не только новостные) сайты, посетителям вылетает вот такой системный фрейм с запросом:


Я искренне считаю этот канал доставки контента (или привлечения пользователей, называйте как хотите) одним из самых перспективных. Возможно даже, через пару лет эти пуши будут таким же обязательным атрибутом каждого уважающего себя новостного сайта, коими сегодня являются RSS и паблики в социальных сетях.

Однако сегодня эта технология еще довольно молода и руководств по её использованию мало не только в отечественном интернете, но и в зарубежном. Для примера далеко ходить не надо — даже сам “Google”, когда анонсировал Push API, выпустил до слёз скудный пресс-релиз. И только сейчас, несколько часов покопавшись в гугловских FAQ для разработчиков, можно собрать информацию, чтобы собрать худо-бедно работающие скрипты для отправки Push-уведомлений своим читателям.

Как же сделать такие Push-уведомления для своего сайта? Тут есть два пути: использовать сторонние сервисы (они уже есть и некоторые из них очень даже неплохи) или создать собственное решение. Поскольку я сторонник минимального использования сторонних сервисов на сайте, то наш путь в Городе был предрешен.

Но, ради справедливости, стоит замолвить пару словечек и о внешних решениях. Признаюсь, я не очень изучал этот рынок (причина названа чуть выше), однако нельзя не упомянуть сервис OneSignal, самая привлекательная черта которого в том, что их услуги абсолютно бесплатны — зарабатывают они на продаже данных о посетителях клиентского сайта. Так же есть сервис Jeapie, на их стороне очень грамотный маркетинг и, как правило, хорошие отзывы. Однако стоит отметить, что в свое время от их услуг отказалась Медуза — Платформа была попросту не готова к тому количеству пушей, которые приходилось отправлять для огромной аудитории Медузы.

Реализация. Получение учетных данных от Google.

В исходных данных сайт, написанный на Rails 3.2.8 и задача сделать на нём пушер уведомлений для Chrome.

Далее идем в Google Сloud Platform, где регистрируем новый проект, назвав его, например, MySite-Push.


Через несколько секунд, когда проект будет создан, через раздел Подключение к API Google, по ссылке Включить и настроить API переходим в раздел, где целый список методов API для всех сервисов Google. Там мы должны включить метод Google Cloud Messaging из раздела Mobile API.


Скорее всего, при подключении к методу, Google попросит зарегистрировать дополнительные данные. Например, попросит уточнить откуда будет вызываться API, тогда мы указываем необходимый нам тип обработчика (например, Веб-сервер).

После чего указываем IP сервера (если спросит) и генерируем закрытый ключ, по которому будет происходить авторизация запросов. Этот ключ, разумеется, нам в будущем понадобится.


После нажатия кнопки Готово мы окажемся на странице, где нужно будет указать домен и подтвердить на него права через инструменты Search Console. Об этом тоже довольно много статей в интернете, да и сама процедура интуитивно понятна. Так что не будем здесь останавливаться.

Далее возвращаемся на главную страницу нашего проекта MySite-Push и запоминаем индикатор нашего проекта. Он нам тоже пригодится.


По сути, нам больше от Coogle Cloud Platform ничего и не надо. Ключ и идентификатор.

Реализация. Первичная настройка сайта.

Теперь в корневую папку нашего сайта нам нужно добавить файл manifest.json, в котором будет указано следующее:

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

Ну и добавить в секцию мета-тег со ссылкой на манифест:

Теперь там же, в корневой папке, создаем файл push.js, куда вписываем вот такой код:

Теперь создадим Service Worker. Это будет файл sw.js в корневой папке:

Можно скрипт чуть передать, чтобы и иконка была динамичным параметром, но, как мне кажется, это будет абсолютно лишним, лучше уведомления брендировать, чем снабжать изображением, которое толком и не рассмотришь в небольшом пуше.

Ну и, наконец, создаем latest.json, из которого и будет браться информация для уведомлений. Думаю, не трудно догадаться, что лежать он будет в корневой папке. А вот и его содержимое:

Полагаю, объяснять что есть что в этом json’е нет смысла, всё и так понятно.

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

Браузерные push-уведомления давно уже не только упрощают жизнь тем, кому важно получать информацию оперативно. Они превратились в очередной способ заваливать пользователей рекламой. Рассказываем, как раз и навсегда забыть об этой головной боли и отключить уведомления в браузере.

Как отменить существующие подписки

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

Как убрать уведомления в Google Chrome

  • Нажмите на значок меню (три точки в правом верхнем углу браузера).
  • Выберите Настройки.
  • Прокрутите открывшуюся страницу вниз и нажмите Дополнительные.
  • Среди новых пунктов меню выберите Настройки сайта.
  • Откройте раздел Уведомления.
  • В разделе Разрешить нажмите на значок с тремя точками напротив адреса сайта, от которого вы не хотите получать уведомления.
  • Выберите Блокировать.

Как убрать уведомления в Firefox

  • Нажмите на значок меню (три горизонтальные полоски в правом верхнем углу браузера).
  • Выберите Настройки.
  • В меню слева нажмите Приватность и защита.
  • Прокрутите страницу вниз до раздела Разрешения.
  • Напротив пункта Уведомления нажмите кнопку Параметры….
  1. Чтобы отключить все уведомления сразу, нажмите кнопку Удалить все веб-сайты под списком ресурсов.
  2. Чтобы запретить определенному сайту присылать вам уведомления, нажмите на слово Разрешить напротив его адреса и в выпадающем списке выберите Блокировать.

Как убрать уведомления в Safari

  • В меню Safari выберите пункт Настройки.
  • Перейдите в раздел Веб-сайты.
  • Кликните Уведомления.
  1. Чтобы отключить все уведомления, нажмите Cmd+A (Ctrl+A, если у вас Windows) и удалите их одним кликом по кнопке внизу списка.
  2. Чтобы запретить определенному сайту присылать вам уведомления, выберите его в списке и нажмите Отказать.

Как убрать уведомления в Microsoft Edge

Как убрать уведомления в браузере Opera

  • Нажмите на значок настроек в правом верхнем углу экрана.
  • Прокрутите меню вниз и выберите Перейти к настройкам браузера.
  • В меню слева кликните Дополнительно.
  • Перейдите на вкладку Безопасность.
  • Выберите Настройки сайта.
  • Откройте раздел Уведомления.
  • В блоке Разрешить нажмите на значок с тремя точками рядом с адресом сайта, от которого вы не хотите получать уведомления.
  • Выберите Блокировать.

Как убрать уведомления в Яндекс.Браузере

  • Нажмите на значок меню (три горизонтальные полоски в правом верхнем углу браузера).
  • Выберите Настройки.
  • В меню слева кликните Сайты.
  • В разделе Уведомления нажмите От прочих сайтов.
  1. Если рядом с названием ресурса, от которого вы не хотите получать уведомления, есть надпись Настройки, нажмите на нее и снимите отметку напротив пункта Включить уведомления, после чего нажмите Сохранить.
  2. Если надписи Настройки нет, наведите указатель на адрес сайта и выберите Запретить.
  • Снова кликните Сайты в меню слева.
  • В разделе Уведомления нажмите От сервисов Яндекса.
  • Снимите отметки напротив сервисов, от которых вы не хотите получать уведомления, и нажмите Сохранить
  • Перейдите на вкладку На главной и сделайте то же самое.

Как полностью запретить браузерные уведомления

Как запретить уведомления в Chrome

  • Нажмите на значок меню (три точки в правом верхнем углу браузера).
  • Выберите Настройки.
  • Прокрутите открывшуюся страницу вниз и нажмите Дополнительные.
  • Выберите Настройки сайта.
  • Откройте раздел Уведомления.
  • Деактивируйте переключатель Спрашивать разрешение перед отправкой (рекомендуется). При этом название пункта меню изменится на Заблокировано.

Как запретить уведомления в Firefox

  • Нажмите на значок меню (три горизонтальные полоски в правом верхнем углу браузера).
  • Выберите Настройки.
  • В меню слева нажмите Приватность и защита.
  • Прокрутите страницу вниз до раздела Разрешения
  • Напротив пункта Уведомления нажмите кнопку Параметры….
  • Поставьте флажок Блокировать новые запросы на отправку вам уведомлений.

Как запретить уведомления в браузере Safari

  • В меню Safari выберите пункт Настройки.
  • Откройте раздел Веб-сайты.
  • Кликните Уведомления.
  • Снимите галочку с пункта Разрешить веб-сайтам запрашивать разрешение на отправку push‑уведомлений.

Как запретить уведомления в браузере Microsoft Edge

Увы, в браузере Edge нельзя полностью отключить запросы на веб-уведомления. Надеемся, разработчики добавят такую функцию в будущем.

Как запретить уведомления в браузере Opera

  • Нажмите на значок настроек в правом верхнем углу экрана.
  • Промотайте вниз до пункта Перейти к настройкам браузера выберите его.
  • В меню слева нажмите Дополнительно.
  • Перейдите на вкладку Безопасность.
  • Откройте Настройки сайта.
  • Выберите Уведомления.
  • Деактивируйте переключатель Спрашивать разрешение перед отправкой (рекомендуется).

Как запретить уведомления в Яндекс.Браузере

  • Нажмите на значок меню (три горизонтальные полоски в правом верхнем углу браузера).
  • Выберите Настройки.
  • В меню слева кликните Сайты.
  • В разделе Запросы на отправку уведомлений установите отметку напротив пункта Не показывать запросы на отправку.

Выглядит это примерно так:


Стоит ли разрешать сайту отправлять уведомления?


Бывают разные ситуации, исходя из которых, можно понять, стоит ли разрешить сайту демонстрировать всплывающие окна с оповещениями. Иногда сайты демонстрируют не только свои, но и партнерские оповещения. Именно поэтому необходимо внимательно читать имя сайта, дабы избежать неприятной завлекаловки.

Если вы нечаянно разрешите всплывающие окна с уведомления или вам просто надоест получать их- ничего страшного, ведь запретить сайту присылать уведомления можно в любой момент.

Как отключить уведомления в Яндекс Браузере

Как отключить уведомления в Яндекс Браузере

Как убрать уведомления в Google Chrome

Как убрать уведомления в Google Chrome

Как отключить уведомления от сайтов в Mozilla Firefox

Как отключить уведомления от сайтов в Mozilla Firefox

В браузере Microsoft Edge они отключаются немного по-другому. Для этого необходимо:

К сожалению, в браузере Internet Explorer отсутствует возможность отключить рекламную панель, расположенную в нижней части окна, а также отписаться от всплывающих оповещений от сайтов. Тем, кто пользуется этим браузером придется сразу определяться, хочется ли получать информационные уведомления от того или иного сервиса или же нет.

Как вновь включить уведомления от сайтов

Таким образом, пользователь может самостоятельно выбрать, разрешать ли сайтам показывать оповещения или вообще запретить запрашивать разрешение на их показ.

Пожалуйста, оставьте свои мнения по текущей теме материала. За комментарии, дизлайки, подписки, отклики, лайки низкий вам поклон!

Дайте знать, что вы думаете по данной теме в комментариях. Мы крайне благодарны вам за ваши комментарии, лайки, отклики, дизлайки, подписки!

Пожалуйста, оставляйте ваши отзывы по текущей теме материала. Мы очень благодарим вас за ваши комментарии, дизлайки, лайки, отклики, подписки!

Читайте также: