Удобный и расширяемый роутинг в iOS-приложенииТехнологии iOS
Начал заниматься разработкой под iOS в 2013 году на последнем курсе института. Первое время работал в небольших компаниях и командах, решал разные задачи, что помогло мне быстро набраться опыта и освоить много полезных навыков.
В команде Авито оказался в 2015 году и спустя годы работы в компании смог прочувствовать на себе все прелести и особенности работы в продуктовой компании.
Первое время разработчиков было немного, и мы вместе пилили большинство фич нашего приложения. Со временем разработчиков стало больше, а зоны ответственности каждого из них стали четче очерчены.
Последний год моя деятельность в основном была связана с общеплатформенными задачами, направленными на повышение качества архитектуры проекта, на производительность приложения, а также на помощь другим разработчикам в эффективном решении их задач.
В свободное время занимаюсь спортом: футболом, пляжным волейболом, роликами и коньками, велосипедом. Люблю путешествия и походы. Два года назад проехал на велосипеде по северу Италии 550км, а в этом году проехал на коньках 150км по Байкалу вокруг острова Ольхон, ночуя в палатке в 30-градусный мороз.
В своём докладе я расскажу о подходе к построению навигации в больших приложениях на примере демо-проекта, приближенного по архитектуре к приложению Avito.
Данная архитектура позволяет поддерживать DeepLink’и и iPad в существующем приложении, показывать плашки Push-уведомлений в верхнем видимом модуле, совершать переходы из верхнего видимого модуля, вызванные корневым модулем приложения, а также централизовано управлять анимацией переходов.
Разработанная нами навигация оборачивает UIKit для совершения переходов в засахаренном и декларативном стиле. Использование этой системы позволило снизить связанность кода для повышения его переиспользуемости и тестируемости, а также выработать общие стандарты к построению стека навигации. Наиболее хорошо эта система сочетается с архитектурой VIPER, но может использоваться и без нее.
По ходу доклада я также расскажу о том, как выглядела навигация в приложении Avito раньше; о том, какой она стала с началом использования архитектуры VIPER; о проблемах, которые мы увидели, и об итоговом решении. Также вкратце рассмотрим, что же скрывается под капотом у этой системы.