Профессиональный фестиваль для тех, кто делает интернет
Фестиваль РИТ++ 2016 завершён. Изучайте презентации, смотрите фотографии и ждите видео :)

Удобный и расширяемый роутинг в iOS-приложенииТехнологии iOS

Доклад принят в программу конференции
Тимур Юсипов

Начал заниматься разработкой под iOS в 2013 году на последнем курсе института. Первое время работал в небольших компаниях и командах, решал разные задачи, что помогло мне быстро набраться опыта и освоить много полезных навыков.

В команде Авито оказался в 2015 году и спустя годы работы в компании смог прочувствовать на себе все прелести и особенности работы в продуктовой компании.

Первое время разработчиков было немного, и мы вместе пилили большинство фич нашего приложения. Со временем разработчиков стало больше, а зоны ответственности каждого из них стали четче очерчены.

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

В свободное время занимаюсь спортом: футболом, пляжным волейболом, роликами и коньками, велосипедом. Люблю путешествия и походы. Два года назад проехал на велосипеде по северу Италии 550км, а в этом году проехал на коньках 150км по Байкалу вокруг острова Ольхон, ночуя в палатке в 30-градусный мороз.

В своём докладе я расскажу о подходе к построению навигации в больших приложениях на примере демо-проекта, приближенного по архитектуре к приложению Avito.

Данная архитектура позволяет поддерживать DeepLink’и и iPad в существующем приложении, показывать плашки Push-уведомлений в верхнем видимом модуле, совершать переходы из верхнего видимого модуля, вызванные корневым модулем приложения, а также централизовано управлять анимацией переходов.

Разработанная нами навигация оборачивает UIKit для совершения переходов в засахаренном и декларативном стиле. Использование этой системы позволило снизить связанность кода для повышения его переиспользуемости и тестируемости, а также выработать общие стандарты к построению стека навигации. Наиболее хорошо эта система сочетается с архитектурой VIPER, но может использоваться и без нее.

По ходу доклада я также расскажу о том, как выглядела навигация в приложении Avito раньше; о том, какой она стала с началом использования архитектуры VIPER; о проблемах, которые мы увидели, и об итоговом решении. Также вкратце рассмотрим, что же скрывается под капотом у этой системы.

Другие доклады секции Технологии iOS