IOS-разработка для начинающих: учимся создавать приложения для iOS с нуля. Как создать приложение для iOS – от идеи до продажи

15.05.2019

Здесь я хочу опубликовать мой личный рейтинг iPhone и Android программистов. Я выражаю свое личное мнение как тестировщика мобильных приложений.
Я не могу сказать, что они лучше всех. Но работать с ними мне нравилось, потому что количество ошибок после выполнения ими той или иной задачи стремился к нулю. Т.е. эти люди делают свою работу качественно без брака. Если ошибка и обнаружена, то число ее переоткрытий практически не превышает одного раза. Ошибка исправляется раз и навсегда. Это достигается хорошим знанием платформы и просто хорошим качеством кода. Чем меньше ошибок, тем меньше тратится время на исправление. Меньше время разработки, значит вы тратите меньше денег на проект.
Я считаю наличие крешей в готовом продукте показателем качества продукта.
Если программа падает и теряет данные, пользователь скачает другую.
Итак, личный рейтинг. Те люди, с которыми я работал.

  1. Любимов Михаил , Разработчик iOS приложений, Sebbia, Ростов-на-Дону. Проект Shoppoints.
  2. Дмитрий , iOS Developer, Fidel.ru
  3. Андрей О iOS developer

Черный список:

  1. D-Systems или Распределенные системы . https://www.free-lance.ru/users/d-systems/portfolio/ Делали первоначально мой проект. Вместо сроков 3 недели это заняло 4 месяца. Ссылаются на то, что я начал тестировать, хотя разработка еще не была завершена. Я получил код очень плохого качества, хотя первоначально требовалось чтобы код был сделан так, чтобы легко написать версию под iPhone. Мне потребовалось много ресурсов чтобы потом делать переделки. Когда об этом было заявлено — они согласились переделать, но дальше молчание.
  2. Индусские программисты. Тот программист, с которым я работал по одному из проектов — число переоткрытий ошибок превышает 3. Приложение падало на каждом шагу… Любой чих за деньги….
  3. [email protected] - или Депинфотех. Не рекомендую связываться КАТЕГОРИЧЕСКИ. Спамят письмами, хотят взяться за любой проект, хотя не имеют ни опыта не разработки. При ставке 20 долларов в час предлагают Junior разработчика. Когда нужно сделать приложение под iOS присылают примеры работ на Android

Когда я был фрилансером, я работал с достаточно многими программистами.

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

  1. Ставка для программистов, у которых нет приложений в App Store — 300 рублей в час. Так или иначе программист будет изучать XCode за ваш счет, если он ничего не писал. Ставка опытного программиста — от 500 рублей в час. Особняком конечно лежит Москва. Тут ставки от 500 рублей и выше….
  2. По качеству программного кода русские программисты превосходят украинских и индийских коллег. По мне лучше взять разработчиков не из Москвы, а из провинции. Новосибирск, Казань…. Это актуально и для фирм, занимающихся разработкой.
  3. Если у вас есть проект, ищите программиста, который делал нечто похожее. Если это финансы — ищите кто делал расчеты. Если это игры — примеры игр. Разработчик будет делать меньше ошибок, если отрасль ему знакома.
  4. Предлагайте оценить сроки по каждой задаче. Если программист тратит на натягивание дизайна 2х кнопок 2 часа — это не ваш программист. Может я и утрирую, но исправление одной ошибки — не более 2х часов. Если ошибка сложная.
  5. Задайте программисту вопрос по математике. Нормальный программист сможет вывести одно неизвестное из формулы.
  6. Спросите работал ли программист с багтрекером, знает ли циклы обработки ошибки. Если работал, сколько переоткрытий ошибок у него обычно было.
  7. Спросите, сколько крешей обычно было в его приложениях под iOS. Почему они случались и насколько быстро исправлялись.

Подбор iOS разработчиков на проект

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

Контакты разработчиков

В общем если вам нужны контакты мобильных разработчиков, они есть ниже. Просто поделитесь ссылкой в одной из соц. сетей. Там есть и контакты разработчиков и специалистов по продвижению.
Удачи.

Анатолий Ларин
[email protected] мобильный маркетолог, буду подсказывать ^__^ http://touchin.ru

Александр Штучкин
[email protected] !

Николай Додонов
[email protected] Делаем свое приложение.

Полина Витенко
[email protected]
специалист по маркетинговым коммуникациям, очень-очень хочу больше узнать о маркетинге в сфере IT

Online
Дака Мартынюк
[email protected]

Ярослав Сеньшин
[email protected] Пишу первое приложение, поэтому хочется узнать все тонкости

Иван Козлов
[email protected]
Руковожу отделом мобильной разработки

Евгений Валеев
[email protected]
Технический директор мобильной софтверной компании

Алексей Гончаров
Готовим приложение, интересно)

Тимофей Утнасин
[email protected]
Компания FlexyMind — разработка детских развивающих игр для мобильных ОС

Наталия Давыдова
[email protected]
руководитель отдела мобильной разработки компании H&H http://handh.ru

Дима Орлов
[email protected]
Я делаю мобильные приложения

Моисеенков Алексей
[email protected]
основываю свою студию

Маргарита Сырцова, [email protected], директор компании по комплексному созданию облика компании, мотивирует желание развивать направление приложений

Поляков Максим
[email protected]
Я знаю как изменить мир, теперь мне надо понять как лучше на этом заработать.

Марина Виноградова
[email protected]
Мы запускаем скоро мобильное приложение

Даниил Соснин
[email protected]
Готовим мобильное приложение.

Online
Екатерина Жолобова
Жолобова Екатерина, [email protected] Мобильный маркетолог со стажем)

Завьялов Антон, [email protected] Разрабатываю проект для лиги маркетологов с интерактивной поддержкой

Насыров Наиль
[email protected]
Одно из направлений проекта в аспирантуре ИТМО

Владислав Александрович
Владислав Карбовский, разработчик
[email protected]

Александр Хитущенко
[email protected]
Руководство проектом мобильного приложения для туристов т

Илья Чернецкий
Илья Чернецкий [email protected] делаю мобильные приложения (http://coinkeeper.me, relevanceto.me etc)

Ольга Кабанова
Ольга Кабанова, [email protected], занимаюсь продвижением десктопных и мобильных приложений

Ксения Копылова
Ксения К.([email protected]) и Тимофей М. ([email protected]) — занимаемся разработкой мобильных приложений

Yura Easy
Лобынцев Юрий
[email protected]
руковожу разработкой мобильных приложений

Сергей Шмаков
[email protected]
SMM-менеджер buruki.ru + участвую в разработке нового приложения для buruki.ru для iOS и Android

Петр Фальковский
[email protected]
интересен рынок мобильных приложений

Надя Кошкина
Надежда Кошкина [email protected] — маркетинг IT-проектов; занимаемся разработкой собственного приложения. Леонид Назаров [email protected] — дизайнер интерфейсов.

Марина Калямина
[email protected]
Очень актуальная тема. В голове много идей для создания приложений, хотелось бы послушать советы

Глеб Буров
Глеб Буров, CTO Seedr
[email protected]

Виктор Штефанец
интернет-проекты
[email protected]

Вячеслав Богородицкий
[email protected]
руководитель проектов в веб-студии.
сейчас развиваем направление мобильных приложений.

Евгений Дементьев
[email protected]
Руководитель отдела мобильной разработки «Топфейс»

Иван Балашов
Андрей Маркин [email protected], маркетолог в сфере IT, планируется запуск мобильного приложения.

Online
Денис Каланов
Директор по развитию IT-Доминанты
[email protected]
Планируем запуск мобильного приложения…

Вероника Минина
маркетолог мобильных приложений, UFT
[email protected]
Мотивирует: быть в курсе know how,узнать об опыте коллег, получить новые знания, контакты.

Петр Василевский, Алексей Финагин
[email protected], [email protected]
Разрабатываем мобильное приложение.

Попова Татьяна
[email protected]
Развиваем он-лайн проект, готовим запуск его мобильной версии

Андрей Григорьев
Развиваем мобильное приложение Forex по iOS
[email protected]

Online
Александр Зайцев
Александр Зайцев [email protected] Интересна тема, т.к. сам занимаюсь разработкой.

Владислав Поклонцев
Поклонцев Владислав [email protected]
Разрабатываем первое мобильное приложение.

Вадим Скаржевский
[email protected]
Планирую делать приложение. Хочу узнать тонкости

Яна Кузьмина
[email protected]
Продакт менедер пары мобильных приложений

Сергей Грищёв
Грищёв Сергей
[email protected]
Основатель студии мобильных приложений ShadeApps, у нас вышло уже 2 приложения под iOS — ещё 3 находятся в разоаботке

Екатерина Макарова
[email protected]
Начинающий специалист по продвижению мобильных приложений, очень хочется перенять опыт.

Евгения Филина
e-mail:
[email protected];
[email protected]

Итак, вы приобрёли iPhone или iPad. Чудесные устройства, не правда ли? Какое-то время спустя пришла мысль “а не создать ли мне под него программу, которая завоюет мир?”. Я расскажу вам, с чего начать.

Первое, что вам понадобится – компьютер с операционной системой Mac OS X. Хотя бы Mac Mini (стоимость от 20000 рублей). По другому никак. На крайний случай, можно поставить под Windows или Linux систему виртуализации (VMWare, VirtualBox и т.д.), и уже там установить Mac OS X (не буду описывать сам процесс – на хабре уже много раз обсуждали).

Второе – нужно знание английского языка. Хотя бы в рамках «перевожу со словариком» - после первых 2-3 книг подтянете ещё и английский (что вообще никогда не помешает) до уровня «свободное чтение технической литературы». Переводные книги выходят с гигантским опозданием – полгода-год минимум. А большинство вообще не выходят на русском языке. Да и большую часть переводной программисткой литературы читать невозможно – переводят люди, далёкие от этой тематики.

Приготовьтесь купить n-ое количество электронных книг (можно и в бумаге, но а: везти будут долго; б: будет дороже). Стоят они примерно 25-80 долларов. Да, дорого, но оно того стоит.

Шаг 0: Необходимый базис

Программировать под iOS вы будете в основном на языке Objective-C. Objective-C - это ООП (объектно-ориентированное программирование) надстройка над языком C. Так что C знать обязательно. Необходимые знания можно почерпнуть в книге
David Mark, James Bucanek. Learn C on the Mac 2nd Edition

Шаг 1: Objective-C

Далее, нужны знания языка программирования Objective-C. Великолепный язык, относительно легко изучаемый.
Итак, основы языка можно изучить по книгам:
Scott Knaster, Waqar Malik, Mark Dalrymple. Learn Objective-C on the Mac 2nd Edition
или
Aaron Hillegass. Objective-C Programming: The Big Nerd Ranch Guide

Следующая книга является, скорее, приложением к предыдущим
Matthew Campbell. Objective-C Recipes

Следующее, что надо знать для полноценного ООП – паттерны проектирования. В идеале, крайне желательно прочесть книгу Банды Четырёх (Gang of Four. Design Patterns). Далее, книга о паттернах применительно к Objective-C:
Carlo Chung. Pro Objective-C Design Patterns for iOS

Шаг 2: iOS SDK и iOS UI

iOS SDK – это комплект средств разработки под iPhone, iPad и iPod. Без его отличного знания – никуда.
iOS UI – пользовательский интерфейс. Проще говоря, это кнопочки, ползунки, надписи и т.д и т.п. – всё что вы видите на экране вашего устройства. Естественно, и это надо знать как «отче наш».
Для начала, следует прочесть эту книгу
David Mark, Jack Nutting, Jeff LaMarche, Fredrik Olsson. Beginning iOS 6 Development

Ну и в довершении, можно пролистать приложение к двум предыдущим книгам
Hans-Eric Gronlund, Colin Francis, Shawn Grimes. iOS 6 Recipes

Весьма хороша следующая книга – вполне тянет на звание «полное руководство по разработке для iOS». К сожалению, книга несколько устаревшая, но это нисколько не умаляет её достоинств.
Joe Conway, Aaron Hillegass. IOS Programming: The Big Nerd Ranch Guide, 3rd Edition

Следующие две книги, так сказать, для совершенствования. Каждая из них является сборником уроков и объяснений тонкостей iOS SDK. Все эти материалы можно найти в разрозненном виде в этих ваших интернетах, но в этих книгах это собрано, отсеяно и отсортировано с особой любовью.
iOS 5 By Tutorials, Second Edition
iOS 6 By Tutorials

Приложение: Игры

Предыдущих книг вам будет достаточно, чтобы написать несложные приложения для вашего мобильного устройства. Сложные вы будете писать после огромного количества практики. В какой-то момент вам захочется написать игру, и этих знаний вам просто не хватит. Для написания игр вам потребуется во много раз больше знаний: математический базис, отличное знание геометрии вплоть до трёхмерной, физический базис, основы проектирования AI и многое, многое, многое другое… Но этим вы займётесь сами. Я же просто перечислю набор книг, которые желательно прочитать разработчику игр под iOS.
Lucas Jordan. Beginning iOS 5 Games Development
Kyle Richter. Beginning iOS Game Center and Game Kit
Steffen Itterheim, Andreas Low. Learn cocos2d Game Development with iOS 5
Jayant Varma. Learn Lua for iOS Game Development
Mike Smithwick. Pro OpenGL ES for iOS
Sue Blackman. Beginning 3D Game Development with Unity
Philip Chu. Learn Unity 4 for iOS Game Development
Robert Chin. Beginning iOS 3D Unreal Games Development

Послесловие

Вы думаете, что прочтя все эти книги, вы станете Senior iOS Developer? Нет, нет, нет и нет!
Когда-то Стив Балмер, став генеральным директором корпорации Microsoft, рассказывал, кто приносит успех операционным системам и платформам: «Developers! Developers! Developers! Developers!».
Я переиначу его слова: что делает разработчика мастером? Практика! Практика! Практика! Практика!
Никакие знания не перевесят практики. Лично мой совет: прочитав по моему обзору все книги от первой до «Beginning iOS 6 Development» включительно, устроиться в любую компанию на должность junior разработчика. На любые условия. На любую зарплату. Этот опыт бесценен – его не получишь из книг.
Удачи!

Update: обзор предназначен для полнейших новичков и не претендует на полноту, непогрешимость и истину в последней инстанции.

Эта статья открывает цикл, предназначенный для новичков. Смею надеяться, что уровень подачи материала позволит разобраться в нем даже людям не знакомым с программированием. Начнем наше повествование с небольшого лирического отступления. Приложения для iPhone и iPad пишутся на языке Objective-C. Этот язык широко использовался в компании NeXT и пришел в Apple после возвращения Стива Джобса. В настоящее время Objective-C является основным языком разработки OS X и iOS приложений.

Для того, чтобы начать программировать под iOS, Вам понадобится компьютер Mac на базе процессора Intel и среда разработки XCode. Если у Вас нет Mac-а - не беда. Возможно Вам подойдет один из описанных методов решения этой проблемы. Мы будем ориентироваться на XCode 4 и iOS5.

Установка XCode

Для начала нам придется зарегистрироваться наApple-овском dev сайте. Перейдите по ссылке и нажмите на register. Щелкните кнопку Get Started и пройдите процесс регистрации. Там все довольно просто, поэтому я не буду останавливаться на этом моменте. После регистрации Вам пришлют письмо с вашим Apple ID. Вернитесь на страницу Apple Developers и используйте его для входа в защищенную зону. В разделе DevCenters щелкните по ссылке iOS. Как видите, Apple предлагает вам кучу документации, исходников и уроков. На этой странице есть все, что нужно для начала разработки под iOS. В самом низу есть кнопка Download Xcode, которую нужно нажать. После загрузки установите Xcode на свой Mac.

Знакомство с интерфейсом XCode 4

Для запуска Xcode перейдите на свой главный диск и щелкнете по developer>Applications.

После того, как Xcode запустится, выберите пункт меню File>New Project, затем "Single View Application" и введите в качестве имени проекта (Product Name) HelloWorld. В результате у вас должно отображаться что-то вроде этого

Весь Ваш код и ресурсы разложены по специальным папкам, которые располагаются в левой части окна Xcode. Панель называется "Project Navigator" и содержит все элементы Вашей программы. Файлы с исходным кодом имеют расширение ".h" и ".m". Если вы щелкните по такому файлу, то в правой части Xcode откроется редактор с кодом.

Не будем пока останавливаться на коде. Мы вернемся к этому вопросу чуть позже. Если Вы посмотрите на верхнюю часть экрана, то увидите несколько кнопок, связанных с Вашим проектом. Изучим эту панель подробнее.

Кнопка "Run" запускает ваш проект. Вы можете протестировать свое приложение и убедиться, что оно ведет себя действительно так, как вы того ожидаете. Кнопка "Tasks" останавливает запущенное приложение.

С помощью кнопки Schemr можно выбрать целевую платформу, где будет запускаться ваше приложение. Здесь вы можете выбрать какой-нибудь simulator, и отлаживать программу на компьютере, или запустить ее на своем iPhone (iOS Device), если Вы заплатили сбор в $99. Единственное преимущество, которое дает этот платеж - возможность запускать программу на реальном устройстве и размещать ее в App Store. Я бы не рекомендовал Вам тратиться до того момента, пока у Вас не будет готова нормальная программа.

Breakpoints (точки остановки) - очень полезная штука. С помощью этой кнопки вы можете отметить в исходном коде строки, и когда в ходе выполнения программы дело дойдет до помеченной строки, программа приостановится, и вы сможете посмотреть состояние переменных. Это очень мощный и повсеместно используемый инструмент.

Нажмите кнопку "Run". Вы увидите окно эмулятора со своим проектом. Как видите, пока он не блещет функциональностью - это просто заготовка.

Программирование для iPhone -Первый шаг

Довольно ходить вокруг да около, давайте что-нибудь закодим. В окне Project Navigator содержатся файлы с исходным кодом. Щелкните по какому-нибудь.m файлу. Обратите внимание, некоторые строки окрашены в зеленый цвет - это комментарии, которые выполняют роль шпаргалок. Чтобы не запутаться в коде, программист может оставлять себе подсказки и пояснения. Для обозначения комментариев в языке C используется сочетание слешей //. Все, что находится в строке правее этих знаков, считается комментарием. Если Вы хотите написать многострочный комментарий, то можете использовать сочетания /* и */ для обозначения начала и конца многострочного комментария.

Прежде чем приступить к написанию кода приложения, я должен а пальцах объяснить вам несколько концепций: ООП (объектно-ориентированное программирование), MVC (Modal View Controller), ".h" и ".m" файлы. Итак... объектно-ориентированное программирование предполагает разделение всего кода на так называемые объекты, внутри которых хранятся данные и обрабатывающие их команды. Объект в Objective-C состоит из двух файлов.h и.m. Файл.h называется заголовком (header) в нем содержится "набросок" объекта - перечисляются все данные и названия блоков команд (методов), содержащихся в объекте. Файл.m называется файлом реализации (implementation) и в нем подробно расписывается все то, что указано в заголовке именно здесь программируется вся логика программы.

MVC (Model View Controller) - это нечто, разделяющее код и интерфейс, который видит пользователь. Model - это данные пользователя и данные, которые вы показываете пользователю. View - это пользовательский интерфейс и код, который обеспечивает связь между View и Model. Концепция MVC может сейчас показаться Вам слишком заумной, однако со временем Вы увидите, что этот подход действительно упрощает жизнь программиста. Эта концепция подразумевает следующий порядок работы: программист отдельно создает шаблон дизайна приложения, где размещает все кнопки, текстовые поля и прочую важную ерунду, и отдельно пишет программ. Потом он показывает XCode какой метод(блок кода) должен вызываться в ответ на то или иное действие пользователя и какое название имеет тот или иной элемент управления в тексте программе.

Разрабатываем дизайн программы для iPhone

Давайте начнем создание нашего приложения с разработки дизайна. Щелкните в окне Project Navigator по строке MainStoryboard_iPhone.storyboard. В результате XCode запустит редактор интерфейса.

В правом нижнем углу Вы видите список объектов (Library), которые можно использовать в своем интерфейсе, в центральной части отображается окно View, которое и представляет макет интерфейса вашей программы. Правое верхнее окно имеет несколько режимов, которые переключаются с помощью расположенных над окном иконок. На рисунке показан режим Atribute Inspector. Здесь можно изменять различные атрибуты объектов, составляющих ваш интерфейс.

Перетащим из окна Library объект Label на наш макет окна. С помощью мышки изменим размер объекта, как показано на экране ниже. В инспекторе отображаются свойства объекта Label. Давайте отцентрируем текст, щелкнув по соответствующей иконке в строке Layout.

Удалим текст в поле Text (там было написано слово Label) и введем там “Some String”.

Аналогичным образом добавьте на макет кнопку (объект Button)

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

Начинаем кодить

Итак, у нас есть два визуальных компонента размещенных на макете. Мы хотим чтобы при нажатии на кнопку менялся текст в строке. Чтобы реализовать эту задумку нам понадобится из кода программы обращаться к стороке (объект Label) и вызывать метод(блок кода) при нажатии на кнопку.

Щелкните по файлу "ViewController.h" в панели слева. Мы собираемся описать IBOutlet. IBOutlet соединяет наш код с визуальным объектом, например с надписью (label) или кнопкой (button). Приведите код в файле ViewController.h к виду

#import @ interface ViewController: UIViewController{ IBOutlet UILabel* label; //присвоим нашей строке имя Label } //это заголовок метода, который будет //вызываться в ответ на нажатие кнопки - (IBAction) buttonClick: (id) sender; @ end

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

Итак, мы сказали, что будем называть строку с текстом label и что в ответ на действие пользователя будет вызываться метод buttonClick. Давайте напишем код этого метода. Переключимся на файл ViewController.m в дереве проектов. После строки@implementation... добавим код

- (IBAction) buttonClick: (id) sender{ label. text= @ ”Hello from Mobilab. ru”; }

Примечание, если Вы скопировали этот код, то вероятно при запуске программы у Вас возникнет ошибка, скорее всего проблема в ковычках. Удалите их и введите с клавиатуры.

Давайте разберемся, что мы тут видим. Мы обращаемся к объекту label - строке текста на экране. Поскольку это объект, у него внутри есть разные данные (которые в ООП также называют свойствами объекта) и методы к которым можно обратиться, поставив точку после имени объекта. Свойство text отвечает за содержащийся внутри строки текст..

Мы завершили кодирование, осталось связать label и buttonClick с элементами внутри макета дизайна. Щелкните в окне Project Navigator по строке MainStoryboard_iPhone.storyboard, чтобы переключиться в конструктор интерфейса. Зетем щелкните по иконке “View controller”. Переключитесь на режим connections в инспекторе (последняя иконка). Посмотрите, в инспекторе в области Outlets появилась строка label. Это то название, которое мы указали в файле ViewController.h. Щелкните по кружочку в правой части строки label и перетащите его на строку с текстом Some Text в макете дизайна.

Аналогичную операцию проделайте с кнопкой. Щелкните по кнопке с кружочком в группе “Received Actions”, потом по buttonClick и перетащите ее на кнопку в макете. В результате раскроется контекстное меню, с помощью которого можно выбрать момент вызова метода. Можно, например, вызывать код, когда пользователь нажмет кнопку, можно когда отпустит. Там много вариантов. Выберите "Touch up Inside".

Вот и все! Сохраняйте проект и щелкайте по кнопке "Run" на панели сверху. Если Вы Все сделали правильно, то должен запуститься эмулятор с Вашей программой. Щелкните по кнопке. Текст в строке должен измениться. Вот и все. С первым уроком покончено

20-летний разработчик Ярослав Моргачёв написал для сайт колонку о том, как за три месяца научился разработке iOS-приложений на языке Swift, выпустил приложение для фитнеса и попал в топ-1 категории «Здоровье и фитнес» и топ-3 по всем платным приложениям App Store.

Не так давно моё первое приложение «Тело в лето » влетело в топ-1 категории «Здоровье и фитнес» и топ-3 по всем платным приложениям App Store.

За полтора месяца публикации его скачали 5 тысяч раз, и на протяжении всего этого времени оно остается в подборке «Игры и приложения по 15 рублей» от Apple.

Как это возможно? На сайт часто всплывают вроде «Если вы хотите научиться программировать, будьте готовы потратить на это 10 лет своей жизни». И да, в этом есть доля правды.

Дело лишь в том, что за 10 лет вы не просто научитесь программировать, а станете настоящим профессионалом в этом деле, который способен как гуру отвечать на StackoverFlow.

На деле же вы можете начать создавать простые приложения уже через 2-3 месяца в зависимости от вашей усидчивости, упорства и мозга. Всё должно начинаться с идеи, которая вас зажигает.

Итак, я полез в дебри программирования.

Шаг первый. Зарождение идеи

Не буду скрывать, что кое-какой опыт в работе над проектами у меня был. Тут можно вспомнить и о проектах в сфере дизайна, и об агентстве рекламы в Twitter twiPR, которое мы запустили три года тому назад (и которое вскоре закрылось), и о многом другом.

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

После прочтения меня посетила интересная мысль: в отличии от веба, в App Store действуют другие правила.

Вам не обязательно создавать что-то новое если вы хотите, чтобы приложение покупали. Например, если вы давно регулярно заглядываете в App Store, то явно могли заметить – есть сезонные категории приложений.

Приложения с тренировками становятся актуальными каждую весну, но каждую весну сами приложения сменяют друг друга. И их всё равно покупают.

Шаг второй. Ищем, как будем учиться

Как я говорил, мой опыт в программировании под iOS был равен «0». Поэтому – вначале был Google. Вообще, если вы хотите назвать себя разработчиком (вас очень не будут любить за это «нормальные» разработчики, но это вы поймете позже), вам придется научиться получать информацию не от преподавателя.

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

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

Возможно, он будет сложен вам на старте, когда только предстоит понять, по каким принципам он работает. Дальше - все трудности описывает фраза: «Я знаю, как это должно происходить программно, но я не знаю, как это написать». Тут вас спасёт уже упомянутый Google.

Касательно поиска – большинство кода, который вы будете находить, будет написано на Objective-C. Это потому, что Swift - относительно молодой язык, а до него весь App Store был в приложениях, написанных на Objective-C. Сейчас в магазине приложений доступно около 2 млн приложений, и только 100 тысяч из них написаны на Swift. Это лишь 5%.

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

Для тех, кого сейчас посетила мысль «А почему бы не учить Objective-C вместо Swift?» - ответьте себе на вопрос: хотите ли вы писать быстро и понятно, или иметь большее количество информации и примеров, но с непонятным синтаксисом и c огромным количеством знаков препинания? То-то же. Поэтому выбирайте Swift.

Шаг третий. Создаем идею и основу приложения

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

Но, чёрт побери, я предпочел разобраться в Xcode исконно русским методом - «тык-тык». Не вышло. Позже я, как человек, который быстро учится на ошибках, перешел к изучению уроков. И начал писать приложение для изучения ПДД. Идея была в том, чтобы не создавать идею. А взять популярную, и воплотить её чуть более круто, чем она представлена сейчас.

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

И тут в голову пришла идея №2 - приложение для ежедневных тренировок. В App Store есть тысячи аналогов, но вот что интересно: в топе висят висят простейшие приложения с кнопочкой «Старт». Жмёшь и видишь, что и сколько тебе нужно сделать. Всё.

Почему приложения от Nike и подобные, которые обходят конкурентов по функциональности, не висят в топе? Идея проста, а реализация - слишком сложная.


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

Шаг четвертый. Рисуем «вкусную» обложку

На этапе проектирования «оболочки» приложения в голову пришёл отрывок из книги «Дизайн-мышление в бизнесе» Тима Брауна, где описывается ситуация с покупкой велосипеда.

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

Как я уже говорил, у меня заранее был навык «склепать интерфейс за час». Навык был применён успешно. Если интересно - использовал Sketch 3 в противовес продукту от Adobe, который считаю слишком перегруженным.

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


Шаг пятый. Программируем

Когда вы начнете, вам предстоит разобраться с функцией AutoLayot (это что-то из разряда «программирования мышкой»). Она позволяет сделать так, чтобы одна надпись находилась на одном месте на разных поколениях iPhone и iPad.

Я не нашел стоящих уроков по AutoLayot, а во всех примерах на YouTube его применяют как-то вскользь. Искренне желаю вам удачи и стрессоустойчивости, чтобы не удалить всё связанное с программированием к чертовой матери на этом этапе.

К слову, у меня с этой функцией сразу не сложилось, и я включил её за два дня до конца работы над приложением. Это были два самых скучных дня за всю разработку, потому что они состояли из одной и той же последовательности итераций: «пробуем - смотрим - работает? - повторить».

Отдельного внимания заслуживает момент, когда вам нужно будет заставить какой-то элемент двигаться (например, по нажатию кнопки). Чтобы облегчить будущим разработчикам жизнь, я пишу одну техническую подробность: господа, я тоже пытался двигать View при включенном AutoLayot, и это была ошибкой. Нужно менять Constraint. Потом поймёте, что всё это значит.

Еще один важный совет: в Xcode есть песочница - Xcode Playground. Вы, конечно, можете залезть туда, но я настоятельно не советую: копаясь в ней, можно быстро потерять мотивацию, потому что вы ничего не создаете.

Я сторонник мнения, что человек должен видеть результат своих трудов при обучении, а песочница - это обучение ради обучения. Но есть и хорошая сторона - в песочнице вы сможете познакомиться со Swift в вакууме. Хотя, опять-же, по моему опыту, вам пригодится UIKit, CoreData – и сложность будет в них.

Swift же учится по ходу, и в своем большинстве представляет из себя простой английский - даже не уча Swift можно понять, что сделает строчка prefersStatusBarHidden() -> Bool { return true } .

Итак, я посчитал, что на мой проект у меня должно уйти два дня. Но не тут-то было! Первым был главный экран, и на него ушло 4 часа. Затем я перешел к самому важному - тренировкам.

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

Затем пошли всякие обзоры и описания упражнений, и, наконец - встроенные покупки и настройки (приложение напоминает вам о тренировке в назначенное время).

Как итог: на разработку приложения ушел месяц.

Шаг шестой. App Store Review

Первая попытка отправить приложение на проверку была сразу после того, как я запустил его на своем телефоне и всё проверил. Вполне ожидаемо, я получил отказ. Оказалось, что в моем приложении нет кнопки «Восстановить покупки».

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

Еще мне скинули скриншот, который создаёт эти ложные ассоциации. Это был экран блокировки.

Слева экран с ложными ассоциациями, справа - сделанный прямо с моего телефона (который приняли)

Изменил скриншоты по образу и подобию тех, что в других приложениях. Убрал название оператора, добавил сигнал и значок Wi-Fi. Угадаете, что было дальше? Отказ.

Пройти, наконец, это Review мне помог уже упомянутый Степан Светлый, который сказал: «Скриншот должен быть именно таким, каким он был бы на реальном девайсе». Возвращаем оператора, добавляем сигнал, Wi-Fi и значок камеры вниз. Отправляем. О, чудо. На утро мне приходит заветное уведомление «Приложение ожидает выпуска разработчиком».

Тут стоит упомянуть один интересный лайфхак: приложение прошло четыре проверки за пять дней, а средний срок проверки приложений, как я понял – неделя или две. Хотите также? Пишите специальную просьбу быстро проверить приложение в Apple.