ВВЕДЕНИЕ 3
1 ПОСТАНОВКА ЗАДАЧИ 5
1.1 Требования к программной библиотеке 5
1.2 Анализ альтернативных решений 6
1.2.1 XLActionController 6
1.2.2 RMActionController 7
1.2.3 LCActionSheet 8
2 СРЕДСТВА РАЗРАБОТКИ И ОБЩАЯ СТРУКТУРА РЕШЕНИЯ.... 10
2.1 Средства разработки 10
2.2 Общая структура программной библиотеки 12
2.3 Модели и объекты 13
3 РАЗРАБОТКА ПРОГРАММНОЙ БИБЛИОТЕКИ 16
3.1 Разработка функционала 16
3.1.1 Location 17
3.1.2 Camera 18
3.1.3 CameraRoll 19
3.1.4 Contacts 20
3.1.5 File 20
3.2 Разработка пользовательского интерфейса 22
4. НАСТРОЙКА ПРОГРАММНОЙ БИБЛИОТЕКИ 27
4.1 Настройка функциональных возможностей 27
4.2 Настройка пользовательского интерфейса 28
ЗАКЛЮЧЕНИЕ 29
СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ 30
За последние десять лет человечество совершило большой технологический скачок [1]. Сейчас жизнь современного человека нельзя представить без смартфона, ибо его полезность в плане функционала неоспорима. Помимо стандартных функций звонков и смс он заменяет фотокамеру, органайзер, музыкальный/видео плеер, а также множество других вещей, в той или иной мере присутствующих в повседневной жизни.
Помимо аппаратного обеспечения, также развивается и его программная часть [2]: операционные системы и приложения. Именно с последними пользователь контактирует напрямую. Из всего разнообразия, представленного в виртуальных магазинах, выделяются приложения социальной направленности, те, где пользователи могут общаться друг с другом или обмениваться иной информацией.
Разработка таких приложений - долгий и кропотливый процесс, вовлекающий в себя большое количество разработчиков разных специальностей.[3] Зачастую в социальных приложениях присутствует функция/модуль чата, который заслуживает отдельного внимания, ввиду ряда весомых отличий от других модулей приложения, так как работает по принципу сокетов[4]. Сам чат можно разделить на два подмодуля: модуль обмена сообщениями и контроллер для работы с пользовательским контентом, таким как фото, видео, геолокация, контакты и тд.
Настройка приложения для доступа к данным и написание даже самого минимального набора контроллеров для их обработки занимает достаточно много времени.
Поэтому целью данной работы стала разработка гибкой и в то же время простой в использовании библиотеки для обработки контента на платформе
iOS. Для достижения поставленной цели необходимо было выполнить следующие задачи:
• Разработка архитектуры мобильной библиотеки;
• Разработка менеджера для доступа к фото/видео файлам;
• Разработка пользовательского интерфейса библиотеки;
• Разработка функционала для обработки пользовательского контента.
В результате выполнения дипломной работы была разработана мобильная библиотека для платформы iOS, обладающая следующим функционалом:
• кастомизация пользовательского интерфейса;
• обработка интерактивного контента;
• кастомизация функционала обработки интерактивного контента.
Разработанное решение обладает легким в освоении и использовании
API, а интеграция требует от разработчика минимума усилий. Также реализация библиотеки не содержит вызовов закрытых методов из iOS SDK, а потому приложения, использующие ее, будут опубликованы в магазине мобильных приложений Арр Store.
Пользовательский интерфейс библиотеки соответствует Apple Human Interface Guidelines и при необходимости может быть с легкостью изменен. Заранее подготовленный функционал обработки интерактивного контента позволяет значительно сократить объем написанного разработчиком кода и соответственно сократить время на разработку.
Для сравнения объема написанного кода для модуля обработки интерактивного контента в iOS приложениях был использован открытый исходный код мессенджера Telegram. В данном приложении модуль занимает несколько тысяч строк кода без комментариев, в то время как интеграция VBActionPicker требует меньше ста строк, а реализация оригинально дизайна iOS и того меньше.
В дальнейшем планируется распространять библиотеку через GitHub и CocoaPods. Собирать отзывы на данных ресурсах и улучшать библиотеку, добавляя новые возможности кастомизации пользовательского интерфейса и функционала, сохраняя при этом простоту интеграции.