Создание iOS приложения. От идеи до результата
Привет, Хабр. Хочу рассказать, как создал свое первое iOS приложение и что из этого получилось.
Идея
Идея для приложения возникла сама собой: создай то, чем бы ты с удовольствием пользовался бы сам. Я постоянно пишу заметки. Ведь у каждого занятого человека существует определенный набор фактов, которые он получает в течение дня, и которые стоит запомнить. А так как все люди забывают (и это нормально!), то нет лучшего решения, чем просто записать. Я все время чувствовал какое-то неудобство при работе с представленными в AppStore приложениями-заметочниками. Излишняя сложность в управлении, наличие ненужных категорий, нагромождение дополнительной информации — все это мешает приложению выполнять его основную функцию. Плюс ко всему многие из этих вещей выглядят просто некрасиво.
Поэтому, поставив все ставки на простоту и удобство, я приступил к созданию концепции. Модель приложения с единым списком заметок. Все в одном месте, что может быть проще? Если что–то имеет большую ценность или актуальность, совсем не обязательно вешать на него ярлык, ведь достаточно просто переместить более важную заметку в топ списка. Старые и ненужные записи постепенно будут опускаться вниз и в последствии будут удалены пользователем.
Функционал
После того, как концепция была придумана, я выписал основной функционал — те вещи, на которые я хотел бы сделать акцент в управлении:
- Один главный список для всех заметок;
- Все действия с заметой должны выполняться одним движением — создание, редактирование, удаление, выделение, перемещение в топ и шаринг;
- Возможность легко поделиться заметками в Facebook, Twitter, скопировать или отправить на электронную почту;
- Выделение заметки несколькими цветами, в зависимости от приоритета и срочности;
- Удобное редактирование в портретной и ландшафтной ориентации;
- Дневная и ночная темы оформления для удобной работы в любое время суток
Инструментарий
Перед тем, как писать код в Xcode, я полностью воссоздал внешний вид приложения в векторном редакторе Sketch. Эта программа отлично подходит для быстрого создания макетов. Для этого приложения доступна масса плагинов, среди них есть Sketch Preview — просмотр артборда сразу на устройстве через программу Skala Preview. Всего лишь нужно скачать бесплатные программы Skala Preview на компьютер и мобильное устройство и установить плагин. После этого выбрать нужный артборд, нажать комбинацию Command+P и уже через секунду внешний вид приложения транслируется на устройство.
Кроме того, в приложении очень удобно создавать скриншоты для публикации в AppStore. Для каждого размера экрана создавался свой набор артбордов, вместе с использованием стилей, время потраченное на форматирование минимально. Но про публикацию чуть позже.
Разработка
В приложении я использовал всего два контроллера – один непосредственно для всех-всех-всех заметок, другой — для отображения небольшого туториала при первом запуске. Работу с базой данных я организовал с помощью фреймворка CoreData.
После создания базового функционала (создание, удаление, редактирование заметок) я решил улучшить каждую из этих функций.
Согласитесь, редактирование текста в iOS реализовано достаточно неудобно. При допущении ошибки в слове для перемещения курсора на нужную позицию необходимо сделать касание и не убирая пальца от экрана, попытаться попасть в выбранную область. К тому же после исправления ошибки нужно вернуть курсор назад в конец строки. В своем приложении я решил переработать механизм перемещения курсора: для того чтобы внести изменение в слово, нужно лишь сделать свайп в зоне между клавиатурой и набираемой фразой не загораживая при этом обзор текста.
Анимации удаление и перемещения в топ я решил реализовать самостоятельно, а визуальное сопровождение максимально приблизить к реальной жизни. Что-то приобрело более высокий приоритет — свайп вправо и заметка перемещается в топ списка. Чтобы удалить — свайп влево и анимация зачеркивания покажет на сколько еще нужно продлить свайп чтоб завершить удаление. При случайном удалении — нужно просто потрясти устройство («Shake»), и заметка вернется на свое прежнее место.
Для того, чтобы выделить заметку, я использовал LongTapGesture и три основных цвета приложения — белый, синий и красный, которые и сформировали главную палитру цветов.
Чтобы поделиться заметками из приложения я добавил дополнительный нижний бар, для появления которого необходимо сделать свайп из-под нижнего края устройства (Bottom Edge Swipe). В панели для шаринга собраны все самые важные действия — публикация в Facebook или Twitter, отправка списка заметок по электронной почте, или просто копирование для дальнейшего использования. Механизм очень простой — нужно выделить необходимые записи, после — нажать на нужную функцию. Если вы необходимо вернуться в обычный режим — свайп по бару, но уже вниз.
Переход между дневной и ночной темами я решил сделать автоматическим — почему никто еще не додумался менять внешний вид в зависимости от положения солнца на небе? Все очень просто — после наступления темноты и после восхода солнца тема меняется, при этом пользователю не нужно отвлекаться от создания заметок, ведь приложение всегда будет автоматически подстраиваться под окружающие условия.
Нейминг
Название приложения — самая важная часть при разработке, это первое что видит пользователь в магазине. На хабре есть отличная статья по этому поводу. К подбору имени я решил подойти основательно: для начала я перебрал список 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
Особенности iOS-разработки: к чему себя готовить, если очень хочется приложение для девайсов Apple
Две основные платформы, под которые разрабатывают мобильные приложения, — iOS и Android. Они контролируют 99% рынка. Обе имеют свои преимущества, но есть определенные причины, по которым запуск сначала на iOS может быть более выгодным, чем на Android — это обособленность экосистемы Apple и платёжеспособность владельцев iPhone. Первая причина сулит меньше неожиданностей в разработке. Вторая — прибыль.
Что нужно учитывать при создании приложений для iOS
1. Однотипность моделей iPhone
Приложение должно быть адаптировано под разные размеры экранов и при этом выглядеть безупречно. Пользователю неприятно взаимодействовать с приложением, в котором один элемент «наплывает» на другой, текст обрезается, а изображения занимают почти всё экранное место.
Из статьи про особенности мы знаем, что чем больше парк устройств у операционной системы, тем сложнее тестировать приложения. У Apple нет такой проблемы, потому что устройства похожи между собой.
Однотипное проектирование устройств снижает нагрузку при тестировании: чтобы проверить работоспособность приложения, тестировщикам хватает нескольких моделей с разной диагональю экранов.
2. Новые версии операционной системы и поддержка
Новые версии операционной системы iOS выходят раз в год. Каждое обновление — это тренды, полезные технологии и увеличение производительности. Люди охотно обновляют операционку и ожидают, что у приложений появится новая функциональность. Но «автоматически» этого не происходит. Мобильные приложения нужно адаптировать под новые версии. Это помогает:
а) избегать конфликтов между системой и приложением, ведь некоторые функции могут перестать работать;
б) оправдывать пользовательские ожидания.
С выходом новой iOS Apple прекращает выпуск обновлений на устаревшие модели телефонов. Чтобы продолжать поддержку известных приложений с большой аудиторией, часть которой ещё пользуется старыми iPhone, разработчикам нужно писать дополнительный код для корректной работы приложений на ранних версиях iOS. Для более «камерных» приложений достаточно поддерживать работу на последних версиях.
3. Совместимость с айпадами
Надо изначально решить, предусмотрено ли открытие вашего приложения на разных платформах (iOS, iPadOS, macOS). Если да, то при разработке и проектировании нужно учесть массу особенностей, например компоновку интерфейса приложений на размерах экрана 960×640 пикселей, а не только на размерах iPhone.
Без отдельной проработки экранов под другие девайсы приложение на них будет открываться некорректно: возможно, элементы будут накладываться друг на друга, а текст переноситься неправильно.
Зачем соблюдать гайдлайны Apple
Human Interface Guidelines — это «каноны», по которым проектируется пользовательский интерфейс устройств Apple. Унифицированные, нативные элементы помогают пользователю интуитивно ориентироваться в разных приложениях, а не изучать каждое заново.
Вот основные принципы , которые нужно соблюдать при разработке приложений:
- Эстетическая целостность — дизайн не противоречит предназначению приложения. Мы не можем добавить в приложение, которое выполняет серьёзную задачу, милую анимацию: Apple считает это неуместным.
- Последовательность — навигация в приложении очевидна: используются известные значки, стандартные стили текста и единая терминология, а приложение реагирует на действия людей так, как они ожидают.
- Прямое действие — приложение однозначно реагирует на повороты устройства и жесты пользователя.
- Обратная связь — приложение даёт пользователю обратную связь в ответ на его действия: интерактивные элементы выделяются при нажатии, индикаторы прогресса сообщают о состоянии длительных операций, а анимация и звук помогают прояснить результаты действий.
- Аналогичность — люди быстрее понимают приложение, если могут взаимодействовать с ним по аналогии с физическим опытом: «смахивать» экраны, «перетаскивать» элементы, «прокручивать» страницы.
- Пользовательский контроль — В iOS все контролируют люди, а не искусственный интеллект. Приложение может предупредить или уведомить об ошибке, но никогда не будет принимать решения за пользователя.
Несоответствие гайдлайнам в дизайне приложения — это обман пользовательских ожиданий. App Store не сможет принять такой проект. При разработке будьте готовы к тому, что основные решения уже продуманы за вас, а вам остаётся только следовать им.
Жёсткие требования App Store: какие сложности возникают при публикации приложения
1. Стоимость публикации
Чтобы опубликовать приложение в App Store, нужно зарегистрировать аккаунт разработчика и платить за членство в Apple Developer Program $99 каждый год. Для сравнения аккаунт стоит всего $25 долларов — и это разовый платёж.
Аккаунт разработчика можно готовить со старта разработки — его проверяют на подлинность от двух до четырёх недель. Если зарегистрироваться в самый последний момент, можно пропустить намеченную дату релиза.
2. Время размещения в сторе
На релиз приложения уходит около месяца:
- 2–4 недели — регистрация аккаунта и проверка документов на стороне Apple;
- 1 день — загрузка маркетинговых материалов в App Store Connect;
- 2–3 дней — ревью нового приложения (ревью обновления — 1 день).
Если вы заранее подготовили маркетинговые материалы и зарегистрировали аккаунт разработчика, то время релиза сокращается до дней, но и здесь нужно себя обезопасить, ведь App Store может вернуть приложение на доработку, и тогда релиз затянется.
3. Строгое ревью
Apple разделяет ответственность за приложение, которое вы публикуете в App Store, поэтому каждый проект проходит строгое ревью. Рецензенты проверяют стабильность работы приложения, проверяют, соответствует ли оно правилам Apple, защищает ли пользовательские данные и оценивают полезность приложения.
Периодически Apple проводит чистки уже опубликованных приложений в App Store. Даже если вам попался не очень внимательный рецензент, который пропустил нарушение, через время ошибку всё равно вычислят. Лучше не доводить до греха и сразу поручить разработку студии, которая знает, чего хочет Apple, — мы всегда на связи: пишите или звоните , чтобы начать работу над приложением.
Как заработать на
Пользователи Apple готовы платить за качественные продукты: это относится как к девайсам, так и к их программному обеспечению. По статистике, владельцы iOS покупают в приложении во много раз охотнее, чем пользователи Android. Можно не бояться разрабатывать приложение, в котором есть платная подписка или встроенные покупки: если приложение решает проблему пользователя, то пользователь не остаётся в долгу.
Если сравнить цены в сторах, то можно обнаружить, что некоторые приложения в App Store продаются дороже, чем в Google Play. Приложение Duet Display — второй дисплей для ноутбуков и ПК — под iOS стоит 899 ₽, а под Android 790 ₽. В этом примере разница не большая, но показательная: в App Store можно установить более высокую цену — пользователи готовы к этому.
Некоторые проекты прекрасно чувствуют себя только на iOS, и при этом приносят своим владельцам прибыль.
- Astropad Standart — приложение, которое превращает iPad в графический планшет за 2790 ₽. Пользователи покупают его, потому что планшет за подобную цену не найти — пример точного попадания разработчиков в боль ЦА.
- Менеджер задач Thing 3 — мы уже рассказывали про это приложение, но готовы повториться: Thing 3 — блокнот, который закрывает все возможные потребности по планированию. Цена удачного распределения дел — 899 ₽.
- Дневник тренировок Gym Record — проект, который сделали мы. Само приложение бесплатное, но в нём есть встроенные покупки.
Приложения в App Store защищены от пиратства: если захочет умыкнуть ваш проект из стора бесплатно, то ему придётся пожертвовать гарантией на своё устройство. Поэтому установить взломанное приложение, скачанное из интернета, или невозможно, или обойдётся куда дороже, чем подписка.
Если вы хотите узнать об особенностях разработки под Android — читайте нашу статью. А если вы уже готовы сделать свой выбор и начать работу над мобильным приложением — звоните или пишите нам . Мы разрабатываем с 2010 года и знаем, как сделать проект, не расходуя ваше время и деньги впустую.
Основы разработки приложений для системы iOS
IDE от Apple используется для написания iOS-приложений. Xcode – это среда разработки с удобным графическим интерфейсом, заточенная под языки программирования Objective-C и Swift. Она включает отладчик, систему контроля версий и управлением устройствами, iPhone Simulator, инструменты профилирования, Interface Builder и многое другое.
Минимальные системные требования для Xcode:
- Mac с macOS 11 и выше.
- ОЗУ от 4 ГБ.
- Не менее 8 ГБ свободного места на диске.
- Mac, MacBook, iMac или Mac mini 2013-2015 или новее.
Xcode выпускается только для macOS, а значит вам понадобится Mac. Xcode не работает на iPad. Доступно несколько сторонних альтернатив для Windows, но они далеки от идеала. Добро пожаловать в инфраструктуру Apple, которая никогда не славилась открытостью.
Политика Apple в отношении загрузки приложений в App Store
Жесткие требования корпорации неоднократно заставляли разработчиков менять подход к созданию продуктов. Чтобы не потратить время напрасно, ознакомьтесь с рекомендациями Apple в отношении загружаемых на App Store приложений. Также стоит изучить список распространенных причин, по которым приложения отклоняются модераторами. Туда входят сбои, неработающие ссылки, недобросовестная реклама и неполная информация для пользователя. Также может блокироваться политический контент и контент для взрослых.
Разработчики часто ругают Apple за отсутствие гибкости. Бесконечные списки требований создают им проблемы, зато пользователи получают более качественные и более безопасные приложения. Не абсолютно безопасные (единичные случаи попадания вредоносного кода в AppStore известны) конечно, но в магазине Apple нет такого количества зловредов как в Google Play. Самое главное – аудитория AppStore гораздо охотнее расстается с деньгами, поэтому приложение для iOS намного проще монетизировать.
Помимо требований к техническим деталям есть набор рекомендаций по внешнему виду. Конечно, соответствие приложений одному стандарту не всегда означает хороший дизайн, но тут ничего не попишешь. Чтобы научиться грамотно проектировать интерфейс, посетите страницу Apple Human Interface Guidelines . Чтобы немного упростить это массивное руководство, из него выделили базовый набор правил (что можно, а что нельзя).
Корпорация Apple довольно консервативна в процессе проверки приложений, так что если вы сделаете что-то рискованное – это будет отклонено. Еще Apple не позволит вам интегрировать сторонние библиотеки в игру – учитесь пользоваться существующими средствами разработки.
Потребление памяти
Одна из проблем в iOS-разработке – медленная загрузка программы и потеря производительности. Чтобы сэкономить ресурс, избегайте чрезмерного использования функции загрузки png-файлов в GLSprite Demo, а при рисовании обрезайте спрайты более точно и плотно. Ограничивайте себя и не раздувайте приложение. Помните о том, что пользователи не любят долго ждать.
Удобные игровые платформы и инструменты для создания мобильных игр
Помимо двух наиболее популярных движков ( Unity и Unreal engine 4 ) существует ряд неплохих платформ для разработки игр для iOS:
- GameMaker – это набор средств для создания непрерывной игры с интерфейсом перетаскивания и экспортом различных инструментов. Система имеет собственный встроенный скриптовый язык, похожий на JavaScript и позволяющий вам экспортировать игру прямо на платформу iOS.
- Используя Stencyl , вы можете создавать 2D-игры без каких-либо навыков программирования. Это игровой движок, позволяющий разрабатывать приложения для iOS, Windows, Linux или OS X, просто передвигая блоки с кодом.
- LiveCode – мощная платформа для создания собственных игр и приложений. С помощью различных виджетов, расширений и библиотек вы можете ускорить процесс разработки. Это хороший вариант для обучения начинающих программистов.
- Cocos 2D . Бесплатная программа для разработки игр. Построение логики реализуется за счет перемещаемых спрайтов. Обеспечивает реалистичную физику двухмерным объектам.
- Kobold 2D – это улучшенная версия Cocos2D для IPhone. Она более удобна в использовании и имеет мощную функциональность.
- PhoneGap – это бесплатная платформа для разработки приложений, использующая стандартные веб-API для всех типов мобильных операционок, в том числе для iOS.
- Marmalade SDK– н абор инструментов, библиотек, шаблонов и документов, необходимых для разработки приложений для мобильных ОС.
- AppCelerator– основанная на Eclipse легкая IDE с возможностью создавать приложения с нативным интерфейсом.
Как создать игру? Несколько советов начинающим
Чтобы начать создавать iOS-игры, необходимо учесть несколько моментов:
- План. Продумайте все до мелочей – сюжет, физику, логику, реализацию объектов и магические плюшки, зафиксировав последовательность своих будущих действий в неком документе.
- Графика. Весь графический интерфейс игры легко реализуется при помощи специальных движков и библиотек, рассмотренных в предыдущем пункте. Если вы хотите создать уникальный дизайн, вот несколько полезных инструментов с готовыми решениями: Assembly, Canva, Lighto, Font Candy, PicLab.
- Звуки, музыка, диалоги. Все звуковое сопровождение можно создать самому, но проще воспользоваться готовыми наработками из популярных библиотек: PXL APPS, Sound Kit for Prototypes, octave и др.
- Динамика. Чтобы оживить персонажей, без написания кода не обойтись. Однако описанные выше nocode-платформы с сервисом перетаскивания блоков также вполне подойдут.
- Тестирование. Можно погонять уже готовое приложение самостоятельно, но без свежего беспристрастного взгляда будет сложно создать что-то стоящее. Тестирующих компаний немало – testflight, firebase, AWS Device Farm и пр. Выбор зависит от вас.
- Релиз. После тестирования не пожалейте времени и устраните все мелкие баги. Поверьте, куда приятнее получать позитивные отзывы от пользователей приложения.
Полезные ссылки на обучающие материалы
- Официальное руководство Apple для начинающих разработчиков. Здесь вы узнаете про настройку Xcode, структурирование приложения, его реализацию и отправку в App Store.
- Swift . Основы программирования под iOS.
- Видеоролики Apple по разработке . Отличный ресурс для изучения приемов и знакомства с базовым набором инструментов.
- Возможности API . Обзор различных API для доступа к расширениям приложений, Touch ID, фотографиям, HealthKit и многому другому. Информация об интеграции продвинутых функций в приложение.
- Документация по фреймворку UIKit от Apple. Информация будет полезна и новичкам и профессионалам.
- Список iOS-приложений с открытым исходным кодом, размещенный на GitHub.
- Статья Apple об оптимизации работы приложений.
- Книга об устройстве iOS и macOS , автор – Джонатан Левин. Все самое необходимое для работы с операционными системами от Apple.
Для полноценной iOS-разработки потребуется macOS, но приобретение Mac новичку не всегда по карману. Даже на Mac mini последних конфигураций цены у Apple начинают кусаться. В этой ситуации можно воспользоваться ресурсом hackintosh.com или установить виртуальную машину. Дело тут даже не в железе, а в желании. Главное – не терять уверенности в себе и четко поставив цель, продвигаться к перспективной высокооплачиваемой профессии. Дорогу осилит идущий. Удачи!
Дополнительные материалы:
- Карьерный гид от новичка до профи: дорожная карта iOS-разработчика
- Где изучать iOS-разработку в 2021 году: каналы, блоги, комьюнити и курсы
- 5 навыков, необходимых iOS-разработчику