Выполнение приложения согласно техническому заданию Тестовое приложение
Данное приложение состоит из двух экранов:
- Отображение прогноза погоды для текущего местоположения пользователя
- Возможность добавления/редактирования комментария к текущему городу и его погодным условиям
Приложение работает с нативным модулем CoreLocation
для получения геопозиции пользователя и определения города и страны.
Приложение работает с сетью: Запрос на получение прогноза погоды средствами сервиса "openweathermap"
- Приложение полностью написано без использования сторибордов (все реализовано в ксибах).
- В приложении нет ни одной зависимости (cocoapods, carthage, spm).
- Работа с сетью реализована исключительно нативными средствами.
- В приложении реализована адаптация под разные размеры экранов (от 4 до 6 дюймов).
- Обработано нажатие вне поля ввода для скрытия клавиатуры.
- Реализованы индикаторы загрузки для понимания процесса пользователем (activity indicator).
- Использованы расширения для кастомизации настроек: UIViewController, UIXib, UserError.
Приложение разделено на модули (в данном случае, это модуль прогноза и модуль добавления комментария). Каждый модуль состоит из:
Элемент, который отвечает за создание модуля, подготовку модели, подготовку вью, связывание их, имеет публичное свойство 'view', которое отдается вызывающему модулю, для правильной подготовке и показу модуля.
Может включать в себя логику интерактора, презентера, вью модели и пр. (если таковые не представлены в проекте или выбран сокращенный архитектурный подход). Основной задачей модели является подготовка данных, работа с ними, передача данных о вью.
Является классическим элементом отображения данных и работе с действиями пользователя. Имея связь с моделью, динамически реагирует на изменения модели, обновляя свое состояние, обращается к модели если контекст (действия пользователя) требуют обновления (изменения) данных.
Что могло бы быть дополнительно реализовано:
Локализация приложения.
Реализация унифицированного доступа к строкам и ресурсам приложения (R.swift).
Добавлены анимации и плавные переходы.
Возможность загрузки уникальных фотографий местоположения пользователя с помощью сервиса google places API
.
Хранение перечня пользовательских комментариев с ключом по городу, а так же с сохранением даты добавления.
Реализация БД для хранения данных.
Реализция keychain для хранения данных и синхронизации между устройствами.
Возможность поделиться текущими данными посредством социальных сетей.
Реализация онбординга для пользователя, с описанием возможностей приложения.
Реализация отображения прогноза на несколько дней вперед.
Поддержка нескольких городов с возможностю просматривать актуальные погодные данные.
Дополнительно можно ознакомиться с погодным приложением такого же типа в этом репозитории.