Перейти к содержанию

Жизненный цикл и навигация нативных мобильных приложений

Требования применяются к состоянию и навигации приложений iOS и Android. Уровни обязательности определены в корневом README.md.

MOB-PLAT-005. Восстановление UI state

Уровень: MUST

Применяется к: background, process death и configuration change

Значимое незавершённое состояние должно восстанавливаться из минимального сериализуемого state. SwiftUI/Compose view state не должен быть единственным источником результата операции. После восстановления должны повторно проверяться сессия и доступ.

Обоснование

ОС может уничтожить процесс без пользовательского завершения сценария.

Проверка

  • process death и relaunch;
  • Android configuration change;
  • тест истёкшей сессии при restore.

Исключения

Чувствительное одноразовое состояние должно безопасно сбрасываться.

MOB-PLAT-008. Контракт системной навигации

Уровень: MUST

Применяется к: экрану, modal-состоянию или пользовательскому сценарию с переходом назад либо закрытием

Проект должен определять логический результат системного Back, платформенного жеста, прикладной кнопки возврата и закрытия modal-состояния. Эквивалентные действия не должны приводить к разным обязательным эффектам. Возврат, восстановление state и повторное вычисление UI не должны повторно запускать необратимую операцию.

После входа через deep link или notification back stack должен закрываться либо вести только к объявленному доступному родительскому состоянию. Он не должен раскрывать экран предыдущего аккаунта, защищённое состояние после logout или маршрут, доступ к которому не прошёл повторную проверку.

Для несохранённого пользовательского ввода контракт должен выбирать сохранение черновика, подтверждённый отказ от изменений либо явное предупреждение перед потерей. Уход, background и process death должны сохранять или удалять такой ввод согласно одному объявленному lifecycle.

Обоснование

Платформа может восстановить или закрыть экран другим путём, чем прикладная кнопка, а ошибочный back stack способен повторить эффект или показать защищённые данные.

Проверка

  • UI-тест системного Back, жеста и прикладной кнопки;
  • cold/warm deep link и notification с последующим возвратом;
  • тест logout или смены аккаунта при существующем back stack;
  • тест несохранённого ввода при уходе, background и process death;
  • проверка отсутствия повторного необратимого эффекта после restore.

Исключения

Одноэкранное приложение без вложенной навигации MAY закрываться системным Back без родительского маршрута; требования к защищённому состоянию, вводу и необратимому эффекту сохраняются.