SlideShare ist ein Scribd-Unternehmen logo
1 von 27
Обзор Web Push Notifications. Пишем
свое решение.
Jeapie
• Занимаемся только push-уведомлениями с 2013
• Более 500 млн персонализированных сообщений
• Выпустили сервис Chrome web push для сайтов в открытую
бету 10.06.2015
Термин Push
• Короткие
• Добровольные
• Технически заложена отписка
• Содержат вшитую ссылку
Хронология событий
17 июня 2009 - APNS release
20 мая 2010 - GCM релиз
4 октября 2012 - Mac OS поддержка APNS
22 октября 2013 - Safari push уведомления
1 декабря 2014 - Service workers
15 апреля 2015 - Chrome 42 push
Chrome push
Ключевые особенности
● Приходят даже если вкладка с сайтом
закрыта
● Приходят даже если окно браузера закрыто
● Экономичны с позиции заряда устройства
● Не требуют установки дополнительного ПО
https://jeapie.com/web
DEMO (Chrome)
Стандарт
http://www.w3.org/TR/push-api/
(последняя редакция 27 апреля 2015)
Поддержка Технологии
Service Workers Web Push
Chrome
Yandex
Firefox
Safari
Opera
IE
Компоненты Chrome Web Push
• manifest.json - лежит в корне, указывается в <head> соддержит
ProjectNumber, по нему генерирутся токены
• service-worker.js - лежит в корне сайта, отвечает за прием и
обработку пуш (кешируется в браузер пользователю)
• js-сниппет - в layout сайта, проверяет все ли ок? и вызывает
окно подписки
Требования
• Google Chrome 42+ у пользователя
• SSL-сертификат у домена (https://)
Токены
• Уникальный идентификатор устройства
• Уникален для данного домена, ProjectNumber и браузера
• Может “устаревать” и меняться (к примеру при
отпискеподписке)
Шаг №1. Получаем ключи
https://code.google.com/apis/console
Шаг №2. Создаем manifest.json
в <head> вставляем ссылку
Шаг №3. Пишем service-worker
В нем находится обработка событий
1. Событие получения notification
2. Событие открытия notification
Он кешируется при первом заходе, запускаетcя при получении
событий, работает в фоне некоторое время (50ms)
Особенность(!!) Chrome Push
В версиях Chrome 42-43 пуш не содержит ни текст уведомления
ни идентификатор уведомления.
Поэтому приходится на сервере держать очередь пушей для
каждого токена. И делать запрос на сервер при каждом приходе
пуша.
Шаг №4. js-сниппет
• Поддерживает ли браузер пуш
• Поддерживает ли браузер сервис воркеры (Opera fail)
• Регистрируем сервис-воркер
• Не запретил ли пользователь прием пуш-уведомлений
• Вызываем окно подписки
Шаг №5
● Сохраняем токен на бекенде после получения согласия
● Можем отправлять пуш используя GCM API (ключ для
авторизации) при помощи обычных http запросов
Шаг №6. “Окультурить”
• Инструмент alias (customer_id)
• Трекинг доставки Push
• utm-метки трекинга перехода по ссылкам
• Поддержка http сайтов через виджет
• Сегментация по тегам
Спасибо за внимание!
Александр Михайленко
CEO
Jeapie
@alexandrmikh
fb.com/alexandrmikh
alexandr.mikhaylenko@gmail.com

Weitere ähnliche Inhalte

Was ist angesagt?

CodeFest 2012. Евтухович И. — Как мы делали Групон
CodeFest 2012. Евтухович И. — Как мы делали ГрупонCodeFest 2012. Евтухович И. — Как мы делали Групон
CodeFest 2012. Евтухович И. — Как мы делали ГрупонCodeFest
 
Обзор браузеров
Обзор браузеровОбзор браузеров
Обзор браузеровKate Kapel
 
Встроенная система профилирования в клиенте «Аллодов Онлайн»
Встроенная система профилирования в клиенте «Аллодов Онлайн»Встроенная система профилирования в клиенте «Аллодов Онлайн»
Встроенная система профилирования в клиенте «Аллодов Онлайн»Андрей Бростовский
 
Алексей Морозов (Россия), Rambler.ru. ASP.NET в помощь хакеру и не только....
Алексей Морозов (Россия), Rambler.ru. ASP.NET в помощь хакеру и не только....Алексей Морозов (Россия), Rambler.ru. ASP.NET в помощь хакеру и не только....
Алексей Морозов (Россия), Rambler.ru. ASP.NET в помощь хакеру и не только....KazHackStan
 
Кэширование в Web, php и symfony
Кэширование в Web, php и symfonyКэширование в Web, php и symfony
Кэширование в Web, php и symfonyAlexander Morozov
 
Как сделать проект с 1 500 000 просмотров в сутки, который не ломается - IzhD...
Как сделать проект с 1 500 000 просмотров в сутки, который не ломается - IzhD...Как сделать проект с 1 500 000 просмотров в сутки, который не ломается - IzhD...
Как сделать проект с 1 500 000 просмотров в сутки, который не ломается - IzhD...Egor Konovalov
 
Быстрый старт iOS приложения на примере iOS Почты Mail.Ru / Николай Морев (Ma...
Быстрый старт iOS приложения на примере iOS Почты Mail.Ru / Николай Морев (Ma...Быстрый старт iOS приложения на примере iOS Почты Mail.Ru / Николай Морев (Ma...
Быстрый старт iOS приложения на примере iOS Почты Mail.Ru / Николай Морев (Ma...Ontico
 
сравнение браузеров
сравнение браузеровсравнение браузеров
сравнение браузеровnatasha16makritskaya
 
Эссе по теме браузеры
Эссе по теме браузерыЭссе по теме браузеры
Эссе по теме браузерыMaxim Moroz
 
the workflow of a systems administrator
the workflow of a systems administratorthe workflow of a systems administrator
the workflow of a systems administratorAndrew Pantyukhin
 
Первые шаги с RabbitMQ
Первые шаги с RabbitMQПервые шаги с RabbitMQ
Первые шаги с RabbitMQAlexander Svetkin
 

Was ist angesagt? (20)

CodeFest 2012. Евтухович И. — Как мы делали Групон
CodeFest 2012. Евтухович И. — Как мы делали ГрупонCodeFest 2012. Евтухович И. — Как мы делали Групон
CodeFest 2012. Евтухович И. — Как мы делали Групон
 
Обзор браузеров
Обзор браузеровОбзор браузеров
Обзор браузеров
 
Brauzery
BrauzeryBrauzery
Brauzery
 
Mini-essay final
Mini-essay finalMini-essay final
Mini-essay final
 
Speed
SpeedSpeed
Speed
 
Встроенная система профилирования в клиенте «Аллодов Онлайн»
Встроенная система профилирования в клиенте «Аллодов Онлайн»Встроенная система профилирования в клиенте «Аллодов Онлайн»
Встроенная система профилирования в клиенте «Аллодов Онлайн»
 
Алексей Морозов (Россия), Rambler.ru. ASP.NET в помощь хакеру и не только....
Алексей Морозов (Россия), Rambler.ru. ASP.NET в помощь хакеру и не только....Алексей Морозов (Россия), Rambler.ru. ASP.NET в помощь хакеру и не только....
Алексей Морозов (Россия), Rambler.ru. ASP.NET в помощь хакеру и не только....
 
Кэширование в Web, php и symfony
Кэширование в Web, php и symfonyКэширование в Web, php и symfony
Кэширование в Web, php и symfony
 
Как сделать проект с 1 500 000 просмотров в сутки, который не ломается - IzhD...
Как сделать проект с 1 500 000 просмотров в сутки, который не ломается - IzhD...Как сделать проект с 1 500 000 просмотров в сутки, который не ломается - IzhD...
Как сделать проект с 1 500 000 просмотров в сутки, который не ломается - IzhD...
 
Браузеры
БраузерыБраузеры
Браузеры
 
Browsers. Description
Browsers. DescriptionBrowsers. Description
Browsers. Description
 
эссе
эссеэссе
эссе
 
Prezentatsia1 (3)
Prezentatsia1 (3)Prezentatsia1 (3)
Prezentatsia1 (3)
 
Быстрый старт iOS приложения на примере iOS Почты Mail.Ru / Николай Морев (Ma...
Быстрый старт iOS приложения на примере iOS Почты Mail.Ru / Николай Морев (Ma...Быстрый старт iOS приложения на примере iOS Почты Mail.Ru / Николай Морев (Ma...
Быстрый старт iOS приложения на примере iOS Почты Mail.Ru / Николай Морев (Ma...
 
KazHackStan 2017 | Tracking
KazHackStan 2017 | TrackingKazHackStan 2017 | Tracking
KazHackStan 2017 | Tracking
 
сравнение браузеров
сравнение браузеровсравнение браузеров
сравнение браузеров
 
Эссе по теме браузеры
Эссе по теме браузерыЭссе по теме браузеры
Эссе по теме браузеры
 
обзор браузеров
обзор браузеровобзор браузеров
обзор браузеров
 
the workflow of a systems administrator
the workflow of a systems administratorthe workflow of a systems administrator
the workflow of a systems administrator
 
Первые шаги с RabbitMQ
Первые шаги с RabbitMQПервые шаги с RabbitMQ
Первые шаги с RabbitMQ
 

Ähnlich wie Chrome push notifications. Анатомия и разработка

Воюем за ресурсы (ZFConf2011)
Воюем за ресурсы (ZFConf2011)Воюем за ресурсы (ZFConf2011)
Воюем за ресурсы (ZFConf2011)Alexey Kachayev
 
ZFConf 2011: Воюем за ресурсы: Повышение производительности Zend Framework пр...
ZFConf 2011: Воюем за ресурсы: Повышение производительности Zend Framework пр...ZFConf 2011: Воюем за ресурсы: Повышение производительности Zend Framework пр...
ZFConf 2011: Воюем за ресурсы: Повышение производительности Zend Framework пр...ZFConf Conference
 
Оранжевый - новый синий: Как портировать Chrome Extension в Firefox Extension
Оранжевый - новый синий: Как портировать Chrome Extension в Firefox ExtensionОранжевый - новый синий: Как портировать Chrome Extension в Firefox Extension
Оранжевый - новый синий: Как портировать Chrome Extension в Firefox Extensionchaykaborya
 
Конкурс для разработчиков от Evernote
Конкурс для разработчиков от EvernoteКонкурс для разработчиков от Evernote
Конкурс для разработчиков от EvernoteEvernote
 
Сергей Мелашич "Настройка SEO для одностраничных web-приложений на Angular"
Сергей Мелашич "Настройка SEO для одностраничных web-приложений на Angular"Сергей Мелашич "Настройка SEO для одностраничных web-приложений на Angular"
Сергей Мелашич "Настройка SEO для одностраничных web-приложений на Angular"Fwdays
 
BDD JBehave или Cucumber JVM + Appium для эффективной кроссплатформенной авто...
BDD JBehave или Cucumber JVM + Appium для эффективной кроссплатформенной авто...BDD JBehave или Cucumber JVM + Appium для эффективной кроссплатформенной авто...
BDD JBehave или Cucumber JVM + Appium для эффективной кроссплатформенной авто...QA Club Minsk
 
Bdd j behave or cucumber jvm plus appium for efficient cross platform mobile ...
Bdd j behave or cucumber jvm plus appium for efficient cross platform mobile ...Bdd j behave or cucumber jvm plus appium for efficient cross platform mobile ...
Bdd j behave or cucumber jvm plus appium for efficient cross platform mobile ...ISsoft
 
Desktop app based on node js and html5
Desktop app based on node js and html5Desktop app based on node js and html5
Desktop app based on node js and html5Provectus
 
Идентификация и аутентификация - встроенные функции безопасности или задачи с...
Идентификация и аутентификация - встроенные функции безопасности или задачи с...Идентификация и аутентификация - встроенные функции безопасности или задачи с...
Идентификация и аутентификация - встроенные функции безопасности или задачи с...Mikhail Vanin
 
Meet Magento Belarus 2015: Denis Bosak
Meet Magento Belarus 2015: Denis BosakMeet Magento Belarus 2015: Denis Bosak
Meet Magento Belarus 2015: Denis BosakAmasty
 
Эволюция BackDoor.Flashback
Эволюция BackDoor.FlashbackЭволюция BackDoor.Flashback
Эволюция BackDoor.Flashbackhexminer
 
Azure Mobile Backend
Azure Mobile BackendAzure Mobile Backend
Azure Mobile BackendVitaly Baum
 
Хорошо поддерживаемое в продакшне приложение / Николай Сивко (okmeter.io)
Хорошо поддерживаемое в продакшне приложение / Николай Сивко (okmeter.io)Хорошо поддерживаемое в продакшне приложение / Николай Сивко (okmeter.io)
Хорошо поддерживаемое в продакшне приложение / Николай Сивко (okmeter.io)Ontico
 
развертывание среды Rails (антон веснин, Locum Ru)
развертывание среды Rails (антон веснин, Locum Ru)развертывание среды Rails (антон веснин, Locum Ru)
развертывание среды Rails (антон веснин, Locum Ru)guest40e031
 
антон веснин Rails Application Servers
антон веснин Rails Application Serversантон веснин Rails Application Servers
антон веснин Rails Application Serversrit2010
 
Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...
Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...
Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...SQALab
 
Михаил Сенин, Герман Андреев — Использование API Вебмастера в плагинах к CMS
Михаил Сенин, Герман Андреев — Использование API Вебмастера в плагинах к CMSМихаил Сенин, Герман Андреев — Использование API Вебмастера в плагинах к CMS
Михаил Сенин, Герман Андреев — Использование API Вебмастера в плагинах к CMSYandex
 

Ähnlich wie Chrome push notifications. Анатомия и разработка (20)

Воюем за ресурсы (ZFConf2011)
Воюем за ресурсы (ZFConf2011)Воюем за ресурсы (ZFConf2011)
Воюем за ресурсы (ZFConf2011)
 
ZFConf 2011: Воюем за ресурсы: Повышение производительности Zend Framework пр...
ZFConf 2011: Воюем за ресурсы: Повышение производительности Zend Framework пр...ZFConf 2011: Воюем за ресурсы: Повышение производительности Zend Framework пр...
ZFConf 2011: Воюем за ресурсы: Повышение производительности Zend Framework пр...
 
Оранжевый - новый синий: Как портировать Chrome Extension в Firefox Extension
Оранжевый - новый синий: Как портировать Chrome Extension в Firefox ExtensionОранжевый - новый синий: Как портировать Chrome Extension в Firefox Extension
Оранжевый - новый синий: Как портировать Chrome Extension в Firefox Extension
 
Конкурс для разработчиков от Evernote
Конкурс для разработчиков от EvernoteКонкурс для разработчиков от Evernote
Конкурс для разработчиков от Evernote
 
Сергей Мелашич "Настройка SEO для одностраничных web-приложений на Angular"
Сергей Мелашич "Настройка SEO для одностраничных web-приложений на Angular"Сергей Мелашич "Настройка SEO для одностраничных web-приложений на Angular"
Сергей Мелашич "Настройка SEO для одностраничных web-приложений на Angular"
 
BDD JBehave или Cucumber JVM + Appium для эффективной кроссплатформенной авто...
BDD JBehave или Cucumber JVM + Appium для эффективной кроссплатформенной авто...BDD JBehave или Cucumber JVM + Appium для эффективной кроссплатформенной авто...
BDD JBehave или Cucumber JVM + Appium для эффективной кроссплатформенной авто...
 
Bdd j behave or cucumber jvm plus appium for efficient cross platform mobile ...
Bdd j behave or cucumber jvm plus appium for efficient cross platform mobile ...Bdd j behave or cucumber jvm plus appium for efficient cross platform mobile ...
Bdd j behave or cucumber jvm plus appium for efficient cross platform mobile ...
 
Desktop app based on node js and html5
Desktop app based on node js and html5Desktop app based on node js and html5
Desktop app based on node js and html5
 
Идентификация и аутентификация - встроенные функции безопасности или задачи с...
Идентификация и аутентификация - встроенные функции безопасности или задачи с...Идентификация и аутентификация - встроенные функции безопасности или задачи с...
Идентификация и аутентификация - встроенные функции безопасности или задачи с...
 
Automation testing desktop applications
Automation testing desktop applicationsAutomation testing desktop applications
Automation testing desktop applications
 
Meet Magento Belarus 2015: Denis Bosak
Meet Magento Belarus 2015: Denis BosakMeet Magento Belarus 2015: Denis Bosak
Meet Magento Belarus 2015: Denis Bosak
 
Эволюция BackDoor.Flashback
Эволюция BackDoor.FlashbackЭволюция BackDoor.Flashback
Эволюция BackDoor.Flashback
 
Azure Mobile Backend
Azure Mobile BackendAzure Mobile Backend
Azure Mobile Backend
 
Хорошо поддерживаемое в продакшне приложение / Николай Сивко (okmeter.io)
Хорошо поддерживаемое в продакшне приложение / Николай Сивко (okmeter.io)Хорошо поддерживаемое в продакшне приложение / Николай Сивко (okmeter.io)
Хорошо поддерживаемое в продакшне приложение / Николай Сивко (okmeter.io)
 
развертывание среды Rails (антон веснин, Locum Ru)
развертывание среды Rails (антон веснин, Locum Ru)развертывание среды Rails (антон веснин, Locum Ru)
развертывание среды Rails (антон веснин, Locum Ru)
 
антон веснин Rails Application Servers
антон веснин Rails Application Serversантон веснин Rails Application Servers
антон веснин Rails Application Servers
 
Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...
Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...
Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...
 
Михаил Сенин, Герман Андреев — Использование API Вебмастера в плагинах к CMS
Михаил Сенин, Герман Андреев — Использование API Вебмастера в плагинах к CMSМихаил Сенин, Герман Андреев — Использование API Вебмастера в плагинах к CMS
Михаил Сенин, Герман Андреев — Использование API Вебмастера в плагинах к CMS
 
Веб-сервер
Веб-серверВеб-сервер
Веб-сервер
 
PHP
PHPPHP
PHP
 

Chrome push notifications. Анатомия и разработка

  • 1. Обзор Web Push Notifications. Пишем свое решение.
  • 2. Jeapie • Занимаемся только push-уведомлениями с 2013 • Более 500 млн персонализированных сообщений • Выпустили сервис Chrome web push для сайтов в открытую бету 10.06.2015
  • 3. Термин Push • Короткие • Добровольные • Технически заложена отписка • Содержат вшитую ссылку
  • 4. Хронология событий 17 июня 2009 - APNS release 20 мая 2010 - GCM релиз 4 октября 2012 - Mac OS поддержка APNS 22 октября 2013 - Safari push уведомления 1 декабря 2014 - Service workers 15 апреля 2015 - Chrome 42 push
  • 6. Ключевые особенности ● Приходят даже если вкладка с сайтом закрыта ● Приходят даже если окно браузера закрыто ● Экономичны с позиции заряда устройства ● Не требуют установки дополнительного ПО
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 16. Поддержка Технологии Service Workers Web Push Chrome Yandex Firefox Safari Opera IE
  • 17. Компоненты Chrome Web Push • manifest.json - лежит в корне, указывается в <head> соддержит ProjectNumber, по нему генерирутся токены • service-worker.js - лежит в корне сайта, отвечает за прием и обработку пуш (кешируется в браузер пользователю) • js-сниппет - в layout сайта, проверяет все ли ок? и вызывает окно подписки
  • 18. Требования • Google Chrome 42+ у пользователя • SSL-сертификат у домена (https://)
  • 19. Токены • Уникальный идентификатор устройства • Уникален для данного домена, ProjectNumber и браузера • Может “устаревать” и меняться (к примеру при отпискеподписке)
  • 20. Шаг №1. Получаем ключи https://code.google.com/apis/console
  • 21. Шаг №2. Создаем manifest.json в <head> вставляем ссылку
  • 22. Шаг №3. Пишем service-worker В нем находится обработка событий 1. Событие получения notification 2. Событие открытия notification Он кешируется при первом заходе, запускаетcя при получении событий, работает в фоне некоторое время (50ms)
  • 23. Особенность(!!) Chrome Push В версиях Chrome 42-43 пуш не содержит ни текст уведомления ни идентификатор уведомления. Поэтому приходится на сервере держать очередь пушей для каждого токена. И делать запрос на сервер при каждом приходе пуша.
  • 24. Шаг №4. js-сниппет • Поддерживает ли браузер пуш • Поддерживает ли браузер сервис воркеры (Opera fail) • Регистрируем сервис-воркер • Не запретил ли пользователь прием пуш-уведомлений • Вызываем окно подписки
  • 25. Шаг №5 ● Сохраняем токен на бекенде после получения согласия ● Можем отправлять пуш используя GCM API (ключ для авторизации) при помощи обычных http запросов
  • 26. Шаг №6. “Окультурить” • Инструмент alias (customer_id) • Трекинг доставки Push • utm-метки трекинга перехода по ссылкам • Поддержка http сайтов через виджет • Сегментация по тегам
  • 27. Спасибо за внимание! Александр Михайленко CEO Jeapie @alexandrmikh fb.com/alexandrmikh alexandr.mikhaylenko@gmail.com