РОСА Push клиент
Требования для программного компонента
Приложения в РОСА Мобайл могут отправлять сообщения на другие устройства через Push сервер. РОСА Push компонент используется для обработки таких сообщений, полученных от Push сервера
РОСА Push выполняет следующие задачи:
- Регистрация приложений на Push сервере и в базе данных Push демона
- Получение и обработка сообщений от Push сервера
- Создание и отправка всплывающих нотификаций для отображения на экране устройства
- Управление созданными нотификациями
Архитектурное описание программного компонента
РОСА Push компонент состоит из двух демонов, работающих друг с другом:
- Push демон взаимодействует с Push сервером и клиентами, получает сообщения и запросы, отправляет их Notification демону
- Notification демон формирует нотификации из полученных сообщений, отправляет их на отображение и управляет ими через команды (названные операциями)
Всю работу РОСА Push можно разделить на 3 части.
Регистрация приложения
При регистрации приложения выпоняется запись данных приложения в базу данных Push демона и запрос Push токена. Push токен формируется на стороне Push сервера и позволяет однозначно идентифицировать, какому приложению адресовано сообщение. Все Push токены хранятся в базе данных Push демона, а также отправляются клиенту после регистрации. Если регистрация приложения уже была проведена, то при повторной регистрации данные приложения в базе данных обновляются.

Отправка сообщения
При получении сообщения от Push сервера в Push демоне происходит определение правильного приложения по Push токену и получение ранее записанных данных этого приложения, таких как действия по нажатию на нотификацию, список поддерживаемых операций, иконка приложения. Эти данные вместе с самим сообщением передаются в Notification демон, который по ним формирует нотификацию и отправляет ее в Plasma Notification Manager. Здесь также происходит привязка каждой нотификации к сигналу о поступлении новых операций.

Обработка операции
В Notification демоне все открытые на текущий момент нотификации привязаны к получению сигнала о новых операциях, то есть находятся в режиме ожидания операций. Когда нотификация получает сигнал о новой операции, то проверяет, предназначалась ли эта операция для нее. Для этого проверяется соответствие приложения, которое отправило операцию, и соответствие значения операции значению из списка поддерживаемых операций нотификации. Список этих значений для нотификации создается в Push демоне при получении сообщения от сервера, а формируется он на этапе регистрации приложения. Если операция соответствует нотификации, то она выполняется. Например, операция closeOnValue закрывает нотификацию при совпадении значений операции и нотификации.

Демонстрация реализованного компонента
РОСА Push состоит только из демонов и сам по себе не имеет визуального отображения. Результат его работы можно увидеть в виде всплывающих нотификаций.
Формат нотификаций
Нотификации РОСА Push являются стандартными для текущей оконной системы, то есть такими же, как и сообщения о пропущенном звонке или непрочитанной смс. Но имеется ряд особенностей, присущих именно Push нотификациям.
Общее описание нотификаций и особенностей РОСА Push:
- При получении нотификация отображается либо в верхней части телефона и спустя некоторое время исчезает, либо в выдвигаемой сверху шторке и не исчезает по таймауту, либо на экране скринлока и также не исчезает
- Все полученные нотификации, включая РОСА Push, формируют общий список, который можно прокручивать, находясь в шторке или в скринлоке
- Нотификации РОСА Push в отличие от других компонент не имеют одной общей иконки, а для отображения внутри нотификации и в статус баре сверху используют иконки приложений, для которых нотификация была получена
- В общем виде нотификации могут содержать (но не обязательно) кнопки и картинки. Нотификации РОСА Push поддерживают до двух кнопок и не поддерживают картинки
- При нажатии на нотификацию или на ее кнопки могут происходит различные действия. Нотификации РОСА Push в качестве действий поддерживают запуск приложения с различными аргументами. При нажатии на саму нотификацию запускается приложение без аргументов, при нажатии на кнопки 1 и 2 - приложение со списками аргументов 1 и 2

Программа тестирования
Для тестирования нужно использовать два устройства (в рамках представленного примера и предназначения РОСА Push). На одном из устройств должна быть установлена РОСА Мобайл для приема сообщений от Push сервера. На другом - как минимум приложение, которое умеет отправлять сообщения Push серверу РОСА Мобайл. Желательно, чтобы это тоже было устройство с установленной РОСА Мобайл.
Для описания процесса тестирования за пример взято приложение РОСА Мессенджер. Для тестирования других приложений нужно применить соответствующий процесс отправки сообщений Push серверу и операций для управления нотификациями.
| Этап | Действие | Результат | Комментарий |
|---|---|---|---|
| 1. Подготовка | На устройстве получателя зайди в POCA Мессенджер, чтобы зарегистрировать приложение в POCA Push | – | Здесь и далее пропущен этап регистрации и добавления контакта в POCA Мессенджер |
| На устройстве отправителя зайди в POCA Мессенджер, написать и отправить сообщение получателю | Сообщение отправлено и перешло в список отправленных сообщений с соответствующей галочкой | Для всех этапов тестирования нужно повторять отправку сообщений | |
| 2. Тестирование получения и внешнего вида нотификаций | На устройстве получателя дождаться появления нескольких нотификаций. Осмотреть их внешний вид. | Нотификации получены и отобразились на экране. Нотификации имеют заголовок с именем отправителя, текст сообщения и иконку приложения. Могут иметь кнопки, если приложение регистрирует их наличие | - |
| 3. Тестирование действий нотификации | Нажать на нотификацию | Открылось приложение РОСА Мессенджер | Наличие кнопок и действия на их нажатия могут меняться в процессе разработки приложения РОСА Мессенджер |
| Нажать на левую кнопку нотификации (при наличии) | Открылось приложение РОСА Мессенджер на странице чата с отправителем | ||
| Нажать на правую кнопку нотификации (при наличии) | Открылось приложение РОСА Мессенджер и совершен исходящий звонок отправителю | ||
| 4. Тестирование операций с нотификациями | При наличии нотификаций от разных отправителей зайти в РОСА Мессенджер и открыть чат с одним из них. | При открытии чата с контактом РОСА Мессенджером отправляется операция в РОСА Push на закрытие всех нотификаций от этого отправителя (т.к. сообщения становятся прочитанными). Результатом тестирования будет то, что при заходе в чат с контактом нотификации от этого отправителя удаляются, а ото всех остальных нет | Если создать групповой чат с тем же отправителем, то сообщения в этом чате будут считаться, полученными от отдельного отправителя. Таким образом можно с одним реальным отправителем проверить сообщения от разных отправителей |