SIP и Push уведомления. Опыт с Android устройствами
Аннотация.Современному сотруднику важно оставаться на связи, даже если он находится вне офиса и не может ответить по настольному телефону или с рабочего компьютера. Для этого все чаще используются приложения корпоративной телефонии на смартфонах и ноутбуках. Чтобы такие мобильные клиенты работали стабильно, может потребоваться важный элемент — сервис push-уведомлений.В этой статье я поделюсь опытом построения архитектуры и запуска тестовой системы с сервисом push-уведомлений для приложения телефонии на базе Android. Обратите внимание, что материал представляет собой архитектурный обзор и описание реального опыта автора, а не пошаговую инструкцию по настройке.Push уведомления.В какой-то момент производители мобильных операционных систем и платформ (в основном смартфонов) начали внедрять механизмы приостановки неактивных приложений. Это было сделано с целью увеличения срока службы аккумуляторных батарей. При переходе в такой спящий режим постоянные TCP-подключения между приложением и сервером принудительно разрываются. Более того, само приостановленное приложение больше не может самостоятельно возобновить работу, используя внутренние таймеры или ожидая входящий сетевой трафик от сервера. Такой сценарий использования приложения, конечно же, не предполагался изначальным стандартом RFC 3261 (SIP), который был выпущен еще в 2002 году. На практике это выражается в том, что заблокированный в текущее время смартфон не сможет принять входящий вызов, т.к. приложение не сможет принять входящий INVITE от сервера. На сегодняшний день в такой ситуации для пробуждения приложения используется сервис push-уведомлений (Push Notification Service, сокращенно PNS). PNS для SIP приложений был описан в RFC 8599 (SIP PUSH) и опубликован в мае 2019 г. Согласно этому RFC PNS определяется как служба, которая отсылает сообщения к пользовательскому приложению от другого приложения для того, чтобы перевести приложение из приостановленного состояния в активное, а сами такие сообщения называются push-уведомлениями. В зависимости от приложения push-уведомления при этом могут содержать полезные данные. PNS бывают открытыми, основанными на стандартном механизме, определённом в RFC 8030, и закрытыми. Например, PNS для iOS и Android устройств являются закрытыми – это, соответственно, сегодня Apple Push Notification service (APNs) и Firebase Cloud Messaging (FCM) service. Читать далее