Реализовано в версии 8.3.6.182 мобильной платформы.
В платформе 1С:Предприятие и в мобильной платформе мы реализовали механизм push-уведомлений и локальных уведомлений.
Push и локальные уведомления это прежде всего способ проинформировать пользователя о событии. Причём событие это может произойти даже в тот момент, когда мобильное приложение находится в фоновом режиме (запущено, но неактивно), либо когда оно просто выгружено из памяти и не исполняется.
Локальные уведомления это удобный инструмент для реализации разнообразных напоминаний, которые мобильное приложение устанавливает само для себя. Напоминаний, которые могут сработать уже в тот момент, когда приложение не активно.
Создание локального уведомления в мобильном приложении может выглядеть, например, следующим образом:
А обработка локального уведомления в мобильном приложении может выглядеть так:
Локальные уведомления могут быть моментальными (отображается сразу), запланированными (отображается в указанное время) или периодическими (отображается снова по истечении указанного периода).
С помощью push-уведомлений можно реализовывать сценарии взаимодействия основного и мобильного приложений по инициативе основного приложения. Когда в основном приложении возникает некоторое событие, приложение рассылает push-уведомления получателям - мобильным приложениям.
Дальше возможны два сценария взаимодействия. Во-первых, информацию, связанную с событием, можно передать в самом push-уведомлении, но надо помнить, что его размер ограничен.
Поэтому если нужно передать значительный объем данных, можно использовать другой сценарий взаимодействия. В нём push-уведомление используется только как сигнал мобильному приложению о том, что ему необходимо связаться с основным приложением. Мобильное приложение, получив push-уведомление, самостоятельно связывается с основным приложением тем способом, которым оно обычно это делает. Например, через веб- или http-сервис. И получает те данные, которые основное приложение подготовило для него.
Для передачи уведомлений от отправителя к получателю механизм push-уведомлений использует сторонний компонент - сервис доставки уведомлений. Мы реализовали поддержку двух таких сервисов:
В результате общая схема взаимодействия выглядит следующим образом:
Например, отправка push-уведомления в основном приложении может выглядеть следующим образом:
А получение push-уведомления в мобильном приложении на Android может выглядеть так:
Если мобильное приложение активно, то уведомление сразу доставляется в приложение. Если в приложении подключен обработчик уведомлений, то он исполняется. В этом обработчике можно запросить у основного приложения большой пакет данных, если в этом есть необходимость. Потому что размер push-уведомления ограничен, и передавать значительные объёмы данных в нём самом невозможно.
Если мобильное приложение работает в фоновом режиме (неактивно) или вообще не исполняется (выгружено из памяти), то уведомление отображается операционной системой. При этом используется звуковое оповещение и наклейка. В iOS наклейка будет установлена у иконки мобильного приложения на домашнем экране, а в Android она задаёт число, которое будет отображено в сообщении на панели уведомлений. После того, как пользователь нажмёт на уведомление, будет активизировано (или запущено) мобильное приложение, и будет выполнен (если он подключён) обработчик уведомлений.