веб пуши что такое
Service Workers. Web Push и где они обитают
Добро пожаловать в школу CODEдейства и волшебства!
На сегодняшнем занятии мы с вами узнаем, как использовать малоизвестный тандем Web Push + Service Workers (SW). Я приоткрою вам завесу: расскажу о способе удерживать аудиторию маглов благодаря технологии Web Push и о том, чем это может быть полезно для редакций сайтов и прочих интернет-сервисов.
Текст продолжает статью о базовом применении SW. Из комментариев и вопросов я понял, что людям интересно направление SW + Web Push. Давайте вместе разберёмся с тем, что это такое, и как использовать эту магическую пару на практике.
Что такое Push Notification?
Вы принимаете оповещения на свою электронную почту: заходите в почтовый клиент и смотрите входящие письма. В данном случае это технология pull, то есть вы заходите на сайт и «тянете» с него данные, когда они вам нужны.
В случае же с push-уведомлениями ресурс проталкивает новые данные вам сам. При этом вы сразу получаете самые свежие данные, ведь в этой технологии нет определённого периода проверки данных, они приходят в режиме онлайн. Использование пушей не ограничивается получением уведомлений. Так, через push-технологию можно синхронизировать данные при обновлении.
Push-уведомления — это небольшие всплывающие окна. Они могут появляться на экране, где есть область оповещений или есть возможность вывода на экран принятых данных. Push-уведомления работают даже тогда, когда пользователь ушёл с сайта. Это означает, что вы можете доставлять сообщения о новых материалах и новых событиях, чтобы привлечь внимание пользователя в ваше приложение.
Не забывайте о поддержке в браузерах. Так в IE, Edge и Safari ваши Push-уведомления работать не будут.
Заготовки для магической связки SW и Web-push
Для написания своего собственного SW для работы с Web-push нам как всегда понадобятся:
В файле server.js я укажу лишь эндпоинт (точка входа в API серверного приложения) для регистрации push-уведомлений.
В статье мы рассмотрим варианты отправки push-уведомлений и способы их применения. Давайте знакомиться с магией вне Хогвартса вместе.
Push Payload
Этот простейшее магическое заклинание показывает, как отправлять и получать строки, но данные могут быть извлечены из push-сообщения в различных форматах: строки, буфер ArrayBuffer, BLOB-объект в JSON.
Если вам просто нужны push-уведомления — этот пример для вас. Сообщение может доставлять не только текст, но и payload — обогащенные данные для приложения. Код ниже демонстрирует, как вы можете доставлять payload для вашего приложения.
Для демонстрации мы используем данные из текстового поля, которые будут отправлены на сервер и затем отображены в виде push-уведомления через SW.
Rich Notifications
Усложним предыдущий вариант и добавим спецэффектов, здесь всё зависит от ваших желаний и фантазии. Нам поможет полное Notification API. API предоставляет интерфейс для использования «живых» push-уведомлений пользователю c указанием локали, шаблоном вибрации, изображения.
Пример схож с тем, что описан выше, но позволяет использовать более расширенное Notification API, чтобы выбирать изображение, выставлять локаль и шаблон уведомления — то есть делать уведомление уникальным.
Push Tag
Следующее заклинание будет демонстрировать аккумулирование и замену предыдущего заклинания более сильным. Используем тег для уведомления, чтобы заменить старые уведомления новыми. Позволяет показывать маглам только актуальную информацию или сворачивать несколько уведомлений в одно.
Вариант подойдёт для тех приложений, где имеются чаты или уведомления о новом контенте (примеры: Tproger и Tinder). Ниже код демонстрирует, как управлять очередью уведомлений, чтобы предыдущие уведомления можно было отбросить или объединить в одно уведомление. Это полезно, чтобы иметь fallback на случай, если мы написали чат, где можно редактировать сообщения. Клиент увидит не тонну уведомлений с исправлениями, а всего лишь одно.
Push Clients
Пришло время для «непростительных заклинаний». Напомню, почему они непростительные:
любое чрезмерное применение этих заклинаний к маглам карается пожизненным заключением в Азкабан. Поэтому главное — не надоедать!
Когда магл нажмет на уведомление, сгенерированное из push-события, оно сфокусирует его на вкладке приложения или даже повторно откроет его, если оно было закрыто.
Ниже код для трёх случаев использования доставки уведомлений в зависимости от состояния приложения.
Он может распознавать, когда вы находитесь на странице или нужно переключиться на открытую вкладку или повторно открыть вкладку.
Способ поможет вам увеличить конверсию приложения, если вы хотите вернуть магла. Только не перегибайте палку, маглам может не понравиться излишнее внимание приложения.
Самые классические примеры использования:
Push Subscription
Пришло время завладеть разумом наших маглов. Маглы называют это «телепатией» или чтением мыслей, но будем делать иначе. Давайте научимся помещать нашу информацию и заставлять привязываться к нашему приложению. Этот пример показывает, как использовать push-уведомления с управлением подпиской, позволяя пользователям подписаться на приложение и поддерживать связь с ним. Стараемся помнить об Азкабане!
После того, как SW зарегистрирован, клиент проверяет, подписан ли он на сервис уведомлений. В зависимости от этого устанавливается текст кнопки.
После успешной подписки (index.js::pushManager.subscribe) клиент отправляет post-запрос на сервер приложений для регистрации подписки.
Сервер периодически отправляет уведомление с помощью библиотеки web-push на все зарегистрированные эндпоинты. Если эндпоинт больше не зарегистрирован (подписка истекла или отменена), текущая подписка удаляется из списка подписок.
После успешной отписки (index.js::pushSubscription.unsubscribe) клиент отправляет post-запрос на сервер приложений, чтобы отменить регистрацию подписки. Сервер больше не отправляет уведомления. SW также следит за событиями pushsubscriptionchange и resubscribes.
Подписка может быть отменена пользователем вне страницы в настройках браузера или UI-уведомлений. В этом случае бекенд перестанет отправлять уведомления, но фронтенд об этом не узнает. Чтобы магия работала, важно периодически проверять, активна ли регистрация в службе уведомлений.
Ещё разок о заклинаниях
Выше мы рассмотрели магические способы использования SW и Web Push для приложений.
Данный тандем таит в себе множество интересных применений.
Если вам нужно лишь иногда зазывать магла к себе в приложение или сообщать ему о об исправлениях или изменении статуса его заказа, то используйте Push Payload. Можно добавить немного фантазии и заиспользовать Notification API — тогда цвета и иконка вашего приложения будет видны пользователю в Rich Push.
Если же вы желаете завладеть всем вниманием магла и установить с ним контакт — примеры Push Client и Push Subscription для вас. Главное — помните об Азкабане, иначе вы начнёте терять свою аудиторию.
Жду ваших комментариев и пожеланий на следующую тему. От себя добавлю, что хотелось бы поговорить и обсудить тему работы SW + React/Redux-приложений и способы ускорения. Будет полезно?
Что такое web push уведомления: Руководство
Узнайте, какие преимущества есть у web push уведомлений, а также как их получить с помощью SendPulse
Web push уведомления (англ. web push notifications) — это оповещения, которые всплывают в окне браузера пользователя. Они позволяют привлечь больше клиентов, повысить конверсии и продажи для онлайн-бизнеса. После регистрации в SendPulse отправляйте неограниченное количество push уведомлений бесплатно, если у вашего сайта до 10 000 подписчиков.
В этом вебинаре Александр Рысь, директор по развитию SendPulse, рассказал о преимуществах и недостатках web push уведомлений как канала коммуникации, поделился эффективными схемами сочетания с email и SMS, лучшими примерами и кейсами. Вдохновляйтесь!
Разделы
Web push уведомления — это мощный маркетинговый инструмент. Поэтому, его активно используют в сфере интернет-бизнеса. E-commerce компании отправляют со своих сайтов push уведомления тем пользователям, которые согласились их получать. Маркетинговые агентства и push сервисы предоставляют брендам профессиональные инструменты для повышения вовлеченности и стимулирования продаж. В SendPulse вы можете отправлять push кампании, а также комбинировать их с email рассылками и SMS для повышения эффективности.
Настройка web push уведомлений в Sendpulse занимает не более 2 минут.
6 причин использовать push уведомления
Как работают push уведомления
Просто добавьте строку кода, сгенерированную сервисом, на сайт.
Когда пользователь посетит сайт в первый раз, то увидит окно запроса подписки. Если он подтвердит запрос, то сможет получать ваши push кампании. Если заблокирует — сообщение больше не появится.
Как создать push уведомление
В SendPulse вы можете создавать push уведомления без специальных навыков. Следуйте следующим 5 шагам:
Чтобы повысить конверсию, персонализируйте и сегментируйте push уведомления согласно языку браузера, региону, типу браузера, странице подписки. Добавьте в свою кампанию крупное изображение, чтобы привлечь внимание большего количества пользователей. Составьте график отправки push уведомлений для автоматизации рабочего процесса.
Как отключить push уведомления
Нерелевантные push уведомления, которые сопровождаются звуковыми оповещениями, могут отвлекать и раздражать. Отключить такие сообщения прямо на сайте невозможно. Для их блокировки зайдите в настройки вашего браузера. Узнайте, как отключить push уведомления в Google Chrome и Mozilla Firefox, в наших пошаговых руководствах.
API для push уведомлений
Хотите автоматически отправлять push уведомления своим клиентам из текущей CRM или CMS системы? Воспользуйтесь REST API! Более подробную информацию вы найдете в нашей документации API для push уведомлений.
Рекомендации для создания push уведомлений
Если хотите повысить лояльность, узнаваемость бренда и продажи с помощью push уведомлений, возьмите на заметку несколько полезных советов.
Примеры push уведомлений
Ниже вы видите пример web push сообщения о выгодном предложении.
А вот push уведомление от новостного сайта AIN.
Последний пример демонстрирует пользователям выгоду от подписки на push сообщения.
Надеемся, эти примеры смогли вас вдохновить. Приступайте к созданию push уведомлений прямо сейчас. С профессиональными инструментами SendPulse запустить web push кампанию проще простого.
Ресурсы
💙 Могу ли я отправлять web push уведомления с помощью SendPulse?
Да. Зарегистрируйтесь в SendPulse, создайте релевантное сообщение, добавьте кнопку CTA и цепляющее изображение. Более подробную информацию читайте в этой статье.
💭 Почему мне стоит отправлять web push уведомления?
Отправка web push уведомлений — это отличный способ коммуникации с аудиторией. С помощью web push вы можете держать подписчиков в курсе событий, делиться новостями, сообщениями, анонсами и так далее. Подробнее о преимуществах push уведомлений читайте в этой статье.
📣 Как собрать подписчиков web push уведомлений?
Зарегистрируйтесь в SendPulse и создайте виджет подписки для сбора подписчиков. Следуйте этому пошаговому руководству, чтобы получать разрешения пользователей на отправку web push уведомлений.
💳 Сколько стоят web push уведомления?
Зарегистрируйтесь в SendPulse и бесплатно отправляйте неограниченное количество push уведомлений 10 000 подписчиков. Если вы работаете с более широкой аудиторией, посетите нашу страницу цен и выберите подходящий тарифный план в зависимости от количества ваших подписчиков.
Push-уведомления: что это такое, как они работают и какому бизнесу нужны
Блочный редактор писем, готовые шаблоны email, формы подписки и автоматизация. Запускайте email-рассылки, чтобы быть на связи со своими клиентами.
Как развиваться в диджитал. Какие каналы сейчас в тренде. Как зарабатывать больше и поднимать чек за свои услуги.
Рассказываем про инструменты для email-рассылок. Обсуждаем лучшие примеры и механики. Говорим о деньгах. Публикуем вакансии.
Push-уведомления или пуши — всплывающие сообщения на экране компьютера или телефона. Такие оповещения отправляют пользователям, чтобы рассказать об услугах, акциях, новостях и обновлениях. Пуши бывают разных форматов: оповещения в соцсетях и приложениях, рекламные пуши, системные уведомления.
В этой статье я расскажу о рекламных пуш-уведомлениях в браузере, для чего они нужны, как работают, в чем плюсы и минусы их использования.
Виды push-уведомлений
Системные пуши. Автоматические сообщения от операционной системы, мобильных, десктопных программ и приложений об изменениях или обновлениях.
Пуши в мобильных приложениях. Пользователи получают короткие уведомления от приложений, если включают в настройках разрешение на их показ. В таких сообщениях бывают инструкции, напоминания, призыв к конкретному действию. Мобильные пуши побуждают пользователя открывать приложение чаще.
Web-пуши. Пользователи должны разрешить сайтам присылать web-уведомления. Запрос на показ пушей появляется на сайте в виде всплывающего окна в браузере и предлагает варианты: «Разрешить» и «Блокировать».
После разрешения на показ уведомлений пользователь становится подписчиком web-пушей от сайта. Сами пуши отображаются в правом нижнем углу рабочего стола, а их частоту появления определяет владелец сайта. Отказаться от подписки на уведомления можно в настройках браузера.
Web пуш-уведомление состоит из заголовка, картинки/лого компании, основного текста, ссылки или кнопки.
Для чего бизнесу нужны push-уведомления
Цель пуш-уведомлений — рассказывать подписчикам о полезном контенте, новостях, услугах, продуктах, акциях. Пуши помогают установить контакт с новыми подписчиками и поддерживать интерес действующих. Так например, подключение сервиса по настройке пуш-уведомлений Gravitec повысило посещаемость сайта онлайн-медиа Prensa Libre на 300 000 пользователей в месяц.
Интернет-издания и блоги используют пуши, чтобы рассказать о срочных новостях и новых материалах. Пользователи получают уведомления даже если сайт закрыт на устройстве.
Магазины и торговые сети рассылают оповещения о начале распродажи, акции или поступлении товара. Обычно в таких уведомлениях есть кнопка с призывом к действию.
Некоторые интернет-магазины настраивают уведомления о брошенной корзине — напоминание о том, что пользователь добавил товары в корзину, но не оформил покупку. У сервиса по настройке и рассылке пушей PushEngage есть кейс о том, как австралийский маркетплейс MyDeal увеличил выручку на 20% и повысил конверсию на 4% с помощью оповещений о брошенной корзине.
Некоторые сайты присылают приветственные пуши сразу после подписки и дают ссылки на полезную информацию для подписчиков.
Можно привлекать внимание подписчиков конкретными материалами в блоге.
Как настроить push-уведомления в мобильных приложениях
В начале пользователь разрешает приложениям отправлять уведомления в настройках.
Отправитель использует сервисы пуш-уведомлений в зависимости от операционной системы телефона получателя: Firebase Cloud Messaging (FCM), Apple Push Notification Service (APNS), HUAWEI Push Kit.
С помощью сервисов отправитель настраивает сбор мобильных токенов (идентификаторы устройств пользователей) — на этом этапе потребуется помощь разработчиков приложения. Затем сервер приложения использует токен, чтобы отправить пуш на устройство пользователя.
Как настроить web-пуши
Настроить и запустить push-уведомления для браузера относительно легко — для этого есть специальные сервисы. Схема работы push-уведомлений выглядит так:
Как работают сервисы по настройке пушей разберем на примере двух русскоязычных платформ.
Gravitec.net
Настраивайте работу пушей пошагово сразу после регистрации: добавьте адрес сайта, выберите внешний вид формы подписки и подключите ее.
Что можно сделать в сервисе:
Цена. Есть бесплатный тариф без ограничений по количеству рассылок, но с ограничением до 10 000 подписчиков. Тариф Business стоит от 280 руб./месяц, цена зависит от количества подписчиков.
Язык. Русский, украинский, английский, испанский, польский, португальский.
Push4Site
Подробная пошаговая настройка работы пуш-уведомлений в три этапа: добавление сайта, настройка запроса на подписку, получение кода для вставки на сайт.
Что можно сделать в сервисе:
Цена. 30 дней бесплатный тестовый период. Далее — от 990 руб./месяц (зависит от количества подписчиков).
Язык. Русский, английский, нидерландский.
На что обратить внимание при настройке рассылки web-пушей
Частота. Выбирайте умеренный график рассылки пушей — от частых уведомлений пользователи быстро устают и отписываются, а редкие могут пропустить. Частота зависит от особенностей бизнеса и контента сайта. Проанализируйте целевую аудиторию, протестируйте варианты и определите оптимальный график рассылки пушей. Например, оповещения о новых статьях в блоге присылайте по факту выхода материалов, а интернет-магазинам можно напоминать о себе раз в 2-3 дня. Регулярно отслеживайте статистику переходов и отписок, чтобы вовремя изменить частоту рассылки.
Содержание и польза. Пуши — короткий формат, в котором важно донести полезное сообщение клиенту и уложиться в количество знаков. Количество символов для заголовка и основного текста может отличаться в разных сервисах. Из текста пуша подписчик должен понять, почему ему нужно открыть уведомление, в чем для него польза — срочная новость, ссылка на новую статью по интересующей теме, нужный товар или акция.
Web PUSH Notifications быстро и просто
Добрый день. В этой небольшой заметке я хочу рассказать как быстро и просто настроить push-уведомления на вашем сайте. Эта статья ни в коем случае не претендует на звание исчерпывающего руководства, но, я надеюсь, что она даст точку старта для дальнейшего изучения.
Информации по этой теме в интернете полно, но она фрагментирована, разбросана по разным ресурсам и перемешена с уведомлениями для мобильных устройств с примерами на Java, C++ и Python. Нас же, как веб-разработчиков, интересует JavaScript. В этой статье я постараюсь саккумулировать всю необходимую и полезную информацию.
Я думаю, вы уже знаете что такое push-уведомления, но я всё же напишу коротко о главном.
Пользователь, заходя на сайт, вытягивает (pull) с него данные. Это удобно и безопасно, но с развитием интернет ресурсов, появилась необходимость оперативно доставлять информацию пользователям не дожидаясь пока те сами сделают запрос. Так и появилась технология принудительной доставки (push) данных с сервера клиенту.
Push-уведомления работают только если у вас на сайте есть HTTPS.
Без валидного SSL сертификата запустить не получится. Так что если у вас еще нет поддержки HTTPS, то пришло время её сделать. Рекомендую воспользоваться Let’s Encrypt.
Для запуска на localhost нужно прибегать к хитростям. Я же тестировал скрипты на Github Pages.
Оглавление
Хорошие уведомления
Сразу хочу оговориться, что push-уведомления не для рекламных рассылок. Отправлять нужно только то, что действительно нужно конкретному пользователю и на что он действительно должен оперативно отреагировать.
Плохие примеры тоже требуют уведомления, но на них не нужно реагировать оперативно. Эти уведомления можно отправить на почту. Вообще, все важные уведомления рекомендуется дублировать на почту, так-как push-уведомления могут не дойти до пользователя по разным, не зависящих от вас, причинам. Также важным фактором является актуальность события. Об этом я еще поговорю чуть позже. Рекомендую к прочтению:
Вернемся к нашим баранам. Так как же всё это работает? Для начала немного теории.
Теория
Среди непосвященных бытует мнение что push-уведомления это простая технология, не требующая для реализации особых ресурсов. В действительности же это целый пул технологий.
Для начала небольшая схема того как все это работает (анимированная схема):
К сожалению, мне не удалось выяснить кто и как создает ID устройства и как сервер сообщений привязывается к конкретному устройству. Я использовал сервер сообщений Firebase Cloud Messaging от Google и его библиотеку. К сожалению, я не смог выяснить можно ли его заменить на свой сервер и как это сделать.
Изначально для отправки сообщений использовали:
Cloud to Device Messaging
Потом его заменили на:
Google Cloud Messaging
А потом еще раз поменяли на:
Firebase Cloud Messaging
Интересно, что дальше.
Что же происходит на стороне клиента?
Google рекомендует использовать переключатель для подписки и отписки от уведомлений. Таким образом, инициация процедуры подписки на уведомления исходит от пользователя, а не от сайта.
Принудительно подписывать на уведомления каждого приходящего пользователя, это плохая практика. Не делайте так.
Это все выглядит очень сложно, но на сервере все не проще.
Сложности на серверной стороне
Практика
Наконец-то, мы перешли к самому главному. Как я уже говорил ранее, в качестве сервера сообщений мы будем использовать Firebase Cloud Messaging, поэтому мы начинаем с регистрации и создания проекта на Firebase.
Можно еще покопаться в настройках и поиграться с разделением прав доступа, но, в общем-то, работа с сайтом Firebase закончена.
Приступаем к написанию клиента
Начнем с того что создадим Service Worker для получения push-уведомлений.
Создаем файл firebase-messaging-sw.js с следующим содержимым.
Файл Service Worker-а должен называться именно firebase-messaging-sw.js и обязательно должен находиться в корне проекта, то есть доступен по адресу https://example.com/firebase-messaging-sw.js. Путь к этому файлу жестко прописан в библиотеке Firebase.
Написанного кода достаточно для того чтобы показывать уведомления. О дополнительных возможностях поговорим чуть позже. Теперь добавим библиотеку Firebase и скрипт подписки в наш шаблон страницы.
Добавляем на страницу кнопку для подписки на уведомления
Подписка на уведомления
Вот и все. Это весь код который требуется для получения push-уведомлений.
Отправка уведомлений с сервера
В общем виде отправка уведомления выглядит так:
Все поля по порядку:
Это пример отправки одного уведомления одному получателю. Можно отправить одно уведомление сразу нескольким получателям. Вплоть до 1000 получателей за раз.
Пример ответов от сервера сообщений:
Мы не привязаны к какому-то конкретному языку программирования и для простоты примера будем использовать PHP с расширением cURL. Скрипт отправки уведомления нужно запускать из консоли.
messaging.onMessage
Обработчик messaging.onMessage стоит отдельного упоминания, так как он относится как раз к категории подводных камней. В примерах от Firebase я не видел примера использование этого обработчика. О нем мне рассказал FluorescentHallucinogen, за что ему отдельное спасибо, но он не упомянул о некоторых особенностях его использования.
Что же это за обработчик и как он работает. Из документации мы знаем, что этот обработчик вызывается если мы получаем push-уведомление и находимся в этот момент на странице сайта с которого отправлено уведомление (желающие использовать нативное решение могут посмотреть пример реализации). Эта функциональность очень полезна тем, что мы можем отобразить уведомление на странице сделав красивую модалку или еще что-то. У меня такой необходимости нет, потому я просто отображу стандартное уведомление.
Вроде все просто, но есть подводный камень. Дело все в том что на мобильных устройствах запрещено использовать конструктор Notification. И для решения этой проблемы нужно использовать ServiceWorkerRegistration.showNotification() и обработчик в этом случае будет иметь виде:
Теперь уведомления работают и на мобильных устройствах. Казалось бы уже все, но нет. Не смотря на заверения некоторых, ServiceWorker не должен быть пустым. Мы же хотим, что бы по клику пользователь переходил на нужную нам страницу. Для этого нам нужно добавить обработчик клика по уведомлению в ServiceWorker.
Сохраняем параметры уведомления для доступа свойству click_action в ServiceWorker-е.
Обрабатываем клик по уведомлению в ServiceWorker-е.
TTL и дополнительный контроль над уведомлением
Важным свойством для уведомления может является время его актуальности. Это зависит от ваших бизнес процессов. По умолчанию время жизни уведомлений 4 недели. Это очень много для уведомлений такого характера. Например, уведомление «Ваша любимая передача начинается через 15 минут» актуально в течении 15 минут. После этого сообщение уже не актуально и показываться не должно. За контроль над временем жизни отвечает свойство time_to_live со значением от 0 до 2419200 секунд. Подробней читать в документации. Сообщение с указанным TTL будет иметь вид:
Сообщение вида «Ваша любимая передача начинается через 15 минут» актуально в течении 15 минут, но уже через минуту после отправки оно станет не корректным. Потому что передача начнется не через 15 минут, а уже через 14. Контролировать такие ситуации нужно на стороне клиента.
Для этого мы поменяем отправляемое с сервера сообщение:
Вот таким незамысловатым образом мы получили полный контроль над уведомлением. Что самое интересное, пользователю мы показываем время уведомления в его часовом поясе. Это актуально для сервисов который работают по всему миру или регионах с широким разбросом часовых поясов как у матушки-России.
Заключение
А теперь поговорим о грустном. Не смотря на все прелести технологии, у неё есть ряд недостатков:
Библиотека Firebase скрывает в себе много тайн и её исследование могло бы дать ответы на некоторые вопросы, но это уже выходит за рамки этой статьи.
Поиграться
Проект на GitHub Pages
Так как для запуска Service Worker-а нужен HTTPS, то самым простым решением было разместить проект на GitHub Pages, что я и сделал.
Проект представляет из себя полноценное приложение для отправки и получения уведомлений. Для того что бы получить уведомление надо:
Можно отправить уведомление через любой инструмент для отправки HTTP запросов. Можно использовать сURL, я предпочитаю приложение Postman для Chrome.
Запрос такой же как и описанный ранее:
Вот и все. Получаем уведомление и радуемся жизни.
Ссылки
Updated at 2018-06-09
Обнаружились некоторые «особенности» в работе уведомлений.
Дубликаты уведомлений
Ко мне несколько раз обращались с вопросом: «Как исправить дублирующиеся уведомления?»
Проявляется эта проблема если открыть сайт отправляющий уведомления одновременно в нескольких вкладках. В этом случае Service Worker отправляет уведомление в обе вкладки и в обоих вкладках срабатывает метод messaging.onMessage. Наблюдать эту проблему можно на моем Demo проекте.
Могу порекомендовать для этих целей библиотеку pamelafox/lscache.
Если у вас есть другой метод решения проблемы, напишите в комментариях.
Картинки в уведомлениях
Сегодня ко мне обратился пользователь CTterorist, заметивший, что не отображаются картинки (image) в уведомлениях.
То есть, если вы отправите сообщение в таком виде, то Firebase потеряет картинку.
Обработчики показа уведомления такие же как в примерах выше.





























