Skip to content

avito-tech/iOS-trainee-assignment-2024

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 

Repository files navigation

Тестовое задание для стажёра iOS

Общее описание задания

Нужно написать приложение iOS для поиска контента, которое будет состоять из двух экранов:

  1. Экрана поиска медиа-контента
  2. Экрана с детальной информацией, который отображается после нажатия на элемент из результатов поиска

Требования к реализации

Общие требования

  1. При реализации необходимо использовать iTunes Search API
  2. Внешний вид приложения реализуется на усмотрение кандидата

Экран поиска

  1. Отображает строку ввода поискового запроса
  2. Сохраняет историю поиска (до пяти последних запросов)
  3. В момент начала ввода отображаются элементы-подсказки с ранее введенными значениями. По мере ввода символов подсказки фильтруются по вхождению без учета регистра. Например, при вводе ‘scor’ могут быть включены ‘The Score’, ‘Scorpions’, ‘underscore’ и т.п.
  4. Поисковый запрос выполняется по завершении ввода при помощи элементов управления клавиатуры и использует формат https://itunes.apple.com/search?key-value-params
  5. Результаты поиска представлены на экране в виде «плиток», расположенных в два столбца (по умолчанию limit = 30)
  6. В результатах поиска поддерживаются для отображения как минимум двух типов медиаконтента (например, movie и audiobook). В каждом элементе поисковой выдачи отображена его принадлежность к типу, превью-изображение (artwork, если доступно) и название. Помимо этого элементы отображают краткую информацию, относящуюся к соответствующему типу контента (имя исполнителя, длительность, цена, рейтинг и т.п.) — на ваше усмотрение
  7. С экрана поиска должен открываться экран детальной информации по нажатию на элемент поисковой выдачи.

Будет плюсом

  1. Если реализована возможность применения фильтров по различным параметрам (например по entity, explicit или языку контента)
  2. Если реализована возможность изменить значение лимита на количество элементов в результатах поиска.

Экран с детальной информацией

Отображает детальную информацию о медиа-контенте:

  1. Изображение для контента
  2. Название материала
  3. Имя автора материала
  4. Тип контента (брать из wrapperType/kind, возможные типы описаны тут)
  5. Гиперссылка для перехода на страницу медиаконтента вне приложения  (trackViewUrl) 
  6. Описание
  7. Блок с более подробной информацией об авторе с использованием lookup-запроса. Блок должен содержать гиперссылку для перехода на страницу автора вне приложения (artistLinkUrl).  

Будет плюсом

  1. Добавление функции отображения дополнительной информацию о медиаконтенте, исходя из его типа
  2. Добавление возможности пользоваться запросами с релевантной к конкретной сущности информацией. Например, отобразить 5 других работ/приложений, сделанных автором работы, которая просматривается сейчас

Будет плюсом ко всей работе

  1. Покрытие кода unit-тестами
  2. Отсутствие подвисаний (hitches, hangs) при скроле поисковой выдачи

Нефункциональные требования

  1. Каждый экран должен поддерживать отображение трёх состояний:
    • Отображение контента
    • Отображение ошибки
    • Состояние загрузки
  2. Элементы не показываются на экране, если необходимая для их отображения часть информации отсутствует в ответе сервера

Требования к коду

  1. Приложение написано на языке Swift, без использования сторонних библиотек
  2. Пользовательский интерфейс полностью реализован кодом с использованием UIKit (без SwiftUI)
  3. Для выполнения сетевых запросов используется URLSession

Ход решения

Если у вас возникнут вопросы по заданию, ответы на которые вы не найдете в описанных требованиях, то вы вольны принимать решения самостоятельно. В таком случае приложите к проекту README-файл, в котором будет список вопросов/проблем, с которыми вы столкнулись, и поясните как вы их решили и почему именно таким образом.

Оформление решения

  1. Код должен быть размещен в git-репозитории на github.com
  2. Сделайте репозиторий публичным, чтобы была возможность проверить вашу работу
  3. Приложите файл README.md с инструкцией по запуску
  4. Если требуется, приложите файл README.md с вопросами/проблемами, с которыми вы столкнулись, и с описанием логики их решений.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published