Юрий Василевский — Сервис пуш-сообщений Яндекса
DESCRIPTION
В докладе рассказано о том, что скрыто за пуш-сообщениями и как они работают, на примере сервиса Яндекса.TRANSCRIPT
![Page 1: Юрий Василевский — Сервис пуш-сообщений Яндекса](https://reader033.vdocuments.net/reader033/viewer/2022042715/558b4299d8b42a38668b471d/html5/thumbnails/1.jpg)
Юрий Василевский Руководитель группы разработки
Сервис пуш- сообщений
Я.Субботник, Минск, 31 августа, 2013
![Page 2: Юрий Василевский — Сервис пуш-сообщений Яндекса](https://reader033.vdocuments.net/reader033/viewer/2022042715/558b4299d8b42a38668b471d/html5/thumbnails/2.jpg)
2
Разработчики пуш-сервиса
• Роман Григорьев • Алексей Витенко • Юрий Василевский
![Page 3: Юрий Василевский — Сервис пуш-сообщений Яндекса](https://reader033.vdocuments.net/reader033/viewer/2022042715/558b4299d8b42a38668b471d/html5/thumbnails/3.jpg)
Содержание
Обмен сообщениями
Доставка push-сообщений
Сервис пуш-сообщений
![Page 4: Юрий Василевский — Сервис пуш-сообщений Яндекса](https://reader033.vdocuments.net/reader033/viewer/2022042715/558b4299d8b42a38668b471d/html5/thumbnails/4.jpg)
Обмен сообщениями
Обмен сообщениями
Доставка push-сообщений
Сервис пуш-сообщений
![Page 5: Юрий Василевский — Сервис пуш-сообщений Яндекса](https://reader033.vdocuments.net/reader033/viewer/2022042715/558b4299d8b42a38668b471d/html5/thumbnails/5.jpg)
5
Архитектура клиент-сервер
![Page 6: Юрий Василевский — Сервис пуш-сообщений Яндекса](https://reader033.vdocuments.net/reader033/viewer/2022042715/558b4299d8b42a38668b471d/html5/thumbnails/6.jpg)
6
Pull технология Плюсы: - Клиент инициирует
запрос - Легко реализовать - Синхронный,
асинхронный режим Минусы: - Постоянное интернет
соединение - Активный режим
работы - Высокое
энергопотребление
![Page 7: Юрий Василевский — Сервис пуш-сообщений Яндекса](https://reader033.vdocuments.net/reader033/viewer/2022042715/558b4299d8b42a38668b471d/html5/thumbnails/7.jpg)
7
Push технология Плюсы: - Сервер инициирует
запрос - Пассивный режим
работы - Квази многозадачность - Низкое
энергопотребление Минусы: - Требуется сервер
управления сообщениями
- Асинхронный режим
![Page 8: Юрий Василевский — Сервис пуш-сообщений Яндекса](https://reader033.vdocuments.net/reader033/viewer/2022042715/558b4299d8b42a38668b471d/html5/thumbnails/8.jpg)
8
Push сервер. Особенности
1. Высокие нагрузки (множество телефонов и приложений)
2. Гарантия доставки 3. Поддержка offline режима 4. Собственная платформа, лицензирование
(android: Google, Amazon, Samsung, Yandex) 5. API для внешних разработчиков
![Page 9: Юрий Василевский — Сервис пуш-сообщений Яндекса](https://reader033.vdocuments.net/reader033/viewer/2022042715/558b4299d8b42a38668b471d/html5/thumbnails/9.jpg)
9
Пуш технологии для разработчиков
1. 2003 март, RIM Blackberry push, email 2. 2008 июнь, Apple Push Notification Service,
apps 3. 2010 март, Microsoft Push Notifications 4. 2010 май, Google C2DM (андроид 2.2) 5. 2010 ноябрь, Nokia Notifications API 6. 2012 июнь, Google Messaging Service 7. 2012 декабрь, Amazon Device Messaging 8. Samsung Push Service – собственные нужды
![Page 10: Юрий Василевский — Сервис пуш-сообщений Яндекса](https://reader033.vdocuments.net/reader033/viewer/2022042715/558b4299d8b42a38668b471d/html5/thumbnails/10.jpg)
Обмен сообщениями
Доставка push-сообщений
Сервис пуш-сообщений
Доставка сообщений
![Page 11: Юрий Василевский — Сервис пуш-сообщений Яндекса](https://reader033.vdocuments.net/reader033/viewer/2022042715/558b4299d8b42a38668b471d/html5/thumbnails/11.jpg)
11
Общая схема взаимодействия
Backend = Удаленный сервер: - Генерация пуш-сообщения Push server: - Обработка пуш сообщений
бэкенда - Доставка пуш-сообщений
клиенту Push service: - Доставка пуш-сообщения
приложению
Push clinet + Application: - Реакция на пуш-сообщение
device
Backend
Push server
Push service
Push client, Applica5on
HTTP API
XMPP Intents
![Page 12: Юрий Василевский — Сервис пуш-сообщений Яндекса](https://reader033.vdocuments.net/reader033/viewer/2022042715/558b4299d8b42a38668b471d/html5/thumbnails/12.jpg)
app – имя пакета app_tokens - cписок токенов приложения (device+apk) ttl - время жизни сообщения в секундах data - payload нотификации в json формате
Backend. Генерация сообщения
POST /send HTTP/1.1 Content-Type: application/json Content-Length: 111 { "app": "сom.example.someapp", "app_tokens": ["TOKEN_1", "TOKEN_N"], "ttl": 86400, "data": {"key_1": "val_1", "key_n": "val_n"} }
![Page 13: Юрий Василевский — Сервис пуш-сообщений Яндекса](https://reader033.vdocuments.net/reader033/viewer/2022042715/558b4299d8b42a38668b471d/html5/thumbnails/13.jpg)
13
Регистрация пуш-клиента
Push client
Push service Push server
Backend
app_id, service_id
app_id
Push client
Push service Push server
Backend
app_token
app_token
app_token
![Page 14: Юрий Василевский — Сервис пуш-сообщений Яндекса](https://reader033.vdocuments.net/reader033/viewer/2022042715/558b4299d8b42a38668b471d/html5/thumbnails/14.jpg)
14
Посылка пуш-сообщения
Push client
Push service Push server
Backend
app_token, payload
app_id, payload
payload
Any request
![Page 15: Юрий Василевский — Сервис пуш-сообщений Яндекса](https://reader033.vdocuments.net/reader033/viewer/2022042715/558b4299d8b42a38668b471d/html5/thumbnails/15.jpg)
15
Пуш-клиент в действии
![Page 16: Юрий Василевский — Сервис пуш-сообщений Яндекса](https://reader033.vdocuments.net/reader033/viewer/2022042715/558b4299d8b42a38668b471d/html5/thumbnails/16.jpg)
16
Пуш-сервис в действии
![Page 17: Юрий Василевский — Сервис пуш-сообщений Яндекса](https://reader033.vdocuments.net/reader033/viewer/2022042715/558b4299d8b42a38668b471d/html5/thumbnails/17.jpg)
Обмен сообщениями
Доставка push-сообщений
Сервис пуш-сообщений
Сервис сообщений
![Page 18: Юрий Василевский — Сервис пуш-сообщений Яндекса](https://reader033.vdocuments.net/reader033/viewer/2022042715/558b4299d8b42a38668b471d/html5/thumbnails/18.jpg)
18
Служба пуш-сообщений
Push service
XMPP Push Server
Push client
Applica5on 1
Push client
Applica5on 2
Push client
Applica5on 3
read socket write socket
thread 1 thread 2
thread 4
thread 3
![Page 19: Юрий Василевский — Сервис пуш-сообщений Яндекса](https://reader033.vdocuments.net/reader033/viewer/2022042715/558b4299d8b42a38668b471d/html5/thumbnails/19.jpg)
19
Пуш-клиент
Broadcast receiver
IntentService
Push service
Backend applicaton
core
Пример реализации: https://code.google.com/p/gcm/
Helper
![Page 20: Юрий Василевский — Сервис пуш-сообщений Яндекса](https://reader033.vdocuments.net/reader033/viewer/2022042715/558b4299d8b42a38668b471d/html5/thumbnails/20.jpg)
20
Сервис пуш-сообщений. Требования
-‐ Обеспечить безопасное соединение -‐ Работать непрерывно 24/7 -‐ Обрабатывать 100% входящих сообщений
![Page 21: Юрий Василевский — Сервис пуш-сообщений Яндекса](https://reader033.vdocuments.net/reader033/viewer/2022042715/558b4299d8b42a38668b471d/html5/thumbnails/21.jpg)
21
Сервис пуш-сообщений XMPP Service - Подключение к серверу - Отправка и прием сообщений XMPP Service Starter - Перезапуск сервиса CommandIntentService - Обработка запросов
приложений - Организация очереди
запросов Intent repeater - Повторная отсылка запросов
XMPP Service
XMPP Server
read socket write socket
Command IntentService
Applica5ons
Intent repeater
starter
![Page 22: Юрий Василевский — Сервис пуш-сообщений Яндекса](https://reader033.vdocuments.net/reader033/viewer/2022042715/558b4299d8b42a38668b471d/html5/thumbnails/22.jpg)
22
public class NullTrustManager implements X509TrustManager {! @Override! public void checkClientTrusted(...) throws CertificateException {! }!! @Override! public void checkServerTrusted(...) throws CertificateException {! }!! @Override! public X509Certificate[] getAcceptedIssuers() {! return null;! }!}!
Безопасность. SSL. Trust Manager
-‐ Безопасное соединение – SSL & TrustManager -‐ Нет сертификата на сервере -‐ Null Trust Manager
![Page 23: Юрий Василевский — Сервис пуш-сообщений Яндекса](https://reader033.vdocuments.net/reader033/viewer/2022042715/558b4299d8b42a38668b471d/html5/thumbnails/23.jpg)
23
Работать 24/7. XMPP Service Starter
-‐ Играть по своим правилам как системный сервис -‐ Система убивает – Service START_STICKY -‐ API < 11 /android 3.0 – ac5on CONNECTIVITY_CHANGE -‐ API 12 – системные сообщения доходят только
активным (Intent.FLAG_INCLUDE_STOPPED_PACKAGE) -‐ BOOT_COMPLETED – приходит всем приложениями
![Page 24: Юрий Василевский — Сервис пуш-сообщений Яндекса](https://reader033.vdocuments.net/reader033/viewer/2022042715/558b4299d8b42a38668b471d/html5/thumbnails/24.jpg)
24
Текущее состояние
Служба пуш сообщений находится в beta тестировании Пуш сервис поставляется вместе с Я.Стор 25 февраля – официальный релиз Я.Стор Единственный клиент - Яндекс.Стор 400 000 пользователей по всему миру