веб пуши что это

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 подписчиков. Если вы работаете с более широкой аудиторией, посетите нашу страницу цен и выберите подходящий тарифный план в зависимости от количества ваших подписчиков.

Источник

Как работает JS: веб push-уведомления

Сегодня публикуем перевод девятой части серии статей, посвящённых применению веб-технологий и JavaScript. В этом материале мы исследуем веб push-уведомления. А именно, поговорим о механизмах, лежащих в их основе, и о том, как осуществляется подписка на уведомления, как устроены процессы их отправки и получения.

веб пуши что это. Смотреть фото веб пуши что это. Смотреть картинку веб пуши что это. Картинка про веб пуши что это. Фото веб пуши что это

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

Обзор

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

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

Push API и Notifications API

То, что мы называем тут «веб push-уведомлениями», на самом деле, представлено двумя технологиями. Это — Push API, которое используется, когда сервер передаёт сообщение сервис-воркеру, и Notifications API, которое применяется, когда сервис-воркер, или скрипт в самом веб-приложении, намеревается показать пользователю уведомление.

Push API

Для реализации механизма push-уведомлений нужно выполнить следующие три шага:

Проверка возможностей браузера

Для начала надо узнать, поддерживает ли текущий браузер push-уведомления. Сделать это можно, выполнив следующие проверки:

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

Регистрация сервис-воркера

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

Получение разрешения пользователя

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

API для получения разрешений устроено сравнительно просто. Единственное, на что тут надо обратить внимание, заключается в том, что сейчас применяются две версии этого API.

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

Вызов Notification.requestPermission() приведёт к показу следующего окна.

веб пуши что это. Смотреть фото веб пуши что это. Смотреть картинку веб пуши что это. Картинка про веб пуши что это. Фото веб пуши что это

Запрос разрешения на показ уведомлений

Подписка пользователя с помощью PushManager

Вот как всё это, включая регистрацию сервис-воркера, выглядит:

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

Вот что здесь происходит:

Объект PushSubscription

Объект PushSubscription содержит всю информацию, необходимую для отправки push-уведомлений на устройство пользователя. Вот как он выглядит:

Свойство endpoint представляет собой URL сервиса push-уведомлений, точку входа в API. Для того, чтобы отправить уведомление, надо выполнить POST-запрос по этому URL.

Объект keys содержит сведения, используемые для шифрования данных сообщения, отправляемых в push-уведомлении.

веб пуши что это. Смотреть фото веб пуши что это. Смотреть картинку веб пуши что это. Картинка про веб пуши что это. Фото веб пуши что это

Получение разрешений, формирование объекта PushSubscription и отправка его на сервер

Отправка push-сообщения

При отправке пользователю push-сообщения нужно сообщить push-сервису (посредством вызова соответствующего метода API) о том, какие данные надо отправить, кому их надо отправить, и любые дополнительные сведения о сообщении. Обычно этот вызов выполняется с сервера веб-приложения.

Push-сервисы

Push-сервис — это система, которая получает запросы на отправку push-уведомлений, проверяет их и доставляет уведомления в соответствующий браузер.

Обратите внимание на то, что push-сервисы — это сторонние службы, которые вы, как разработчик веб-приложения, не контролируете. Ваши серверы — это те серверы, которые взаимодействуют с push-сервисами через API. В качестве примера push-сервиса можно привести Google FСM.

Push-сервис берёт на себя выполнение множества сложных задач. Например, если браузер не в сети, push-сервис поставит сообщения в очередь и будет ждать, перед отправкой сообщения, до тех пор, пока браузер не окажется доступным.

API push-сервисов

API push-сервисов предоставляет инструменты для отправки сообщений пользователям. Оно представлено протоколом Web Push Protocol, который является стандартом IETF, определяющим порядок работы с push-сервисами.

Данные, которые отправляют в push-сообщении, должны быть зашифрованы. Так разработчик не даёт push-сервисам просматривать данные, отправляемые пользователям. Это важно, так как именно браузер решает, какой push-сервис использовать (это могут быть push-сервисы, которые недостаточно безопасны).

Для каждого push-сообщения задаются следующие свойства:

веб пуши что это. Смотреть фото веб пуши что это. Смотреть картинку веб пуши что это. Картинка про веб пуши что это. Фото веб пуши что это

Сервер разработчика веб-приложения, push-сервер, и браузер, в который поступает сообщение

Push-события в браузере

Как только сообщение будет отправлено push-сервису, оно будет пребывать в состоянии ожидания до тех пор, пока не произойдёт одно из следующих событий:

Самое интересное здесь то, что браузер может вызывать сервис-воркер даже в том случае, если соответствующая ему веб-страница не открыта. Тут происходит следующее:

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

Конструкция сервис-воркера event.waitUntil(promise) сообщает браузеру о том, что, до разрешения промиса, сервис-воркер занят обработкой уведомления, и браузеру не следует завершать работу сервис-воркера до завершения этой работы.

Вот пример кода для обработки события push:

Вызов self.registration.showNotification() приводит к выводу уведомления, которое может увидеть пользователь, этот вызов возвращает промис, который будет разрешён как только уведомление будет показано.

Метод showNotification(title, options) позволяет настроить внешний вид уведомления в соответствии с нуждами разработчика. Так, параметр title — это строка, а параметр options — это объект примерно следующего содержания:

Здесь можно почитать подробности о настройке внешнего вида уведомлений.

Итоги

Push-уведомления способны принести пользу и ресурсам, на которых они применяются, и пользователям этих ресурсов. Пожалуй, главное, о чём стоит помнить владельцам веб-ресурсов, заключается в том, что их push-уведомления должны содержать что-то такое, что действительно интересно и нужно пользователям.

Автор этого материала говорит, что в его компании, SessionStack, планируют использовать push-уведомления для того, чтобы сообщать пользователям о сбоях, проблемах или аномалиях в их проектах. Это позволит им мгновенно узнавать о внештатных ситуациях и принимать соответствующие меры.

Предыдущие части цикла статей:

Уважаемые читатели! Пользуетесь ли вы push-уведомлениями в своих проектах?

Источник

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 потеряет картинку.

Обработчики показа уведомления такие же как в примерах выше.

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *