Как создать приложение для iOs самостоятельно: пошаговая инструкция. Создаем свое первое приложение для айфона

Люди приходят к нам в компанию, чтобы воплотить в жизнь свою идею и автоматизировать бизнес-процессы. Мы предоставляем бесплатную консультацию у аналитика InfoShell и доработку идейной составляющей проекта.

Идея и консультация

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

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

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

После консультации с нашим специалистом у Вас появится точное понимание, как сделать так чтобы проект выстрелил.

Приступаем к работе!

Оценку проекта производит команда разработчиков. После чего клиент получает предварительное коммерческое предложение.

После составления project vision проекта наша команда разработчиков оценивает примерные трудозатраты на реализацию продукта. Исходя из поставленных задач и технологических ограничений, составляется оценка количества часов, необходимых на создание вашего продукта.

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

На коммерческом предложении в дальнейшем будет основан договор.

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


* продукт оунер – руководитель проекта


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


**бэклог – список задач для команды разработчиков, которые полностью описывают проект


Документ представляет собой иерархическую структуру из пользовательских возможностей и технических требований, упорядоченных по очередности реализации, более важный функционал будет реализован раньше остальных. Каждому элементу Бэклога присваиваться описание, порядковый номер, оценка объема работы и ценность. Это позволяет просчитать окончательную стоимость продукта.

Договор в первую очередь обеспечивает полную прозрачность проводимых работ для заказчика и позволяет ему контролировать процесс от А до Я на каждом этапе. Все этапы прописываются отдельно, что позволяет производить оплату выполненной работы по факту сдачи.

Бэклог – гибкий документ, который позволяет Заказчику вносить даже серьезные изменения в продукт по ходу разработки, ведь большинство новаторских идей придумываются уже в ходе выполнения проекта. Дополнительный функционал оформляется в виде доп. соглашений к договору, в которых отмечается, сдвинет ли реализация вносимых изменений сроки завершения этапов проекта.

Договоренность с заказчиком о том, какие задачи будут выполнены на ближайшем спринте.

Сердцем Scrum* является Спринт** длительностью в одну или две недели, в течение которых создается потенциально готовая к выпуску и использованию часть продукта.


*Scrum – гибкая методология создания, по который мы ведем проекты

** Спринт-этап в рамках которого реализуется определенная часть проекта


Обычно длительность Спринта является постоянной на протяжении всего периода разработки. Следующий Спринт начинается сразу же по окончании предыдущего.

Спринт состоит из списка того, какие функции нужно разработать и гибкого плана, служащего ориентиром в работе по проекту. Ресурсом для планирования спринта является Бэклог Продукта.

Объем работ на предстоящий Спринт определяется во время планирования Спринта в ходе совместной работы всей команды.

При планировании Спринта команда отвечает на следующие вопросы.

9 февраля 2015 в 17:54

Создание iOS приложения. От идеи до результата

  • Разработка под iOS
Все началось с того, что я огляделся по сторонам и, не увидев автомобиля своей мечты, решил сконструировать его сам
Фердинанд Порше

Привет, Хабр. Хочу рассказать, как создал свое первое iOS приложение и что из этого получилось.

Идея

Идея для приложения возникла сама собой: создай то, чем бы ты с удовольствием пользовался бы сам. Я постоянно пишу заметки. Ведь у каждого занятого человека существует определенный набор фактов, которые он получает в течение дня, и которые стоит запомнить. А так как все люди забывают (и это нормально!), то нет лучшего решения, чем просто записать. Я все время чувствовал какое-то неудобство при работе с представленными в AppStore приложениями-заметочниками. Излишняя сложность в управлении, наличие ненужных категорий, нагромождение дополнительной информации - все это мешает приложению выполнять его основную функцию. Плюс ко всему многие из этих вещей выглядят просто некрасиво.

Поэтому, поставив все ставки на простоту и удобство, я приступил к созданию концепции. Модель приложения с единым списком заметок. Все в одном месте, что может быть проще? Если что–то имеет большую ценность или актуальность, совсем не обязательно вешать на него ярлык, ведь достаточно просто переместить более важную заметку в топ списка. Старые и ненужные записи постепенно будут опускаться вниз и в последствии будут удалены пользователем.

Функционал

После того, как концепция была придумана, я выписал основной функционал - те вещи, на которые я хотел бы сделать акцент в управлении:

Довольно стандартный функционал для подобного рода приложений, согласитесь. Но это только верхушка айсберга, дьявол кроется в деталях.

Инструментарий

Перед тем, как писать код в Xcode, я полностью воссоздал внешний вид приложения в векторном редакторе Sketch. Эта программа отлично подходит для быстрого создания макетов. Для этого приложения доступна масса плагинов, среди них есть Sketch Preview - просмотр артборда сразу на устройстве через программу Skala Preview. Всего лишь нужно скачать бесплатные программы Skala Preview на компьютер и мобильное устройство и установить плагин. После этого выбрать нужный артборд, нажать комбинацию Command+P и уже через секунду внешний вид приложения транслируется на устройство.

Кроме того, в приложении очень удобно создавать скриншоты для публикации в AppStore. Для каждого размера экрана создавался свой набор артбордов, вместе с использованием стилей, время потраченное на форматирование минимально. Но про публикацию чуть позже.

Разработка

В приложении я использовал всего два контроллера – один непосредственно для всех-всех-всех заметок, другой - для отображения небольшого туториала при первом запуске. Работу с базой данных я организовал с помощью фреймворка CoreData.

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

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

Анимации удаление и перемещения в топ я решил реализовать самостоятельно, а визуальное сопровождение максимально приблизить к реальной жизни. Что-то приобрело более высокий приоритет - свайп вправо и заметка перемещается в топ списка. Чтобы удалить - свайп влево и анимация зачеркивания покажет на сколько еще нужно продлить свайп чтоб завершить удаление. При случайном удалении - нужно просто потрясти устройство («Shake»), и заметка вернется на свое прежнее место.

Для того, чтобы выделить заметку, я использовал LongTapGesture и три основных цвета приложения - белый, синий и красный, которые и сформировали главную палитру цветов.

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

Нейминг

Название приложения - самая важная часть при разработке, это первое что видит пользователь в магазине. На хабре есть по этому поводу. К подбору имени я решил подойти основательно: для начала я перебрал список 1000 самых популярных слов в английском языке и выписал всевозможные комбинации, которые подходили бы для названия мобильного приложения для заметок, к тому же хотелось уложиться в 8-10 символов. Но при этом не хотелось выбирать название SuperNotes или NotesPlus etc, хотелось чего-то нового. Мне понравилось сочетание mad note , на которое случайно наткнулся в Urban Dictionary:
mad note - excellent, entertaining, surprising, unexpected or awe-inspiring

Сразу же появился и слоган: MadNotes - Note your passion. Поскольку палитра основных цветов у меня уже была готова (белый, синий, красный), я решил сразу придумать подходящую иконку. Ситуация с логотипами для приложений подобного рода плачевная:

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

Результат

Поскольку изначально проект задумывался как дизайнерский, я решил поучаствовать с моим приложением в всеукраинском конкурсе Ukrainian Design Awards: The Very Best Of в категории Digital Design. До конкурса оставалось несколько недель, за это время я успел сделать публикацию на Behance, где визуально показал все основные функции приложения, а также записал видео-превью.
Поскольку победителей конкурса не разглашают до самого последнего момента, было невероятно приятно увидеть свою работу на выставке работ победителей - жюри увидели и оценили главную концепцию - минималистичное и, вместе с тем, функциональное приложение для ведения заметок.


Приложение находится в AppStore уже несколько месяцев, за это время я сделал шесть обновлений и переписал код на Swift. В последней версии (1.2) добавлена синхронизация с iCloud, так что заметки уже успели перебраться в облако.

Спасибо внимание.
Note your passion

Для менеджеров и простых людей

Часто слышишь фразу:

А не сделать ли мне эдакое приложение под айфоны!?

Многие действительно думают, что создать iPhone-приложение с нуля - просто и быстро, а заработанные миллионы уже совсем не за горами. Давайте попробуем разобраться в этом деле с точки зрения человека, полного энергии, но не имеющего представления об экосистеме Apple для разработчиков.

Идея

Любой проект начинается с идеи, и уже исходя из этого может оказаться, что приложение сделать нельзя. Знакомые мне разработчики отказывались от работы по самым разным причинам:

  • Нельзя определять положение пользователя в помещении точнее пяти метров;
  • Не получится определить, находится ли человек в самолёте, над какой страной пролетает и момент пересечения границы государств;
  • Не существует возможности узнать номер телефона человека (если только пользователь сам не введёт его);
  • “Если это просто сайт, оформленный в приложение, то его завернут” (речь про ревью приложения командой App Store);

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

Команда

Реализацию идеи можно заказать у компаний, которые сделали уже сотню приложений, а можно собрать собственную команду. Эксперты и так во всём разбираются, но и стоить их услуги будут соответственно. Поэтому мы рассмотрим вариант своей команды.

Я намеренно пропущу этап набора людей, потому что это относится к любому проекту, а не именно к iOS-разработке.

Трудно поверить, но писать приложения для iOS можно лишь на “маках”. Поэтому, каждому разработчику понадобится одно устройство на macOS и одно - на iOS (есть некоторые способы обойти это ограничение, но мы не будем их затрагивать). На маке он/она будет писать код, на айфоне - смотреть, что из этого получилось. Также можно надеяться, что iOS-разработчик придёт со своими девайсами (случай нередкий).

Самый недорогой вариант - купить каждому подержанный mac mini с клавиатурой, мышкой, монитором, набором кабелей и какой-нибудь iPhone 5s. Кстати, lightning-кабели с этого момента можете считать расходником: ломаются они крайне быстро.

Ко всему прочему, понадобится обзавестись “аккаунтом организации-разработчика Apple”, который стоит $99 в год и позволяет управлять доступами разработчиков, устройствами и так далее. Можно обойтись и индивидуальным аккаунтом, но стоит он столько же, а командных возможностей у него нет.

Интерфейс управления Apple Developer аккаунтом для организаций

Дизайн

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

Минимально от дизайнера понадобится следующее:

  • Иконка приложения в различных размерах (под различные типы экранов);
  • Картинки приложения (скриншоты) под каждый поддерживаемый экран и язык в случае, если на картинке есть текст (скриншоты могут сделать и разработчики, но зачастую на них добавляют и дополнительную инфографику);
  • Каждая картинка, которая используется в приложении, во всех нужных размерах (2–3x);

Если же вы хотите действительно качественное приложение, обязательно просите у дизайнера:

  • Рисунки всех экранов приложений (можно сделать исключение для похожих экранов);
  • Картинки для всех всплывающих сообщений, уведомлений;
  • Для всех элементов, где будет анимация - продумать и нарисовать её;
  • Карту переходов по приложению - user flow, её можно просить одной из первых - эта карта здорово помогает определить основные и дополнительные экраны, их содержимое;


Пример user flow от UBER для кнопки “Отвезите меня туда на UBER”

В максимальном случае берите дизайнера на постоянную основу и работайте с ним над созданием действительно удобного и приятного приложения, которым смогут пользоваться все (тонкий намёк на “доступность” - когда приложение подходит и для людей с ограниченными возможностями).

Тестирование

Казалось бы, все кусочки мозаики собраны, чего же не хватает? Мы забыли о людях, которые будут использовать Ваше приложение и находить в нём ошибки. Кстати, не надейтесь, что все разработчики сразу делают абсолютно правильный код. Ошибаться - это нормально, но ведь наше приложение должно быть идеальным. Поэтому перед тем, как оно попадет в магазин, его надо вдоль и поперёк исследовать.

Этими вопросами занимаются тестировщики, желательно, чтобы они обладали опытом работы именно с iOS-приложениями. Вопрос: как они будут это делать?

Естественно, здесь тоже понадобятся устройства. Хорошо, если вы найдёте всевозможные сочетания версий iOS, типов iPhone/iPad, разрешений экранов, которые планируете поддерживать. Но тут есть различные обходные пути и дополнительные возможности:

  • Можно поддерживать лишь несколько типов устройств сначала, а потом дорабатывать приложение под оставшиеся. Однако Apple не очень любит, когда приложение заблокировано только для одного вида iPhone, если для этого нет явных причин.
  • Протестировать часть функционала можно на Симуляторе (это программа под macOS, эмулирующая реальный iPhone). В нём можно задать и размер экрана, и тип устройства, но протестировать можно не всё: только на реальных устройствах получится проверить работу с различными датчиками (гироскоп, акселерометр, компас, …), TouchID, пуш-уведомлениями.
  • Обязательно протестируйте приложение в условиях плохого или отсутствующего соединения (конечно, если интернет реально используется);
  • Убедитесь, что приложение не сильно тратит батарейку;
  • В случае большого приложения оцените необходимость автоматического тестирования: пробегаться по сотне форм в каждой новой версии сложно и не очень рационально.

И не просите у разработчиков “инсталлятор” для приложения, которое они делают. В среде Apple невозможно скинуть файл на телефон, установить и запустить. Кто-то из разработчиков должен будет настроить доставку новых версий на все телефоны, где она нужна. Иначе нельзя.

Всё готово к запуску!

Итак, настаёт момент, когда приложение готово к тому, чтобы появиться в магазине App Store. Какие ещё неожиданности нас ждут?

Во-первых, приложению нужно имя. Если область приложения популярна, то все короткие и красивые имена могут уже быть заняты, так как App Store не допускает двух приложений с одинаковым названием. Остаётся придумать его в виде “XYZ - приложение для XYZ”. Это имя отображается лишь на самой странице приложения в AppStore и не обязательно должно совпадать с тем, что будет написано после установки под иконкой Вашего приложения у конкретного пользователя. На этот текст ограничение уникальности не распространяется.

С названием приложения есть одна небольшая хитрость. При создании в iTunes Connect приложения можно указать его название ещё до того, как версия для публикации реально готова. Таким образом, можно занять своё имя чуть-чуть заранее, хотя Apple уже не гарантирует длительность этого срока.

Во-вторых, нужно описание. От него и от названия будет во многом зависеть, насколько легко пользователь находит Ваше творение. Кстати, если поддерживается несколько языков, стоит сразу подумать, на которые из них будут переводиться описание и название.

В третьих, если не сразу, то после пары дней в магазине Вам станет интересно, а что в приложении вообще пользователи делают. Здесь на помощь приходит метрика, которая анонимно собирает статистику открытых экранов, покупок и любых интересных действий. Внедрением метрики стоит озаботиться сразу, а на её основе стоит делать выводы об улучшении существующего и создании нового функционала. Вероятно, у Вас будет искушение сохранить действия каждого пользователя вместе с его email или именем: помните, так делать нехорошо, потому что никто не любит, когда за ним/ней подглядывают.

В-четвёртых, Вам предстоит пройти ревью приложения от команды App Store. Ревью занимает около двух недель, и на нём всплывут все самые потаённые “фишки” Вашего приложения. Вот несколько советов для успешного прохождения этой проверки:

  • Если для доступа к основным функциям приложения необходимы логин/пароль и регистрация, обязательно снабдите команду App Store тестовыми данными для входа в приложение. Для покупок им понадобится тестовая кредитная карта. Если для нормальной работы нужны какие-то аксессуары - будьте готовы выслать в Apple и их тоже;
  • Если в приложении есть продажи чего-либо, должно быть также и пользовательское соглашение, содержащее фразу о том, что Apple ни при чём, а продавцом является Ваша компания. Этот текст должен быть доступен на всех языках, которые вы поддерживаете;
  • Если Вы продаёте виртуальные товары, скорее всего, надо будет использовать “покупки внутри приложений”;
  • Убедитесь, что не используется ни одного запрещённого API и что приложение в целом выполняет ровно ту функцию, которую обещает.

Если все пункты честно соблюдены, то примерно через две недели Ваше приложение появится в магазине.

Приложение в App Store

Мы Вас от души поздравляем. Ваше первое творение наконец-то попадёт в руки пользователей! Самое время оглянуться на пройденный путь и подумать о новых версиях Вашего приложения.

IOS – это операционная система, на которой работают смартфоны от Apple. Для покупки игр или приложений используется фирменная площадка цифровых покупок App Store. Если продукт разработчика окажется успешным (будет пользоваться спросом пользователей), то даже за одну программу можно заработать неплохие деньги. В среднем разработчики популярных приложений для iOS зарабатывают несколько тысяч долларов в месяц.

Процесс создания

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

  1. Создание концепции продукта – первый этап, требующий анализа трендов в цифровом магазине App Store. Занимаясь созданием проекта разработчик должен четко обрисовать целевую аудиторию. Чтобы аналитический этап прошел успешно посмотрите, какие приложения, программы, игры и т.п. находятся в топе App Store. Кроме того узнайте, что установлено на смартфонах знакомых, друзей, родственников.
  2. Техническая база – для начала нужно выучить язык Objective-C, который используется в написании программ для iOS. Для начинающих программистов рекомендуется ознакомиться с языком Pascal и прочими языками: C, Java.
  3. Инструменты – среда разработки , специальный текстовый редактор и графический редактор.
  4. Создание и тестирование программы.
  5. Маркетинговое продвижение.

Пошаговое создание утилиты

Каждый пользователь имеет возможность самостоятельно создать приложение для iOS без дополнительных финансовых вложений и профессиональных знаний. Существует специальная среда разработки XCode, позволяющая работать прямо в телефоне. В случае если нужно написать мобильные приложения на компьютере с Windows, придется установить специальные виртуальные машины. Например, VirtualBox и VMware. Более детально рассмотрим официальный способ:

  1. Установите на смартфон среду разработки XCode . Дополнение находится в официальном магазине ОС App Store и имеет свободную систему распространения. Если программа установлена на телефоне, то проверьте ее на наличие обновлений.
  2. Разобравшись с подготовительными настройками, войдите в XCode. Для создания нового проекта используйте вкладку File . Далее откроется подпункт, где требуется выбрать команды New и Project .
  3. Следующий шаг создания приложения для Айфона – выбор платформы и тематического типа будущей утилиты.
  4. Укажите краткую информацию о создаваемом софте.
  5. Далее требуется нажать на клавишу New Folder . Здесь создается папка, где будут храниться вспомогательные файлы для программы.
  6. В следующем окне снимите галочку с пункта и активируйте команду Create . Благодаря этим манипуляциям пользователь попадет на стартовую рабочую панель.
  7. Нажмите на кнопку под названием storyboard . Она находится в правой части интерфейса. Перетащите на основное поле элемент с именем Label . Не забудьте добавить вступительный текст в строке Hello_world (можно любой другой текст).
  8. Обязательно придумайте иконку для утилиты . Загрузите иконку на сайт mapappicon.com .
  9. После недолгой обработки запроса укажите адрес электронной почты , куда пришлют архив с иконками.
  10. Вернитесь в среду разработки XCode. Теперь в левой части интерфейса найдите раздел под названием xassets .
  11. Откройте архив из почты (куда прислали иконки) и перетащите их в окно, находящееся в XCode.
  12. Выберите один из эмулятор устройств, а далее нажмите на команду запуска программы (иконка обозначена, как черный треугольник), включив Mac Developer Mode .
  13. Повторите попытку запуска дождавшись момента, когда на эмуляторе загрузится iOS.
  14. Убедитесь, что утилита работает .

Таким образом получится создать свое приложение с нуля.

Популярные сервисы для создания приложений

Предлагаем подборку сервисов, которые помогут сделать приложения для iOS самостоятельно.

Apps Globus

Проект Apps Globus – это универсальный конструктор приложений, который подходит для мобильных операционных систем Android и iOS. Отличается удобным пользовательским интерфейсом. Благодаря встроенным модулям значительно упрощается процесс разработки . Apps Globus поддерживает до 60 встроенных модулей, в числе которых:


Apps Globus распространяется по платной подписке . Пользователи желающие протестировать приложение могут воспользоваться 5-дневной демо-версией. Месячная подписка предоставляется в трех видах: «стартовая », «студийная » и «бизнес ». Отличие подписок – цена и количество разработанных приложений. Существует и версия, требующая одноразовый платеж в размере 20 000 рублей. Кроме неограниченного пользования предлагает исходные коды и помощь в настройки утилиты.

App2b

Проект App2b предлагает многофункциональный конструктор, который может использоваться не только для создания приложений для iOS, но и для Android платформы. В этом конструкторе создается коммерческий или информационный контент. Именно поэтому сервис располагает встроенной библиотекой шаблонов для быстрого создания удобного приложения самостоятельно.

Как и другие аналогичные проекты распространяется по платной подписке . Главное отличие от прочих конструкторов – единственный способ оплаты в виде единоразового взноса в размере 9 900 рублей.

Проект – это единственный бесплатный конструктор для создания сайтов и приложений. Программа является комплексным решением для онлайн бизнеса. Позволяет создавать уникальные страницы, виртуальные магазины, электронные журналы. Отличительная черта конструктора – это отсутствие заготовленных шаблонов . Вместо них используются гибкие инструменты не требующих знания программирования. Из-за этого любая программа, созданная в New Digital Times выглядит, как авторская работа.

Конструктор – это мультимедийный инструмент, ориентированный на создании бизнес приложений различного направления: информационные панели, онлайн магазины, меню ресторанов и т.п. Для удобства пользователей имеются встроенные шаблоны для программ и синхронизация с социальными сетями и прочими популярными сервисами.

Продается в нескольких вариациях: для самостоятельного использования и партнерская программа . Распространяется по двум типам подписки: ежемесячная и ежегодная. Кроме того на сайте можно нанять людей для создания программ.

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

В сегменте мобильных технологий, без сомнения, лидирует Apple со своим смартфоном iPhone. На прошедшей в сентябре презентации компания из Купертино продемонстрировала уже 7-ю версию мобильного девайса. Вместе с ней Apple представила новую версию мобильной операционной системы iOS 10. Теперь это самая значимая операционка в мире, как и ее предшественницы. Из этого следует, что изучение разработки для iOS - самое выгодное вложение времени и средств.

«Яблочная» экосистема

Сегодня мы займемся разработкой простого мобильного приложения для iOS. Конечно, лучше всего для этого подходит родной Mac. Но если ты сторонник Windows или у тебя просто нет Мака, можно установить операционную систему macOS под виртуальную машину в Windows. На просторах Сети тебе не составит большого труда найти специально заточенную под PC версию macOS, в народе называемую Хакинтош. Смело ставь ее на виртуалку VMware, VirtualBox - на твой выбор. Сразу предупрежу, что на PC-клавиатуре нет части клавиш, которые есть на Mac-клаве, и многие их сочетания нажать в Хакинтоше невозможно. Это изрядно портит настроение. В остальном все описанные ниже операции можно успешно выполнить на Хакинтоше.

Необходимые знания

Чтобы программировать вообще и для iOS в частности, надо довольно много знать. Математика и логика, может, и не понадобятся вначале, но будут востребованы потом. Современные технологии избавили программиста от необходимости досконально знать архитектуру компьютера, однако понимать базовые механизмы, такие как системы счисления, их преобразование, скорость работы подпрограмм или эффективность алгоритмов (большое O), необходимо.

На более высоком уровне iOS-разработчику надо глубоко знать операционную систему macOS и собственно саму iOS. Также тебе обязательно надо освоить «яблочный» язык программирования. Знание Delphi, C++, C# или VB.NET тебе не сильно поможет. У Apple своя экосистема со своими языками: Objective-C и Swift. Конечно, знание C++ еще никому не навредило, программы и вставки на нем встречаются везде, даже у Apple. Но самый используемый по определению Objective-C, просто потому, что появился гораздо раньше (в середине восьмидесятых годов прошлого века), тогда как Swift лишь два года назад (в 2014-м). Apple возлагает большие надежды на новый язык и много инвестирует в него. Для поддержки старого софта используется Objective-C, а новый пишется на Swift. Поэтому тебе неплохо знать оба.

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

Инструменты для разработки

Как ты знаешь, главный инструмент разработчика под macOS и вместе с ней iOS - среда программирования Xcode . Она включает средства для создания приложений для Mac, iPhone, iPad, Apple TV, Apple Watch. Все платформы Apple. Xcode содержит средство построения интерфейса (Interface Builder), редактор кода, поддерживающего все современные средства работы с кодом. Кроме того, не выходя из Xcode, можно протестировать приложение; если оно разрабатывается для внешнего устройства, то его можно запустить в эмуляторе.

В систему включены эмуляторы всех устройств, новые версии которых можно докачать. В дополнение Xcode содержит графические инструменты для анализа производительности приложения, включая средства диагностирования загруженности CPU, использования накопителя (HDD, SDD и другие), нагрузки на графический адаптер (со стороны OpenGL).

13 сентября вышла новая, горячо ожидаемая версия среды разработки 8.0. Стабильные версии можно бесплатно скачать в App Store. Альфы и беты распространяются по подписке разработчика. Восьмая версия вобрала в себя: новую версию языка Swift 3, средство изучения Swift Playground для iPad, новую версию Interface Builder, которая стала быстрее работать и позволяет просматривать макет приложения на разных платформах, без необходимости развертывать на симуляторе само приложение.

На Xcode 8 можно разрабатывать приложения для macOS Sierra, iOS 10, watchOS 3 и tvOS 10. Имеются все SDK. Новые версии операционок стали последовательно появляться аккурат после презентации Apple, состоявшейся в начале сентября.

Язык Objective-C

Кратко вспомним основные сведения о языке. Objective-C - компилируемый объектно ориентированный язык программирования, используемый для написания приложений под «яблочные» системы. Представляет собой надмножество или, другими словами, надстройку над C, унаследовав от последнего синтаксис, типы данных, способы контроля за ходом выполнения программы и добавив к нему возможности объектно ориентированного программирования - описание классов и методов.

Как в C++, в Objective-C центральную роль играют объекты, с которыми связаны четыре парадигмы: абстракция, инкапсуляция, наследование, полиморфизм. Язык C++ является строго типизированным, тогда как Objective-C - слабо типизированный или обладает динамической системой типов данных. Подобно Smalltalk, в Objective-C объектам посылаются сообщения. Это исключительная возможность динамических языков, так как тип объектов проверяется во время исполнения программы, а не во время компиляции.

Описание языка Objective-C занимает не один объемистый томик. Поэтому, чтобы получить объективные знания, удобно пройти курс « ». Целый раздел курса посвящен этому языку.

Разработка приложения для iOS

В качестве семпла мы разработаем весьма простое приложение. Не будем отступать от священной традиции, поприветствуем мир. Однако с учетом того, что у нас графическое приложение, мы немного разнообразим его: добавим кнопку, нажимая которую будем отображать или скрывать надпись «Hello, World».

Запусти Xcode, в появившемся окне выбери Create new project или в главном меню File -> New -> Project. В следующем окне будет предложено выбрать целевую платформу и тип приложения.


В данном случае нас интересует платформа iOS. На выбор представлено семь типов приложений. Шесть из них - заготовки типичных приложений операционной системы iOS, по умолчанию содержащие разный набор компонентов. Седьмой тип - игра.

Типы приложений

  • Заготовка Single View Application предназначена для простого приложения с одним экраном. Заготовка включает компонент View Controller, который позволяет настроить вид приложения с помощью конструктора форм Interface Builder.
  • Master Detail Application создает приложение, где в табличном представлении отображается коллекция объектов. После выбора одного из них показываются подробные сведения об этом объекте. Первый вид - мастер, второй - детализация.
  • С помощью Page-Based Application создаются приложения, имеющие несколько экранов, как страницы в книге. Следовательно, из этой заготовки создаются, например, читалки.
  • Tabbed application позволяет создавать приложения, где на каждый экран можно переключиться в любой момент, то есть у каждого экрана есть своя кнопка для его активации, на которой отображается заголовок. В качестве примера можно привести iTunes.
  • Game служит для создания заготовки игры. На выбор предлагаются четыре фреймворка для создания игры: SpriteKit, SceneKit, OpenGL ES, Metal. Вкратце рассмотрим их.
    SpriteKit представляет собой систему для двумерной визуализации и анимации текстурированных прямоугольников - спрайтов. При отображении кадров используется стандартный цикл, кадр выводится после того, как обработку пройдет все содержимое сцены.
    SceneKit - высокоуровневый фреймворк для визуализации трехмерной графики без помощи OpenGL. Он поддерживает загрузку, манипуляцию трехмерными объектами. В него включены: физический движок, генератор частиц и легкий способ скриптования.
    OpenGL ES - стандарт в области компьютерной графики. Позволяет визуализировать 2D- и 3D-сцены. Позволяет описать пайплайн для видеокарты: вершины проходят преобразование, собираются в примитивы, которые растеризуются в двумерное изображение и выводятся на экран. В пайплайн можно включить программируемые шейдеры.
    Metal - представляет собой низкоуровневый API, который позволит тебе выжать все мощности из твоего видеоадаптера. Отлаженные API вместе с предкомпилированными шейдерами и многопоточностью позволяют твоей игре подняться на новый уровень производительности и качества.
  • Sticker Pack Application - новый вид приложений, появившийся в iOS 10 и Xcode 8. Представляет собой набор простых или анимированных изображений, используемых в новом iMessage. Для своего создания не требует кодирования.
  • iMessage Application - новый вид приложений, появившийся в iOS 10 и Xcode 8. Позволяет создавать дополнения для iMessage, например для покупки и загрузки твоего пакета стикеров. Также можно, воспользовавшись API iMessage, создать свой аналог данного приложения, включая проигрывание аудио, видео, использование стикеров и другое.

Создание первого проекта

В качестве заготовки для нашего приложения выберем Single View Application. Поскольку мы не будем разрабатывать большую программу, нам хватит предоставляемой этой заготовкой средств. Нажимаем Next. На следующей странице мастера надо ввести имя проекта, к примеру ShowLab. В ниспадающем списке Language оставим выбранный по умолчанию язык - Objective-C. Далее в ниспадающем списке Devices оставим выбор Universal. Здесь определяется, для какого устройства (iPhone или iPad) создается приложение. Пункт Universal означает для обоих. Снимем флажки Include Unit Tests и Include UI Tests, нам никакие тесты не нужны. Next. Выберем папку для сохранения проекта. Теперь жми кнопку Create.

В результате откроется окно со списком всех примененных к проекту параметров. В этом окне можно изменить установленные ранее в мастере параметры: ориентацию, целевой девайс и прочее.


Сначала нам надо создать интерфейс приложения. Для этого одним кликом выбери файл Main.storyboard в списке слева (если этот файл не видно, разверни содержимое папки ShowLab). Правее списка все окно займет Interface Builder. В центре отобразится макет устройства. В правом нижнем углу окна находится панель компонентов. Перетащи оттуда на макет компоненты Label и Button. Выше панели компонентов находится список свойств. Если у тебя он отсутствует, нажми кнопку Show the Attributes Inspector, находящуюся под заголовком окна в правой части интерфейса.

Выдели в макете компонент Label и настрой его свойство Text: в ниспадающем списке оставь выбор Plain, в строку ниже введи нужную надпись, в нашем случае «Hello, World». Если текст не помещается в границы надписи, измени их, перетаскивая маркеры на краях компонента. Чтобы централизовать его по горизонтали, перейди на страницу Size Inspector, нажав на кнопку Show the Size Inspector (справа от Show the Attributes Inspector). На этой странице из ниспадающего списка Arrange выбери пункт Center Horizontally in Container.

Теперь выбери компонент Button, измени его свойство Text на желаемую метку - Switch. Отцентрировать можешь так же, как описано выше.

Создаем связь между графическими элементами и кодом

В Visual Studio (или Delphi) объект в коде создается автоматически в тот момент, когда кладешь визуальный компонент на форму. В Xcode этого не происходит, но это не создает проблем.

Открой содержимое заголовочного файла ViewController.h в отдельном окне, дважды щелкнув на нем. В этом файле находится объявление расширения класса UIViewController, помечается ключевым словом @interface. Такая возможность была добавлена во вторую версию Objective-C. Теперь выполни такой трюк: перемести курсор мыши на компонент - текстовую метку, зажми клавишу Ctrl и левую кнопку мыши. Перемести курсор в окно с кодом (файл ViewController.h), за курсором потянется синяя линия. Отпусти мышь и клавишу внутри описания интерфейса ViewController.

Появится окно создания Outlet’а.


Это свойство объекта, которое ссылается на другой объект (в данном случае визуальный компонент). Тебе надо ввести имя объекта Outlet, по нему ты будешь обращаться к визуальному компоненту, пускай будет lab. Далее выбирается тип объекта, он выбран правильно: UILabel.

Еще ниже в списке Storage выбирается тип ссылки на объект: weak или strong. Если выбрать strong, то объект, на который указывает свойство, будет существовать до тех пор, пока свойство указывает на него, в таком случае он не сможет автоматически удалиться, когда перестанет использоваться. С другой стороны, когда действует слабая ссылка (weak), объект может самоуничтожиться. Итак, выбираем тип ссылки weak и жмем кнопку Connect. В итоге в код добавится такая строка:

@property (weak, nonatomic) IBOutlet UILabel *lab;

Убеждаемся, что Outlet - это свойство.

Теперь создадим Outlet для кнопки. Алгоритм остался прежним. Только для свойства Name надо ввести другое имя, например but. В код будет добавлена строка:

@property (weak, nonatomic) IBOutlet UIButton *but;

В результате имеем два указателя на визуальные компоненты: lab и but - соответственно, надпись и кнопку. Теперь, используя указатели, мы можем манипулировать компонентами в коде.

Затем надо создать обработчик события нажатия кнопки. Для этого в отдельном окне открой файл реализации ViewController.m. Точно таким же образом, как ты перетаскивал линию в заголовочный файл для создания аутлета, от кнопки перетащи линию в файл реализации и отпусти до закрывающей командной скобки - @end. Появится окно для создания события, подобное окну создания аутлета. Видишь разницу: в заголовочном файле создается ссылка на объект, в файле реализации - метод.


Заполни поле Name, его значение представляет имя свойства - метода. Пусть будет onClick. Значение поля Type оставь по умолчанию - id. В языке Objective-C данный тип является предком для всех остальных. В ниспадающем списке Event выбрано по умолчанию событие Touch Up Inside, которое происходит в момент отпускания указателя (мыши, пальца…) над кнопкой, то есть заключительная стадия нажатия кнопки. Это то, что нам нужно. В списке Arguments оставим значение по умолчанию: Sender - это объект, отправивший данный сигнал, в нашем случае им всегда будет кнопка. Жмем кнопку Connect. В итоге будет добавлен следующий код:

- (IBAction)onClick:(id)sender { }

Минус в начале означает закрытый метод (private). Ключевым словом IBAction помечаются события (методы) визуальных компонентов из Interface Builder.

Между командными скобками напишем выполняемый при нажатии кнопки код:

Lab.hidden = !_lab.hidden;

В этой строчке кода мы инвертируем значение свойства hidden. Оно имеет тип BOOL, который располагает двумя значениями: YES - истина и NO - ложь (несколько непривычно Windows-программерам, где true и false).

Обрати внимание на символ подчеркивания, стоящий перед именем объекта - надписи (_lab). Без него компиляция завершится с ошибкой. Символ подчеркивания добавляется автоматически для объектов, содержащихся в других объектах; то есть в данном случае объект lab содержится в объекте ViewController. Раньше это было условное правило, используемое для различия объектов, объявленных в качестве членов класса, и локальных объектов. А теперь это строгое правило, реализованное в компиляторе языка.

Сейчас можно скомпилировать приложение и запустить его на симуляторе. Мы выбрали симулятор для iPhone 7, входящий в Xcode 8. Кнопка компиляции и запуска представляет собой черный прямоугольник и находится на панели вверху интерфейса.

После компиляции приложения, запуска симулятора и загрузки нашего приложения на экране симулятора отобразится его интерфейс: надпись «Hello, World» и кнопка Switch. Если нажать последнюю, надпись исчезнет, при повторном нажатии она появится вновь.

Мы сделали очень простое приложение для понимания сути разработки под iOS. Более подробные сведения о создании приложений для iOS на языке Objective-C ты можешь узнать из курса наших друзей из GeekBrains « ». В курсе два месяца отдается на изучение этого языка. Во время первого месяца - вводные темы, а на втором - реальный кодинг профессиональных приложений.

Язык Swift

В 2014 году Apple представила новый язык программирования - Swift. Он быстро стал самым обсуждаемым и наиболее динамично развивающимся языком в мире. Это надежный, безопасный, интуитивно понятный язык для разработки приложений под операционные системы macOS, iOS, tvOS и watchOS для всего парка устройств от Apple. Swift - эффективный язык программирования. Его легче изучать, чем его предшественника - Objective-C, в то же время Swift позаимствовал из него самые удачные идеи. Вместе с тем разработчики сделали языки совместимыми, то есть в одной программе может быть код как на Swift, так и на Objective-C. В мире имеются миллиарды строк кода и сотни тысяч унаследованных программ, написанные на Objective-C, поэтому от его поддержки точно не будут отказываться.

При разработке Swift ставилась цель создать самый удобный язык системного программирования - быстрый, безопасный и выразительный.

Алгоритм на языке Swift работает в 2,6 раза быстрее, чем такой же алгоритм на Objective-C, и в 8,4 раза быстрее, чем на Python. Использование Swift делает процесс разработки программ более гибким и удобным.

Благодаря своему экспоненциальному развитию, 3 декабря 2015 года язык Swift был передан в сообщество открытых исходников. При этом Apple строго следит за его развитием, организовав комитет для его разработки. Теперь Swift доступен не только в системах Apple, но также в Linux. Все дополнительные инструменты для работы с языком, включая отладчик, стандартную библиотеку, менеджер пакет, тоже свободные и открытые.

За этим языком будущее. Более подробные сведения о нем ты сможешь узнать из упомянутого курса от GeekBrains « », в нем целый месяц отведен на изучение данного языка программирования.

App Store

Попросту говоря, App Store - это магазин контента для всего спектра Apple-девайсов. Здесь можно купить игры и приложения как от больших компаний, так и от независимых разработчиков. Каждый разработчик, в какой бы стране он ни жил, может продавать или распространять бесплатно свои программы на этой площадке цифровой дистрибуции. Чтобы начать это делать, надо зарегистрироваться как разработчик и купить лицензию для продажи своих приложений. Это плата за предоставляемый сервис и развитие магазина App Store.

Итоги

Мы разработали простое приложение для мобильной операционной системы iOS, используя для этого систему программирования Xcode вместе с языком Objective-C. Протестировали готовое приложение на симуляторе iPhone 7. Мы узнали, как построить пользовательский интерфейс с помощью Interface Builder, как связать графические элементы с кодом приложения, как создать обработчики событий. Познакомились с основами Objective-C. Кроме того, мы обратили внимание на перспективный язык Swift, используемый для разработки мощных и безопасных приложений для «яблочной» экосистемы.

Однако изученный материал - это только начало. Чтобы интенсивно прокачаться в направлении мобильного кодинга и разработки реально продаваемых приложений, мы рекомендуем пройти курс « » на сайте наших друзей .

Это достойный курс: пройдя его, ты точно не потратишь время зря. Он начинается с двух подробных курсов по языку Java, затем следует изучение базового программирования под мобильную операционную систему Android. Далее курс по базам данных в общем и языку SQL в частности. Затем углубленный курс по разработке профессиональных приложений для Android. После этого вектор изучения перейдет в сторону Apple-систем: два подробных курса по языку Objective-C и полезный курс по Swift.


Лекции курса ведут профессиональные преподаватели, имеющие большой опыт в разработке программного обеспечения. Если что-то непонятно, можно, не откладывая, задать вопрос. Вообще, обучение на GeekBrains - живой процесс, можно общаться, задавать вопросы, помогать с ответами. Для проверки полученных знаний преподаватели выдают домашнее задание, которое затем проверяется. После прохождения обучения тебя ждет гарантированная стажировка в IT-компании. А дальше все зависит от тебя, если ты покажешь себя как грамотный специалист, тебя пригласят на работу.

Специальный проект с компанией



Просмотров