Как работают пуш-уведомления
medium

Как работают пуш-уведомления

Простое объяснение простой технологии

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

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

Как работают пуш-уведомления
Пример пуш-уведомления Сбербанка

Что особенного в пушах

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

Сами приложения могли рисовать какие угодно уведомления — но только пока они работали. И дизайн уведомлений мог быть любым. Никакого централизованного управления не было. 

Потом в Blackberry, а позднее во взломанной пиратской iOS появился единый сервис доставки сообщений на экран. Это была единая «труба», по которой любое приложение могло отправить вам сообщение. Это и есть Push-уведомления: ещё один канал, по которому приложение может с вами поговорить, но не внутри себя, а отдельно от себя на уровне операционной системы.

Как работают пуш-уведомления

Что для этого нужно

Чтобы пуш-уведомления заработали, нам понадобится много всякого разного.

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

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

Сервер устройства — у Apple и у Google свои серверы, которые управляют уведомлениями на устройствах с iOS и Android. Они отвечают за все уведомления, которые вы получаете на телефоне, следят за настройками безопасности и взаимодействуют с серверами разработчиков.

Идентификатор устройства (токен) — служебный набор букв и цифр, по которому сервер устройства отличает один телефон от другого.

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

Приложение и уведомления

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

Когда мы ставим приложение с поддержкой таких уведомлений, происходит следующее:

  1. Приложение сообщает системе, что оно может получать пуши.
  2. Система отправляет токен на сервер устройства (в Эпл или в Гугл). 
  3. Теперь сервер знает, что можно отправлять пуш-уведомления в приложение на это конкретное устройство.

Как работают пуш-уведомления

Регистрация приложения и сервера разработчика

Изначально пуши генерирует не само приложение, а сервер разработчика. Например, если вы пользуетесь «Телеграмом», где-то в интернете есть специальный сервер «Телеграма», который отвечает за пуши.

Сервер разработчика нужно заранее зарегистрировать на сервере устройства — как бы подружить посредников. Сервер разработчиков знает «что отправить», а сервер устройства — «кому». Эти два сервера должны друг друга признать и наладить канал связи. 

Интересно, что сервер разработчика не имеет прямого доступа к телефонам получателей. Вместо этого ему выдают специальные анонимные внутренние токены, которые не совпадают с токенами устройства. Грубо говоря: 

  1. Сервер устройства знает, что у Васи Иванова телефон с токеном 12345.
  2. Но сервер устройства не скажет этот токен серверу разработчика. 
  3. Вместо этого сервер устройства запомнит, что токену 12345 соответствует внутренний токен abcde
  4. Именно этот токен abcde сервер устройства сообщит разработчику. Мол, «У меня есть пользователь с токеном abcde, если надо — могу ему отправить пуш. Но кто это — я тебе не скажу». 
  5. И уже этот код abcde использует разработчик.
Как работают пуш-уведомления

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

Если разработчик хочет отправить вам новое рекламное сообщение о скидках или акциях, он это делает через свой сервер. 

Сервер разработчика берёт сообщение, прикрепляет к нему ваш токен и отправляет всё это на сервер устройства. Сервер устройства действует так: 

  1. Смотрит, есть ли сервер разработчика в доверенном списке.
  2. Если есть — проверяет, есть ли у него вообще такой токен и можно ли на него отправить пуш.
  3. Если всё в порядке — отправляет пуш-уведомление на телефон.
  4. Служба уведомлений на телефоне получает пуш, смотрит, какому приложению оно предназначено, и сразу же отправляет его туда.
  5. Приложение смотрит в свои настройки и решает — показывать пуш или нет. 
  6. Если уведомления включены — в этот же момент мы увидим его на экране телефона.

Вот так всё и работает.

Как работают пуш-уведомления

К чему это

Недавно в «Телеграме» посыпались какие-то настройки пушей, и если у вас стояли на мьюте какие-то каналы, вам могли перестать приходить вообще какие-либо сообщения об их.

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

Подписывайтесь на нас в «Телеграме», раз такое дело: t.me/thecodemedia 

Художник:

Даня Берковский

Корректор:

Ирина Михеева

Вёрстка:

Кирилл Климентьев

Получите ИТ-профессию
В «Яндекс Практикуме» можно стать разработчиком, тестировщиком, аналитиком и менеджером цифровых продуктов. Первая часть обучения всегда бесплатная, чтобы попробовать и найти то, что вам по душе. Дальше — программы трудоустройства.
Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию Получите ИТ-профессию
Вам может быть интересно
medium