Данные – это любые объекты системы Directum RX или Directum, доступные в мобильном приложении, например папки, задания, задачи, документы и пользователи.
Если у вас есть доступ к сети, вы можете загрузить эти данные из системы в любой момент. Но если сеть нестабильна, важно как можно дольше поддерживать актуальность загруженных в мобильные приложения данных. Например, чтобы иметь возможность прочитать в салоне самолета последнюю версию документа или ознакомиться перед совещанием с материалами, которые недавно прислали.
В статье рассмотрим, как в Solo и Jazz поддерживается актуальность данных:
Сервер NOMAD периодически проверяет содержимое папок текущего пользователя: «Входящие», «Исходящие», «Избранное», «Общая», «Личное», а также папок потока и «Входящие» замещаемых пользователей. По умолчанию проверка запускается через каждые 5 минут, однако периодичность можно изменить в настройках сервера. Цель такой проверки – выяснить, есть ли изменения и нужно ли запускать обновление данных.
Дополнительно в Directum RX сервис WorkflowBlockService моментально передаёт серверу NOMAD сообщение о том, что пользователь получил новое задание.
Что происходит далее, зависит от активности мобильного приложения:
Приложение Solo или Jazz активно: пользователь работает в нём в текущий момент. Скорее всего, данные уже актуальны, так как приложение обновляет их при запуске. Если в ходе работы поступают новые данные, то приложение получает push-уведомление и запрашивает их у сервера NOMAD.
Приложение Solo или Jazz не активно: пользователь не работает в нём в текущий момент и фоновые процессы приложения не запущены. Такая ситуация возможна, если для приложения запрещена фоновая активность или пользователь перезагрузил смартфон, а потом не запустил приложение. В этом случае Solo или Jazz не получает push-уведомление и не запрашивает обновление. Чтобы всегда иметь под рукой актуальные данные, рекомендуем разрешить автозапуск для Solo и Jazz и не ограничивать их фоновую активность.
Приложение Solo или Jazz активно в фоне: пользователь не работает в нём в текущий момент, экран приложения не отображается на экране устройства, но процесс приложения запущен. В этом случае после получения push-уведомления приложение обновляет данные незаметно для пользователя. При следующем входе в Solo или Jazz они будут актуальны. А если в полученном пакете есть новые задания, то пользователь это легко заметит: на панели быстрого доступа в шторке устройства отобразится уведомление.
Теоретически, мобильное приложение может работать в фоновом режиме бесконечно долго, а значит, данные в нём всегда будут актуальными. Если бы не одно НО, о котором чуть позже.
Вернемся к серверу NOMAD. Итак, ранее он отправил push-уведомление для мобильного приложения, о том что есть новые данные. Когда Solo или Jazz обращается за ними, происходит следующее:
А какую роль в этом процессе играет работа приложения в фоне?
Итак, ещё немного теории. Работа приложения в фоне имеет свои плюсы и минусы.
Что хорошо: отображаемые данные всегда актуальны. Приложение незаметно обрабатывает их и при необходимости обновляет.
Что настораживает: пользователь не контролирует фоновую активность. Она расходует заряд батареи, и в некоторых случаях мобильный трафик. Поэтому в последних версиях операционных систем для мобильных устройств работа приложений в фоне ограничивается все больше и больше.
Система рассматривает фоновые уведомления как низкоприоритетные: вы можете использовать их для обновления содержимого вашего приложения, но система не гарантирует их доставку. Кроме того, система может ограничивать доставку фоновых уведомлений, если общее количество становится чрезмерным. Количество фоновых уведомлений, разрешенных системой, зависит от текущих условий, но не пытайтесь отправлять более двух или трех в час.
Таким образом, пользователи, которые редко запускают Solo и Jazz, могут редко получать уведомления о новых заданиях и в результате всё реже заходить в приложения. Это приводит к тому, что в итоге сервер NOMAD присылает им большую порцию новых и измененных данных, сформированную за длительный период нахождения офлайн. Для его загрузки требуется больше времени.
Именно время, которое в итоге требуется на обновление, играет важную роль в вопросе удобства работы с Solo и Jazz на последних версиях мобильных операционных систем.
Мы перепробовали много разных механизмов, чтобы оптимизировать работу в фоне и обеспечить оперативное уведомление пользователей об обновлении данных. К сожалению, ни один из них не был результативным. Фоновая загрузка данных по-прежнему может работать у тех, кто регулярно работает с приложением, однако гарантировать ее стабильность мы не можем.
Поэтому мы подошли к задаче с другой стороны и поработали над улучшением механизма обновления данных во время активной работы приложения. Для этого:
В первую очередь ускорили получение наиболее важных для работы пользователя данных: новых заданий и вложенных в них документов. Благодаря этому пользователь может работать с ними почти сразу после входа в приложение. Менее приоритетные изменения, например появление новой ветки переписки или правки в тексте документа в ранее полученном задании, загружаются постепенно в ходе активной работы.
Следующим шагом планируем переработать механизм доставки push-уведомлений о приходе новых заданий. Гарантировать их стабильную доставку мы сможем за счет перехода на другой тип уведомлений. При нажатии на такое уведомление будет происходить запуск приложения и обновления данных. Об этом выйдет отдельная статья.
Итак, сравним.
Как было. Когда сервер NOMAD находит новое задание, он отправляет push-уведомление в Solo или Jazz. Мобильное приложение обращается за данными, и сервер NOMAD сканирует все папки пользователя, помещает модели новых и изменившихся объектов в пакет для отправки на устройство. Если у пользователя накопилось много изменений, этот пакет получится довольно большим и будет отправляться в приложение частями. Пользователь получает новое задание, когда загружается весь пакет данных.
Как стало:
Этот механизм уже реализован в новой версии NOMAD 2.19. Она совместима Directum 5.2-5.8 и вошла в состав Directum RX 4.2.
Какое именно ускорение даст новинка и какой будет эффект для пользователя, однозначно сказать нельзя. Оно зависит от ряда факторов:
Ускорение обновления будет наиболее заметно, если требуется разово загрузить большой пакет изменений. Например, если поток входящих большой, пользователь редко заходит в приложение, и оно не работает в фоне.
Если ситуация обратная, то эффект будет менее выражен. По нашим тестовым данным, если заданий немного, фоновое обновление работает стабильно, и пользователь часто запускает приложение, обновление данных ускорятся в 3 раза.
Желаем вам быстрого получения новых заданий в Solo и Jazz! А рассказ про обновление данных продолжим в следующих версиях.
Следующим шагом планируем переработать механизм доставки push-уведомлений о приходе новых заданий.
А статья вышла в итоге?
Сергей, механизм доставки push-уведомлений переработали почти сразу же. Они теперь приходят независимого от того запущено приложение в фоне или нет. А вот статью так и не написали. Нужна она?
Очень бы хотелось увидеть свежую статью
Авторизуйтесь, чтобы написать комментарий