Найти в Дзене

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

Наверняка вы замечали, что у вас на телефоне уведомления либо приходят с задержкой, либо уведомление от приложения пришло, а приложение еще обновляет информацию. Почему так происходит? Ответ кроется в принципе работы систем Push-уведомлений - а он у всех примерно одинаков. Рассмотрим вначале первую из современных служб. Apple Push Notification Service (2009) Первая служба Push-уведомлений была создана Apple в 2009 году с выходом iOS 3. Разработчикам приложений ее функция показалась очень интересной, ведь она заметно сократила расход батареи по сравнению с уведомлениями, использующими работу приложений в фоне. Первым делом разработчик уведомляет Apple о намерении использовать ее сервер для отправки уведомлений пользователям. При установке приложения у пользователя запрашивается разрешение на получение уведомлений. При согласии приложение отправляет уникальный идентификатор устройства и код приложения на сервер уведомлений. При необходимости отправить новое уведомление для пользователя р
Оглавление
Источник обложки: affiliatevalley.com
Источник обложки: affiliatevalley.com

Наверняка вы замечали, что у вас на телефоне уведомления либо приходят с задержкой, либо уведомление от приложения пришло, а приложение еще обновляет информацию. Почему так происходит?

Ответ кроется в принципе работы систем Push-уведомлений - а он у всех примерно одинаков. Рассмотрим вначале первую из современных служб.

Apple Push Notification Service (2009)

Первая служба Push-уведомлений была создана Apple в 2009 году с выходом iOS 3. Разработчикам приложений ее функция показалась очень интересной, ведь она заметно сократила расход батареи по сравнению с уведомлениями, использующими работу приложений в фоне.

Источник: medium.com
Источник: medium.com

Первым делом разработчик уведомляет Apple о намерении использовать ее сервер для отправки уведомлений пользователям.

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

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

Такой принцип заметно экономичнее в плане потребления трафика и батареи, чем если бы приложение постоянно общалось с сервером разработчика напрямую, используя фоновые процессы.

P.S. Для телефонов с хактивацией (обходом блокировки) уведомления не работают, поскольку сервер уведомлений не работает с заблокированными устройствами. Так что даже не пытайтесь завести их :D

А у Android как дела обстоят?

В Android реализован схожий принцип еще в Android 2.2 с появлением Cloud to Device Messaging (позже измененной на Google Cloud Messaging, затем на Firebase Cloud Messaging - FCM).

en.wikipedia.org/wiki/Android_Cloud_to_Device_Messaging
en.wikipedia.org/wiki/Android_Cloud_to_Device_Messaging

Однако здесь он реализован несколько иначе: при установке и согласии на получение уведомлений приложение отправляет запрос регистрации в FCM, затем устройству выдается код в системе FCM, который будет использоваться разработчиком для отправки конкретному пользователю уведомлений.

При отправке новой информации разработчик посылает запрос, состоящий из указанного кода и информации, в службу аутентификации FCM, которая затем проверяет запрос и выдает ему код авторизации. Затем оба кода отправляются в службу FCM для отправки на устройство.

А если коротко на примере?

Кристина отправила Серёже сообщение в VK: "Пошли гулять!"

VK первым делом узнает, смотрит ли Серёжа в данный момент сообщения от Кристины. Не смотрит? VK направляет зашифрованное послание Кристины в Америку, а затем оттуда оно идёт на телефон Сергея. Сергей увидит его на экране блокировки в расшифрованном виде.

Смотрит? Ну и незачем уведомлять его, лишний раз Америку просить об этом.