В этом цикле статей мы рассмотрим и пройдем через все этапы создания законченного iOS приложения с 0 и до релиза. Вот что будет в итоге:
Само повествование расчитано на новичков в деле разработки, можно приступать к изучению даже без опыта! Но и тем, кто уже имеет некоторый опыт создания приложений, материал будет полезен. Ведь одной из поставленных целей является - показать образ мысли и просто грамотный подход, в решении повседневных задач. Все темы, которые поднимаются далее, обязательно пригодятся в работе практически над любым проектом.
В ходе работы мы узнаем как:
1
Спроектировать приложение основываясь только на идее
2
Создать проект для iOS платформы
3
Задействовать 3Д функции встроенные в iOS (начиная с iOS 8)
4
Построить адаптивный интерфейс для iPhone и iPad в Storyboard
5
Внедрить рекламу AdMob в готовое приложение
6
Подключить Google Firebase в качестве облачной базы данных
7
Собирать статистику использования приложения
8
Создать простую панель администрирования для управления некоторыми функциями приложения и просмотра собранной статистики (доп. материалы)
9
Опубликовать проект (доп. материалы)
А если коротко - узнаем на довольно простом примере, как делаются реальные приложения, которыми мы пользуемся каждый день. Информации много, некоторые места будут описаны сжато. Я прикреплю по ходу написания ссылки на все необходимые источники, для тех, кто захочет разобраться с моментами не вошедшими в данный материал. Если будут вопросы не забывайте задавать их в комментариях!
Большая часть материала сегодня будет теоретической, настоятельно рекомендуется к ознакомлению, если вы хотите разобраться во всех процессах, которые происходят при разработке приложений. Но если руки чешутся - можно сразу перейти к практической части. Итак, чтобы не терять времени зря, начнём.
У меня появилась проблема...
Однажды, собравшись большой шумной компанией, состоялся неразрешимый спор. Мы решили присудить победу случайным образом одному из участников спора. Но как выбрать независимо и беспристрастно выигравшую сторону? Можно вытягивать спички, можно сыграть на камень-ножницы-бумага, а можно, например, бросить кости. Именно этот вариант и оказался в нашем случае предпочтительным, но увы - игральных костей ни у кого с собой не оказалось :) И вот она идея: было бы неплохо сделать приложение, которое имитирует бросок игральных костей. Далее, в ходе обсуждения выяснилось, что такое решение может быть интересно и любителям настольных игр. Зачем носить с собой пачку игральных костей, если можно запустить приложение и всё готово? Звучит удобно! И мы начали думать, как можно реализовать данную идею, в виде приложения для смартфона.
С чего начинается разработка любого проекта?
Появляется идея - а что если сделать решение для проблемы Х, ведь наверное, с такой ситуацией могли столкнуться и другие люди, и могут сталкиваться в будущем? Для начала, проверяем идею на наличие уже готовых приложений в AppStore/Google Play и просто в поиске. Это хорошая практика - сначала провести анализ имеющихся решений, далее определить почему ни одно из них мне не подходит, и наконец выявить ряд или хотя бы одно ключевое отличие нашего сверхнового решения, от уже имеющихся. Если же варианты не были найдены, увы, скорее всего это невыгодно или технически не реализуемо, шансы что это полезно и круто и до сих пор никто не сделал - очень близки к 0. В данный момент нам не интересно есть ли конкуренты, мы просто хотим научиться чему-то новому, и поэтому не думаем о том, как заработать на данном проекте или как выделиться среди аналогов - эти вопросы весьма важные в реальном проекте, но выходят за пределы данной серии уроков.
Проектирование проектирования
Кто бы что не говорил про разработку приложений, но самый сложный и ответственный этап - это проектирование. Его сложность возрастает экспоненциально, с ростом сложности проекта. В некоторых случаях, даже нецелесообразно проектировать всю систему целиком, потому что на планирование тогда уйдет неоправданно много времени, а в ходе разработки и тестирования может всё поменяться, что означает много времени может пропасть в пустую. Именно из-за качественного проектирования, большие компании выделяют ну очень много времени на разработку казалось бы банальных проектов. Именно из-за некачественного проектирования возникает 90% проблем в процессе разработки. Короче, это очень важный этап. В нашем случае, приложение довольно простое и мы быстро всё спроектируем.
Функции, кнопочки, какого же цвета их сделать?
С этого логичнее всего начинать этап проектирования, просто перечислить все функции приложения, которые приходят в голову.

Приложение с точки зрения пользователя должно:
  • Показывать кости на экране
  • Симулировать бросок костей (кости не должны улетать за пределы экрана)
  • Показывать выпавшее число на экране
  • Фиксировать кости по касанию, чтобы часть костей не перебрасывалась
  • Сбрасывать позицию костей
  • Менять количество бросаемых костей (0-6)
  • Проигрывать звук при броске (нужно дать возможность отключить звук)
Приложение с точки зрения заказчика (разработчика) должно:
  • Собирать статистику по использованию приложения на сервере
  • Показывать баннер-рекламу каждые № бросков
  • Показывать сообщение с предложением оценить приложение каждые № бросков
  • Отображать ссылку на другое приложение заказчика (чтобы продвигать другие свои проекты)
Кроме того, заказчику нужен контроль над данными:
  • Изменять параметр - показывать рекламу или нет
  • Изменять количество бросков, после которых срабатывают события на показ рекламы
  • Отображать наглядно - сколько людей и как часто пользуются приложением
Вот стооолько требований возникает даже на примитивное приложение с одним экраном!
Теперь неплохо было бы понять: что нам потребуется сделать для реализации каждой перечисленной функции? Детализировать и красиво отрисовать, чтобы не потерялось.

Такие наброски обычно удобно рисовать на бумаге, они хорошо помогают. Начинаем мы с того, что несёт наибольшую ценность для пользователя (во многих случаях можно начинать с того что несет наибольшую ценность для заказчика). У нас это главный экран приложения, с него для пользователя всё начнётся, и вероятно закончится им же. Несмотря на то, что это единственный экран будущего приложения, здесь появятся дополнительные элементы: всплывающая реклама во весь экран, предложение оценить приложение в App Store (важный элемент в продвижении).
Далее мы можем продумать что несёт ценность для заказчика:
В нашем случае - это сбор статистики и небольшой контроль над приложением (ну и конечно же реклама, она была прописана в первой части). Краткое пояснение для тех кто не знаком с термином админка - это простой сайт, к которому есть доступ только у владельца приложения, на этом сайте можно смотреть данные, которые собирает приложение, а также управлять этим приложением. Всё это необходимо делать самому. У нашей админки будут очень простые требования, а её создание вынесено отдельно в доп. материалы, для тех, кому это будет интересно.
Собираем всё в кучу!
Теперь, когда мы знаем и видим всё, что необходимо сделать - просто чтобы прояснить детали, мы нарисуем карту (или схему) переходов между экранами:
Здесь нет сложных взаимоотношений, которые обычно возникают в больших проектах, но это и к лучшему, ведь нам надо разобраться с процессами в общих чертах, а к частностям лучше подходить самостоятельно, на практике. Схема выше показывает все процессы/действия, которые будут происходить в клиентском приложении и которые нам нужно реализовать.
File > New Project
Сложная часть позади, теперь время практики!
Создаем новый проект в Xcode. Но сначала... Его нужно скачать из App Store :) А для этого надо иметь в наличии Mac OS. Но не спешите расстраиваться и всё бросать, ведь Mac OS можно запустить и под управлением Windows (если процессор Intel). Подробнее о такой установке системы: видео. Это только один из возможных источников, похожие инструкции можно найти самостоятельно по запросу: "vmware mac os <название последней мак ос (Sierra)>".
Для тех кто все-таки смог установить себе Xcode, знакомимся с интерфейсом главной программы iOS разработчика:
Это приветственное окно всегда появляется при запуске по умолчанию. Справа будут показываться текущие проекты, слева небольшое меню, которое поможет создать новый проект. Этим мы и займёмся - жмём кнопку "Create a new Xcode project". Появится такое окошко:
Здесь Xcode предлагает нам на выбор один из предустановленных шаблонов проекта. Шаблоны лишь слегка ускоряют процесс начала разработки :) Мы делаем проект игровой, потому выберем в качестве шаблона "Game". Далее появится окно с кучей непонятных полей:
Разберем их по порядку каждое поле:
  1. Product Name - название будущего приложения, и одновременно самого проекта
  2. Team - аккаунт разработчика, от которого будет осуществляться публикация, можно не указывать изначально, но если будет желание протестировать приложение на реальном устройстве или опубликовать, то потребуется регистрироваться в Apple Developer Program (или позаимствовать у кого-то аккаунт)
  3. Organization Name - название компании, которая делает продукт. Это название будет включено в каждый файл проекта, вместе с датой создания этого файла. Так что будьте внимательны, заполняя это поле
  4. Organization Identifier - уникальный ид компании, здесь как правило пишется web url (наоборот) сайта компании или личный адрес. В моем случае ru.epicapp (от epicapp.ru)
  5. Bundle Identifier - автоматически составляется из ид компании и названия проекта. Этот ид нигде не отображается, но используется в качестве этакого серийного номера приложения. Поле должно быть уникальным для каждого нового проекта.
  6. Language - язык программирования проекта. А вот этот пункт более важный, чем предыдущие. На данный момент приложения под iOS, можно писать на двух native (родных) языках, это - Objective-С и Swift. Язык Свифт более новый, и, как следствие, менее стабильный. Его презентовали миру в 2014 году, всего пару лет назад. Но в будущем именно он должен полностью заменить старичка Objective-C. На данный момент многие переходят на Свифт, особенно новички, и выбирая что изучать с 0, также отдают предпочтение Свифту. Именно по этой причине в серии уроков я использую также язык Свифт. В сети можно найти много противоположных мнений, вот одно из таких: Хабр.
  7. Game Technology - игровая технология. Важный момент, на выбор дают следующие варианты: Sprite Kit (технология от Apple для 2д графики), Scene Kit (технология от Apple для 3д), OpenGL ES (еще одна технология для 3д, но стандартизированная и используемая на разных платформах, а не только на iOS), Metal (технология от Apple для 3д, аналог OpenGL). Отличие Scene Kit от двух других доступных 3д вариантов - это упрощённые АПИ, легче и быстрее разобраться в коде, конечно из-за этого страдает гибкость и количество возможностей, но в нашем случае нужно как раз что-то очень простое. Выбираем Scene Kit.
  8. Devices - поддерживаемые устройства. Есть выбор iPhone/iPad/Universal - последнее это универсальное приложение одновременно и для телефонов и для планшетов. Его мы и выбираем, т.к. хотим параллельно научиться делать приложения и для планшетов и для телефонов. Два других варианта ограничивают конечный продукт выбранным типом устройства.
На сей раз после нажатия кнопки далее и выбора будущего местоположения проекта, будет сгенерирован стандартный проект 3д:
Красное предупреждение гласит о том, что аккаунт разработчика до сих пор не подключен. Это в свою очередь означает, что протестировать приложение можно только в симуляторе, на реальном устройстве запустить приложение нельзя без подписки на Apple Developer Program. Пожалуй, это самый печальный момент, с которым приходится столкнуться новичкам.
Уже сейчас мы можем запустить проект в симуляторе, для этого надо выбрать устройство для тестирования из списка симуляторов слева вверху:
И нажать кнопку с иконкой треугольника, которая находится ещё левее. Проект должен собраться и запустить программу симулятор. Первый запуск проходит довольно долго, поэтому не надо сразу паниковать :)
А вот и результат сегодняшнего дня:
Стоит ещё дополнительно отметить: у симулятора крайне низкая производительность, к сожалению. Нормально тестировать игры не получится на реальных проектах :(
Но сейчас есть довольно не дорогие iPhone, которые можно присмотреть и купить с рук.
На сегодня всё, всего хорошего и спасибо за чтение :)
Подписаться на продолжение курса
comments powered by HyperComments
Made on
Tilda