Как создать своё первое iOS-приложение. Подробная инструкция от профессионалов
Спокойно, это не так сложно, как может показаться на первый взгляд
Научиться мобильной разработке не так трудно: главное — знать, с чего начать. Ильдар Гильфанов, iOS Teamlead e-legion и эксперт курса «iOS-разработчик» онлайн-университета «Нетология» считает, что разбираться во всех символах кода и языках разработки лучше сразу на практике. Специально для «Цеха» он подготовил пошаговый план действий по изучению разработки на iOS и созданию своего первого приложения.
Купите мак
Не хочется начинать с плохих новостей, но разрабатывать приложения под iOS (как и под другие яблочные ОС) можно только на macOS. Но не спешите ставить крест на карьере iOS-разработчика из-за дорогой техники Apple. Если вы только учитесь, рассмотрите варианты с виртуалками или хакинтошем. Инструкцию по применению можно легко найти в любой поисковой системе.
При покупке б/у техники проверьте совместимость версий macOS и среды разработки Xcode. Если вы не уверены, что мак получит ещё пару новых версий ОС, лучше воздержаться от такой покупки.
Три рекомендации при выборе мак:
- 8 Гб оперативной памяти (в некоторых маках её можно менять);
- SSD (его тоже можно поставить позже, заменив HDD);
- 4 ядра (их поменять нельзя, поэтому постарайтесь взять хотя бы 4).
Изучите Swift
Итак, мак у вас есть, и вы уже, наверное, хотите покорять рейтинги App Store, но сначала нужно освоить инструменты, с которыми вы будете работать. Самый важный — это, конечно, язык программирования Swift.
Swift очень дружелюбен к начинающим. Вы в этом убедитесь, написав свою первую программу — Hello World. Это простейшее приложение, которое создают все новички в разработке на первом уроке, оно выводит окно с вашим именем и приветствием. Его можно написать даже, если вы еще не знаете всех инструментов языка.
Благодаря Swift playground в среде разработки Xcode можно начать писать код, не разбираясь в самой среде разработки и особенностях системы, а ещё — на iPad есть приложение Swift Playgrounds. Это настоящий редактор кода, в котором можно разрабатывать небольшие приложения, игры и изучать Swift в интерактивном учебнике.
iOS-приложения разрабатываются в полноценных проектах. В них можно не только писать код, но и работать с ресурсами, интерфейсами, тестами, а также настраивать и публиковать проект.
Не забывайте практиковаться. Если вы обучаетесь самостоятельно, и в доступных вам книгам или вебинарах нет практических заданий, придумайте их сами. Запускайте примеры кода, пробуйте сразу применить на практике полученные знания, экспериментируйте.
Основные фреймворки iOS
Помимо языка разработки вам нужно знать, как создавать пользовательский интерфейс и переходы между экранами, как получать данные по сети и сохранять информацию в памяти телефона, как запустить приложение на симуляторе и как искать в нём ошибки. Вам предстоит много изучать самостоятельно и работать, но старайтесь не отклоняться от своего плана и не закапываться в изучение ненужных вам сейчас технологий.
Для начала сосредоточьтесь на изучении UIKit — это фреймворк для создания интерфейса iOS-приложения. Кнопки, текстовые поля, лейблы, списки, анимации, окна, жесты, drag-and-drop — всё это и многое другое входит в UIKit.
Для создания интерфейса приложения в Xcode есть графический редактор. Он позволяет легко добавлять нужные элементы на экран и задавать правила их построения. Им пользуются не только начинающие, но и профессиональные разработчики. Так что не тратьте время на вёрстку в коде.
Foundation — второй по важности системный фреймворк. С его помощью вы будете работать с датами, ресурсами, файловой системой, данными пользователя и сетью. Часть его обязанностей забрала на себя Swift Standard Library. Например, строки и коллекции. Но Foundation всё равно остается важным компонентом системы.
Планирование
Во время изучения системных фреймворков вы можете начать работу над собственным приложением. Возможно, это будет просто to-do лист. Или у вас на телефоне есть очень полезное приложение, но оно чем-то не устраивает, и вы хотите сделать своё. А может у вас есть супер идея для совершенно нового приложения. В любом случае, для начала вам нужно определиться с тем, что будете делать:
- Проанализируйте похожие приложения в App Store. Это поможет понять, чего не хватает пользователям ваших конкурентов.
- Составьте список функций своего приложения. Запишите все свои идеи, чтобы не забыть.
- Выберите из них несколько самых важных. Это будет ваш объём работы на первый релиз.
Важными являются базовые функции приложения. То есть те, без которых оно не имело бы смысла. Приложение, состоящее только из таких функций, называется MVP (Minimum Viable Product). Постарайтесь также добавить в список несколько функций, которые отличали бы ваше приложение от конкурентов и представляли бы для пользователя особую ценность.
Пора переходить к дизайну. Начните с карандашных набросков, а если хотите создать несколько настоящих макетов, не обязательно осваивать сложные приложения. Можно ограничиться даже Keynote.
Конечно, вы не сможете заменить профессионального аналитика, маркетолога и дизайнера, но если вы работаете в одиночку, вам придётся самостоятельно выполнить эти шаги. Очень важно определить и зафиксировать объём работы. Ведь любая цель должна быть конкретной и достижимой. Иначе вы рискуете никогда не закончить своё приложение.
Разработка
Постарайтесь заранее подумать над тем, что и как у вас будет реализовано в коде. Конечно, не имея опыта, сложно продумать архитектуру приложения. Вот несколько советов, которые могут вам с этим помочь.
- Изучайте чужой код. В интернете есть огромное количество статей с примерами хорошего кода, а на Github можно найти исходный код целых приложений.
- Научитесь находить ответы на вопросы в интернете. Поисковик, Stack Overflow, документация, обучающие статьи и инструкции — в них вы найдете ответы на большую часть своих вопросов.
- Найдите человека или сообщество, чтобы задавать вопросы, на которые найти ответ не получилось. И если вы хотите получить хорошие ответы, научитесь задавать правильные вопросы — подробные.
Пора открывать Xcode и приступать к работе. Возможно, вы начнете с экрана авторизации или с основного экрана, а может быть, с создания общей архитектуры приложения. В любом случае, сохраняйте порядок с самого начала проекта:
- группируйте файлы по папкам;
- удаляйте неиспользуемый код;
- придерживайтесь своего кодстайла;
- не дублируйте код;
- не допускайте разрастания вью контроллера (MVC не заставляет писать весь код в контроллере).
Вам придётся взять на себя и обязанности тестировщика. Обязательно проверяйте всё, что делаете. Если что-то может пойти не так, оно пойдет не так. Поэтому проверяйте все сценарии, а не только позитивные. Полезно дать своё приложение другому человеку. Это позволит найти ошибки не только в реализации, но и в самой концепции приложения.
Выкладка в App Store
Ещё одно препятствие для независимых разработчиков — это необходимость платить $100 за возможность выложить своё приложение в App Store. О том, как зарегистрироваться, в интернете информации много, ее найти легко.
После регистрации аккаунта можно переходить к публикации. Для этого нужно выбрать в Xcode меню Product->Archive. После архивации — нажать кнопку Distribute App и дождаться выгрузки.
Приложение попадает в App Store Connect. На этом сайте вам нужно заполнить информацию о приложении, добавить скриншоты и информацию для ревьюверов Apple. Да, ревью проходить обязательно. Ознакомиться с правилами можно тут. Отчасти это рулетка, но если следовать всем пунктам, то вероятность успешного ревью сильно увеличивается. Для начала изучите основные причины для отказа. Приложение должно:
- Стабильно работать и не вылетать.
- Иметь рабочую ссылку на пользовательское соглашение.
- Быть полностью законченным, работоспособным и функциональным.
- Давать четкие объяснения при запросе разрешений на GPS, камеру, контакты и так далее.
- Иметь скриншоты и полное описание в магазине (их отсутствие — одна из самых распространённых причин для отказа).
- Быть уникальным. Нельзя выкладывать копию другого приложения (в том числе своего собственного).
- Не использовать приватное API.
Обязательно нужно указать тестовый аккаунт для ревьюверов в специальном поле, если в приложении есть авторизация. Если приложение содержит встроенные покупки, то стоит уделить особое внимание к требованиям разделе 3.1.
Если вам отказали, постарайтесь разобраться, в чём причина, и исправьте нарушения. Можно попытаться оспорить решение, но это не всегда удаётся. Если не получится, попробуйте созвониться с ревьюверами и обсудить проблему голосом.
Дальнейшее развитие приложения
Поздравляем! Ваше первое приложение уже в магазине, а вы с надеждой смотрите на счётчик скачиваний. Но работа ещё не окончена. Дальше вам предстоит развивать и поддерживать своё приложение.
После того, как вы разберетесь с основами, переходите к изучению других технологий. GPS, push-уведомления, Apple Pay, Siri, AR, информационная безопасность, работа с медиа и огромное количество third party-сервисов и фреймворков — изучая и используя в работе что-то новое, вы повышаете свою ценность на рынке. Поэтому, если вы хотите быть хорошим разработчиком, никогда не останавливайтесь на достигнутом.
Подводя итог
В статье мы постарались отразить самые базовые вопросы мобильной разработки на платформе iOS и этапы создания простого приложения. Способов дальнейшего погружения в тему есть очень много. Вы можете самостоятельно читать профильную литературу и смотреть обучающие ролики на Youtube, там их легко найти. Можете смотреть вебинары или лекции с преподавателями, которые также наглядно показывают, что такое мобильная разработка.
Мы также предлагаем обратить внимание на дополнительные онлайн- и офлайн-курсы, которые дают готовый план обучения, структурированную информацию и дополнительную мотивацию не забросить обучение. Подходящих курсов сейчас на рынке представлено достаточно много, и если этот вариант кажется вам наиболее подходящим, смело изучайте образовательные программы. Хорошая программа должна предусматривать:
- Знакомство с языком программирования Swift.
- Изучение фреймворков для создания пользовательских интерфейсов, работы с сетью, многопоточности и хранения данных.
- Освоение среды разработки, методов поиска ошибок и тестирования.
- Практические задания.
- Возможность задать вопрос преподавателю и пообщаться с однокурсниками.
Если все эти пункты есть в выбранном вами курсе, значит результат не заставит себя ждать, и вы напишите не одно свое мобильное приложение.
Запуск и тестирование своих iOS-приложений на устройстве без аккаунта разработчика и без Jailbreak
При разработке мобильных iOS приложений в среде XCode запуск и тестирование происходит на симуляторе. Однако каждый профессиональный разработчик вам скажет, что окончательную отладку нужно производить на реальных устройствах. Причем лучше на нескольких различных устройствах. На iPhone 5, на iPhone 6, на различных версиях iPad и iPod. Однако для этого политика компании Apple заставляет приобрести аккаунт разработчика. Он стоит $99 и для начальных шагов в программировании не всегда оправданы эти затраты. И вот наконец, просьбы разработчиков были услышаны и появился способ легального запуска своих приложений на реальных устройствах и этот способ абсолютно бесплатный.
Были различные варианты решения этой проблемы от установки на устройство Jailbreak до недорогого варианта добавления UDID устройства к реально существующему аккаунту разработчика. (Последний способ стоит 300 руб). Но как написано выше с выходом XCode 7 эта проблема была решена.
Так что же нужно для запуска своих приложений на реальном устройстве?
Все что вам нужно, это Apple ID! Больше ничего не нужно.
Подключение устройства
Подключите iPhone, Ipod Touch, или IPad к вашему Mac с помощью кабеля USB кабеля. В меню Xcode зайдите Window → Devices, чтобы открыть список устройств. Окно выглядит следующим образом (я использую iPad Air):
В левой панели окна Xcode находится список устройств, которые могут быть использованы для запуска разработанных приложений. Нажмите на изображение вашего устройства, чтобы выбрать его. Если устройство используется впервые вместе с Xcode, вы увидите сообщение что-то вроде, «“iPad is not paired with your computer.«
Для того чтобы связать устройство с Xcode вам нужно разблокировать устройство (Slide to unlock). После разблокировки, на экране устройства появится сообщение с просьбой доверять этому компьютеру. Нажмите «Разрешить» чтобы продолжить. Теперь Xcode выведет страницу, на которой напишет что позволяет использовать устройство для тестирования.
Дайте ему несколько минут — если процесс занимает слишком много времени, возможно потребуется отсоединить устройство и подключить его снова. Есть вероятность, что выскочит сообщение об ошибке: «An error was encountered while enabling development on this device.» Потребуется отключение устройства и перезагрузка его. Также перезапустите Xcode, прежде чем вы снова подключите устройство.
Так должно выглядеть окно с сопряженным устройством:
Настройка AppleID
Теперь, когда устройство сопряжено с компьютером, нужно связать ваш AppleID с Xcode. Можно использовать тот же идентификатор AppleID, что вы уже используете с Itunes и вашим устройством, однако, если вы разрабатываете корпоративное iOS приложение, то можете создать новый AppleID, чтобы разделить процессы разработки. Конечно, если у вас уже есть оплаченный аккаунт разработчика вы должны использовать именно его
Откройте меню Xcode -> Preferences -> Accounts:
Нажмите кнопку «+» внизу и выберите «Add Apple ID«. Xcode попросит логин и пароль от AppleID. Введите их и нажмите «Add«. Xcode проверит ваши данные и добавит их к списку аккаунтов.
Примечание: возможно Xcode не сможет использовать ваш Apple ID при условии, если он был ранее был использован как аккаунт разработчика, срок действия которого в настоящее время истек. Простейшим решением в этом случае является создание нового Apple ID. Это бесплатно и займет всего несколько минут. https://appleid.apple.com
Настройка проекта XCode
Вы все еще должны указать Xcode использовать эту учетную запись при создании вашего приложения. Перейдите к экрану настроек проекта и на вкладке General нажмите на Team, чтобы выбрать ваш Apple ID.
Ниже поля выбора команды вы видите предупреждение, «No code signing identities found» или «No matching provisioning profiles found«. Не лишним будет знать, что означают эти предупреждения. Для того чтобы Xcode мог запустить приложение на вашем iPhone, iPad или iPod, приложение должно быть подписано цифровой подписью с сертификатом на разработку (Development Certificate). Сертификат является электронным документом, который идентифицирует вас как разработчика iOS приложений и действует только в течение ограниченного периода времени. Приложения, которые вы хотите представить в App Store должен быть подписаны другим сертификатом «Distribution Certificat». Для использования Distribution Certificat необходимо быть членом платной программы разработчиков, однако использование сертификата разработки (Development Certificate) является бесплатным. В дополнение к действующему сертификату также необходим так называемый профиль обеспечения (Provisioning Profile) для каждого приложения которое вы разрабатываете. Xcode использует эти документы чтобы подписать приложение для запуска на вашем устройстве.
Специфика данных документов на первоначальных этапах разработки не имеет значения. Просто примите, что вам нужен Provisioning Profile или приложение не будет работать на вашем устройстве. Создание сертификатов и Provisioning Profile, в XCode 7 это очень простая задача!
Нажмите кнопку Fix Issue. Нужно немного подождать пока Xcode автоматически регистрирует устройство с вашей учетной записью, создает новый сертификат разработки, загружает и устанавливает Provisioning Profile на ваше устройство. Раньше вы должны были бы сделать это все вручную, но теперь Xcode 7 берет всю работу на себя. В этот момент возможно вы увидите следующее сообщение об ошибке:
Идентификатор пакета Bundle Identifier — это идентификатор приложения и он должен быть уникальным. Если какое либо другое другое приложение уже использует этот идентификатор, то вы не можете его использовать.
Поэтому для 100% уникальности следует указывать собственное доменное имя для Bundle ID, например ru.proswift.TestApp. Исправить эту ошибку легко: измените Bundle Identifier и повторите попытку.
Также возможно вы получите эту ошибку:
Xcode должен знать об устройстве на котором вы собираетесь запустить приложение. Вот почему мы начали именно с подключения устройства. Еще раз проверьте, что ваш iPhone или iPad по-прежнему подключен к Mac, и что ваше устройство есть списке Devices. У меня это окно выглядит так:
В основном окне XCode еще раз выберете ваше устройство и нажмите кнопку Fix Issue и предупреждение должно исчезнуть.
Настройка связки ключей
Все настроено и готово к работе. Нажмите Run, чтобы скомпилировать и запустить приложение. В этот момент вы можете получить всплывающее окно с вопросом «codesign wants to sign using key … in your keychain». Если вышло это сообщение, нажмите Always Allow — т.е. разрешать всегда. Это сообщение говорит о том, что Xcode пытается использовать новый сертификат разработки, который вы только что создали, но просит дать ему разрешение для этого.
Ваше приложение заработало на устройстве без аккаунта разработчика и без Jailbreak? Потрясающие! Если нет, то читайте дальше …
Возможные проблемы и их решение
Есть несколько ошибок, которые могут возникнуть при попытке запуска своего iOS приложения на реальном устройстве, особенно если вы никогда не делали этого раньше. Так что не паникуйте, если вы столкнетесь с проблемами.
Устройство не подключено.
Как ни странно это самая распространенная ошибка, поэтому я напишу о ней в третий раз в этой статье. Убедитесь, что ваш iPhone, iPod Touch, или iPad подключены к Mac. Устройство должны быть списке устройств Xcode, и на нем не должно быть желтого значка предупреждения, о том что устройство не доверяет компьтеру.
Подозрительный не одобренный Apple разработчик.
Если XCode выдаст такое сообщение, а на устройстве выйдет сообщение с текстом «Untrusted Developer. Your device management settings do not allow using apps from developer «, не нужно втираться в доверие к Apple :-). Для решения этой проблемы откройте на устройстве Настройки -> Основные -> Управление Устройством. Выберете профиль вашего Apple ID и вы увидите список приложений на устройстве, которые нужно перевести в разряд «Проверенные». Попробуйте снова запустить приложение.
Устройство заблокировано.
Если на устройстве установлен пароль, то вы можете получить это предупреждение:
Приложение не будет работать если устройство заблокировано. Для решения нужно разблокировать устройство и запустить компиляцию еще раз.
Надеюсь данная информация будет вам полезна. По себе знаю, что начиная разрабатывать iOS приложения, разработчики сталкиваются с проблемой тестирования своих приложений на реальных устройствах. А несправедливость в виде $99 никак не греет душу брата программиста. И даже если разработчик решается на Jaibreak, все равно для запуска потребуется куча сторонних бубнов. Вариант описанный в данной статье позволит вам запускать и тестировать свои приложения без этих бубнов и совершенно бесплатно.