На чем писать приложения для ios
На каком языке пишут приложения для iOS
Хотите создавать революционные приложения, но не знаете, на каком языке? Мы подготовили статью, чтобы вы могли определиться (спойлер: Swift).
Разработка приложений под iOS может быть кросс-платформенной или нативной. Первый способ позволяет использовать код на Java, C++, Python и других языках — просто компилируете приложение под iOS, и оно будет работать.
Второй — писать на Objective-C или Swift — языках, которые лучше всего подходят для создания приложения под операционные системы Apple.
Разработка кросс-платформенных приложений
Как уже говорилось выше, создать приложение для iOS можно с помощью:
Вы пишете один код, а потом компилируете его для разных платформ. Такой способ быстрее и дешевле, но подобные приложения работают гораздо хуже, чем нативные. Это связано с тем, что реализовать многие возможности в них не получится без костылей.
Можно, конечно, оптимизировать код, но работать приложение все равно будет медленнее нативного. Чем больше функций должно быть в приложении, тем хуже оно будет функционировать, не говоря уже о бесконечных багах и уязвимостях.
Разрабатывать кросс-платформенно рекомендуется, если не хватает времени или бюджета. Также такой подход предпочтительнее, когда речь идет о корпоративных приложениях в больших компаниях, где сотрудники пользуются миллионом разных устройств.
Примеры кросс-платформенных приложений:
Нативная разработка для iOS
Нативные приложения отлично работают без всяких костылей, потому что используются языки, которые подходят для конкретной платформы. В случае с iOS — Objective-C и Swift.
Objective-C
В 1980 году Брэд Кокс в своей компании Stepstone создал Objective-C — позже он стал основным языком разработки для устройств Apple. Objective-C — это компилируемый объектно-ориентированный язык программирования (ООП), основанный на C.
С помощью объектов решается проблема повторяемости кода. Но делается это не так топорно, как при структурном программировании, в котором увеличение объема и сложности программы снижает качество.
Основное отличие Objective-C от C++ (тоже поддерживает ООП и тоже был разработан в восьмидесятых годах) в том, что вызов метода в нем интерпретируется не как функция, а как сообщение — как в языке Smalltalk. Такие сообщения могут содержать что угодно, а отправить их можно куда потребуется.
Также объект может переслать часть полученного сообщения другому объекту (даже если он находится не на этом компьютере), что позволяет делегировать задачи — по такому же принципу работают нейросети.
Objective-C — компилируемый язык. Однако сообщения привязываются к функциям исключительно во время выполнения программы, что позволяет создавать динамичные приложения. Еще в языке поддерживаются протоколы и метаинформация.
Синтаксис здесь значительно отличается от синтаксиса C-подобных языков. Для сравнения:
На чём пишут приложения для iOS
Ты уже пишешь приложения под iOS? Тогда тебе должны быть известны различные варианты разработки. А если в твоей голове только появилась мысль о разработке мобильных приложений под iOS, то за ней должны последовать следующие вопросы:
Статья даст ответы на эти вопросы и поможет достичь поставленной цели.
Операционная система iOS была выпущена компанией Apple в 2007 году. Она не ограничивается iPhone и iPad, но я расскажу о разработке приложений только для этих устройств. Статья разделена на несколько частей:
Кроме нативной разработки существует ещё и кроссплатформенная, когда приложение пишется сразу для iOS и Android на языке, отличном от нативного. Об этом мы поговорим в другой раз, но можете утолить любопытство уже сейчас и прочитать статью главного редактора Apptractor Леонида Боголюбова, написанной для Лайв Тайпинг.
Разработка нативных приложений
Процесс разработки нативного приложения — это написание программы на одном из основных языков iOS-разработки: или Swift. Этот путь создан корпорацией Apple и предполагает следование всем её идеям. Apple обеспечивает разработчиков последними версиями SDK (software development kit — набор средств разработки), документацией, а также средой разработки Xcode.
Преимущества нативной разработки:
Недостатки:
На каком языке пишут приложения для iOS
Разработчики из компании Apple предоставили два варианта:
Оба языка для создания iOS-приложений относятся к программированию (ООП) и успешно выполняют его основные парадигмы: наследование, полиморфизм, инкапсуляцию и абстракцию. Простыми словами, ООП — это стиль написания кода, который позволяет разработчику группировать схожие задачи в классы. Код соответствует принципу DRY (don’t repeat yourself — не повторяй самого себя) и становится лёгким для сопровождения.
Язык программирования для iOS приложений, созданный в начале годов прошлого века путём скрещивания С (Си) с популярным в то время Smalltalk (связь с объектами через сообщения). изначально воспринимался, как простая надстройка над языком C, модифицирующая его некоторые синтаксические конструкции, но после того, как за лицензирование взялась сначала компания Next Step, а потом на правах преемника и Apple, Objective-C стал одним из наиболее популярных языков для разработки приложений для iPhone и iPad. Поэтому многие типы данных в унаследовали префикс NS (Next Step). Это основной язык, используемый компанией Apple, знание которого позволяет писать под любые платформы Apple, в том числе macOS.
Плюсы:
Минусы:
Примеры приложений, разработанных нашей командой на языке :
Swift
Плюсы:
Минусы:
Большая часть проектов нашей компании написана на языке Swift. Вот некоторые примеры:
(Си плюс)
Компилируемый, статически типизированный язык программирования общего назначения. Поддерживает такие парадигмы программирования, как процедурное программирование, программирование, обобщённое программирование.
поддерживается iOS, но есть одно «но»: всё приложение целиком на нём написать не удастся. подойдёт для решения логических задач или целых модулей приложения, а также для написания сложных алгоритмов, но пользовательский интерфейс должен быть написан на или Swift.
Какой язык выбрать?
постепенно уступает дорогу молодому Swift, который Apple всячески популяризирует. В прошлом 2018 году в рейтинге Tiobe занимал более низкую позицию по отношению к Swift. Исходя из этой статистики и вышеперечисленных плюсов языка Swift, я бы рекомендовал именно его.
Но совсем не знать Objective-C не получится, так как в ходе программирования приложений для iOS он будет встречаться, и тебе придется читать и понимать его.
Где брать материалы для изучения?
Материалы по языку Swift:
Apple Education предоставляет свои учебники на английском языке совершенно бесплатно. Вот список тех, с которых стоит начать:
Если нужны учебники на русском языке, то предлагаю:
Личная рекомендация — бесплатный курс по Swift от Алексея Скутаренко Swift Марафон, а также группа Вконтакте iOS Development Course. В группе ты можешь посмотреть домашние задания по каждому уроку или получить ответ на свой вопрос.
Материалы по языку
Книг от Apple, к сожалению, нет, но есть отличные платные издания:
Личная рекомендация — бесплатный видеокурс по от Алексея Скутаренко iOS Development Course.
Стоит отметить, что помимо рекомендованных мной видеокурсов, большое количество как платных, так и бесплатных обучающих материалов по Swift и есть на Youtube и специальных обучающих порталах, таких как Udemy и SwiftBook.
Материалы по языку
Источники актуальной информации
Чтобы не отставать от тенденций, не будет лишним ознакомиться со следующим списком больших компаний и огромных личностей, а также подписаться на их твиттер, блоги :
Среда разработки iOS приложений
Самыми популярные среды разработки приложений на iOS, или IDE (Integrated Development Environmetn) — это Xcode от Apple и AppCode от JetBrains.
Xcode
Быстрый редактор, укомплектованный полным набором инструментов для разработки под iOS, macOS и др. Скачивается из App Store бесплатно.
Плюсы:
Минусы:
AppCode
Плюсы:
Минусы:
Иными словами, даже если ты выберешь AppCode в качестве основного IDE, для полноценной разработки мобильных приложений на iOS всё равно нужен Xcode.
Нужен ли Maс?
Да. Для разработки нужна Xcode IDE (Integrated Development Environment — интегрированная среда разработки). Установить Xcode ты сможешь только на Mac. Выбирай из этих вариантов: MacBookPro/Air, iMac, MacPro или Mac mini (самый бюджетный вариант). Не обязательно покупать новый, но чтобы твой Mac мог поддерживать последнюю версию macOS хотя бы два года, советую брать тот, что не старше пяти лет.
Вариант для ознакомления — поставить на свой PC виртуальную машину при помощи, например, VirtualBox. Статья Installing MacOS to VirtualBox подробно описывает, как это сделать. Работать будет медленно, но для «быстрого старта» вполне подойдет.
Необязательно. IDE Xcode от Apple содержит в себе симулятор устройств. Например, можно выбрать iPhone XR и вживую проверить результат своей работы. К сожалению, симулятор полностью не заменит реальное устройство (например, камера или акселерометр в нём отсутствуют).
Нужно ли учиться на iOS-программиста?
Российские ВУЗы консервативны и с большим опозданием начинают перестраивать свои образовательные программы под мобильную разработку. Поэтому один из лучших и самых быстрых способов научиться писать приложения для Айфона и Айпада – закончить курс онлайн-университета Skillbox «Профессия iOS-разработчик». Второй более сложный способ – изучать все самостоятельно по книгам и статьям и позже поступить на стажировку в одну из студий мобильной разработки.
Разработка приложений и игр с дополненной реальностью при помощи ARKit
ARKit — фреймворк, разработанный компанией Apple для работы с AR. Что такое AR и как это работает? AR — это технология, которая способна сканировать окружающее пространство и максимально достоверно интегрировать виртуальные объекты в реальную жизнь. Эти самые виртуальные элементы могут отображать специальные устройства, поддерживающие эту технологию:
И это далеко не все возможности! При помощи AR разрабатывают обучающие, развлекательные программы и, конечно же, игры:
Классное видео с одной из презентаций Apple, на котором при помощи AR оживает мир, сделанный из конструктора Lego.
Важно! Для разработки требуется iPhone или iPad. Хочу лишь напомнить, что в симуляторе Xcode нет камеры, и без нее не получится отсканировать пространство. В строке arkit из таблицы Device Compatibility ты можешь увидеть полный список устройств Apple c поддержкой ARKit.
Учебные материалы по ARKit:
Разработка игр при помощи SpriteKit
Учебные материалы по SpriteKit:
Важно! Разработка игр для iOS не ограничивается фреймворком SpriteKit. Существует огромное количество движков для создания 2D и 3D игр. Самые популярные из них — Unity и Unreal. А создании Trigono разработчики Лайв Тайпинг использовали движок OpenFL с применением кастомных доработок.
Заключение
Самым актуальным языком мобильной разработки под iOS в 2019 году является Swift. Причина не только в его скорости и лаконичном синтаксисе, но и в том, что он становится стандартом и получает всё больше поддержки со стороны разработчиков Apple.
Это не отменяет необходимости знакомиться с : на этом языке созданы полезные библиотеки, а поддержка старых, но больших и интересных проектов хорошо оплачивается.
Как видно, глубока, и постижение всей её глубины повысит твою ценность на рынке разработчиков. Надеюсь, что эта статья ответила на все возможные вопросы и ты поделишься ей с друзьями.
Что нужно знать перед тем, как писать под iOS
«Под Windows можно писать для iPhone?»
Анонимный разработчик
«Мы не планируем публиковаться в AppStore, это ведь возможно? И еще мы хотим версию под Android. »
Анонимный заказчик
Как заработать?
Тут все очень просто/сложно. Пишете приложение, выкладываете в AppStore, выставляете цену, получаете деньги от довольных покупателей. 30% процентов от цены забирает Apple. Есть шанс как захватить мир, так и попусту потратить свое время — все зависит от вас.
Верхняя планка цены реальна — в AppStore было уже как минимум два приложения за тысячу долларов:
«BarMax CA» — приложение для студентов-юристов;
«I Am Rich» — приложение, показывающее изображение красного, видимо, драгоценного камня. Из магазина оно было убрано через день после публикации, но 8 счастливчиков все-таки успели его приобрести. Сейчас оно вернулось в AppStore уже с ценой в 10 долларов, одной из фич указано, что приложение продается всего за 1/100 от оригинальной цены.
Реклама в приложениях — iAd
Тут тоже все достаточно прозрачно: размещаете в своем приложении рекламный баннер, Apple делится с вами выручкой за показ рекламы и за клики по баннеру. На хабре уже писали об этом сервисе и даже рассказывали как добавлять баннеры в свои приложения. Остается добавить, что стоимость рекламы 1 цент — за показ, 2 доллара — за клик. Разработчик получает 60 процентов от вырученной суммы.
Торговля в приложении — In-App Purchases
Apple предоставляет возможность торговать вам в своих приложениях различными житейскими ценностями — ресурсами в играх, доступом к заблокированным секциям приложений и так далее. Отличная статья на эту тему есть на хабре — iPhone разработка: Интегрируем In-App Purchases. Да, Apple забирает себе положенные 30 процентов выручки.
Сервис подписок
Тем, кто в детстве выписывал «Мурзилку», должна быть понятна суть этого варианта заработка. Обычная подписка на журналы, газеты, музыку, видео… Издатель устанавливает цену, Apple берет себе стандартные 30 процентов. Сервис был запущен 15 февраля 2011 года, подробности можно почитать в официальном пресс-релизе.
Разработка приложений под заказ
Тут все тоже предельно просто — клиент платит деньги, вы разрабатываете приложение. Обычно это имиджевые, корпоративные приложения или представление каких-либо сервисов клиента для iOS.
Последний путь заработка наиболее прост в плане оплаты работы. Так как все происходит по обычной схеме, без финансовых отношений с Apple (кроме платы за регистрацию). В остальных случаях необходимо озаботиться вопросами получения заработанных денег. Комментарии с положительным/отрицательным опытом по данному вопросу приветствуются.
Как зарегистрироваться в iOS Developer Program
При регистрации вы можете регистрироваться либо как компания, либо как индивидуальные разработчик.
При регистрации компании нужно быть готовыми предоставить определенные документы.
Для Российских компаний нужно предоставить выписку из Единого Государственного Реестра Юридических Лиц (ЕГРЮЛ) и ее перевод. Название компании при регистрации должно совпадать с названием в выписке. В этой статье можно подробнее узнать о регистрации компании — Регистрация приложения в AppStore — мы сделали это!
Обычно вся процедура регистрации занимает 3-4 недели.
Куда проще регистрироваться индивидуальным разработчикам — после заполнения всех форм на сайте попросят распечатать, заполнить документ-заявку (требуются паспортные данные, данные карточки, адрес проживания и т.д.) и отослать факсом в Apple. После рассмотрения этого документа Apple списывает с вашего счета 99 долларов и вы становитесь зарегистрированным разработчиком. Вся процедура занимает 3-4 дня. Если у вас возникли проблемы с поиском факса, то можно воспользоваться каким-нибудь online-ресурсом, например — www.myfax.com/free
Обязательно ли нужен Mac?
Вам обязательно понадобится Mac OS X, так как ни на какой другой платформе вы не сможете работать с iOS SDK. Есть много различных вариантов разработки iOS приложений, но минимум для сборки и загрузки приложения в AppStore вам будет необходима Mac OS X. Да, последнее время появляются различные сервисы, которые и пирожки за вас есть будут предлагают постить приложения за вас и различные другие услуги, и о них на хабре тоже писали. Но, на мой взгляд, все это пока несерьезно и пользоваться услугами подобных контор, при разработке сколько-нибудь значимого приложения не стоит. Хотя, конечно, все зависит от задачи, если вы сможете зарабатывать, используя подобные сервисы, то почему бы и нет:)
Разница между web и native приложениями
Хочу пояснить разницу между native и web приложениями для iPhone/iPad, пока мы не перешли к инструментам разработки. Первые распространяются через AppStore (или in-house приложения), вторые — всего лишь web-сайт или его часть, специальным образом сконфигурированный под iPhone.
Доступные web-приложения можно посмотреть тут — www.apple.com/webapps
Для публикации своего web-приложения в этом каталоге необходима регистрация в iOS Developer Program. При публикации вас просят указать url приложения и некоторую дополнительную информацию (сайт компании, загрузить иконку и так далее).
Как понимаете, каких-то особенных, отличных от обычных инструментов web-разработчика для написания таких приложений не нужно, хотя сейчас развелось довольно много фреймворков, позволяющих упростить создание подобных приложений и сделать их больше похожими на native приложения.
Среди пользователей iДевайсов web приложения особенной популярностью не пользуются, а многие, по крайней мере в России, даже и не подозревают о них. Так что дальше будем рассматривать только вопросы разработки нативных приложений.
Какие инструменты можно использовать для разработки?
Тут я коснусь только нескольких инструментов — после снятия Apple запрета на ненативные инструменты разработки, чуть ли не каждый день появляются новые IDE и фреймворки.
Нативные средства разработки
MonoTouch
Flash
Adobe Flash Pro CS5 поддерживает разработку под iPhone. Другое дело, что пока этот путь основательно не разработан и определенная сырость в подходе присутствует.
Titanium & PhoneGap
Два фреймворка-хэдлайнера в мобильной кроссплатформенной разработке. Краткое описание можно найти в этой статье. Позволяют использовать javascript и HTML5 для разработки native приложений сразу под несколько платформ, в том числе и iOS.
Unity3D
Для себя я пока выбираю Xcode и Objective-C, но пристально смотрю в сторону кроссплатформенной разработки.
Еще одно небольшое замечание, если вы решитесь разрабатывать приложения под заказ
Deadline
Срок сдачи работы не всегда зависит от вас. Перед появлением в AppStore приложение проходит ревью, которое длится минимум 5 дней. Если приложение было отклонено по каким-либо причинам, то, после внесения изменений, необходимо будет отстоять всю очередь снова. Так что обещать клиенту выпустить приложение в AppStore к определенной дате, если у вас нет в запасе двух-трех недель, — поступок довольно безрассудный. Лучше обещайте показать приложение на устройстве к оговоренному сроку и объясните ситуацию с ревью. Для установки приложения на устройство нужно знать его UDID. То есть, даже если вы работаете удаленно, то вы всегда можете собрать приложение и отправить заказчику, чтобы он посмотрел его на своем девайсе.
Создание iOS приложения. От идеи до результата
Все началось с того, что я огляделся по сторонам и, не увидев автомобиля своей мечты, решил сконструировать его сам
Фердинанд Порше
Привет, Хабр. Хочу рассказать, как создал свое первое iOS приложение и что из этого получилось.
Идея для приложения возникла сама собой: создай то, чем бы ты с удовольствием пользовался бы сам. Я постоянно пишу заметки. Ведь у каждого занятого человека существует определенный набор фактов, которые он получает в течение дня, и которые стоит запомнить. А так как все люди забывают (и это нормально!), то нет лучшего решения, чем просто записать. Я все время чувствовал какое-то неудобство при работе с представленными в AppStore приложениями-заметочниками. Излишняя сложность в управлении, наличие ненужных категорий, нагромождение дополнительной информации — все это мешает приложению выполнять его основную функцию. Плюс ко всему многие из этих вещей выглядят просто некрасиво.
Поэтому, поставив все ставки на простоту и удобство, я приступил к созданию концепции. Модель приложения с единым списком заметок. Все в одном месте, что может быть проще? Если что–то имеет большую ценность или актуальность, совсем не обязательно вешать на него ярлык, ведь достаточно просто переместить более важную заметку в топ списка. Старые и ненужные записи постепенно будут опускаться вниз и в последствии будут удалены пользователем.
Функционал
После того, как концепция была придумана, я выписал основной функционал — те вещи, на которые я хотел бы сделать акцент в управлении:
Инструментарий
Перед тем, как писать код в Xcode, я полностью воссоздал внешний вид приложения в векторном редакторе Sketch. Эта программа отлично подходит для быстрого создания макетов. Для этого приложения доступна масса плагинов, среди них есть Sketch Preview — просмотр артборда сразу на устройстве через программу Skala Preview. Всего лишь нужно скачать бесплатные программы Skala Preview на компьютер и мобильное устройство и установить плагин. После этого выбрать нужный артборд, нажать комбинацию Command+P и уже через секунду внешний вид приложения транслируется на устройство.
Кроме того, в приложении очень удобно создавать скриншоты для публикации в AppStore. Для каждого размера экрана создавался свой набор артбордов, вместе с использованием стилей, время потраченное на форматирование минимально. Но про публикацию чуть позже.
Разработка
В приложении я использовал всего два контроллера – один непосредственно для всех-всех-всех заметок, другой — для отображения небольшого туториала при первом запуске. Работу с базой данных я организовал с помощью фреймворка CoreData.
После создания базового функционала (создание, удаление, редактирование заметок) я решил улучшить каждую из этих функций.
Согласитесь, редактирование текста в iOS реализовано достаточно неудобно. При допущении ошибки в слове для перемещения курсора на нужную позицию необходимо сделать касание и не убирая пальца от экрана, попытаться попасть в выбранную область. К тому же после исправления ошибки нужно вернуть курсор назад в конец строки. В своем приложении я решил переработать механизм перемещения курсора: для того чтобы внести изменение в слово, нужно лишь сделать свайп в зоне между клавиатурой и набираемой фразой не загораживая при этом обзор текста.
Анимации удаление и перемещения в топ я решил реализовать самостоятельно, а визуальное сопровождение максимально приблизить к реальной жизни. Что-то приобрело более высокий приоритет — свайп вправо и заметка перемещается в топ списка. Чтобы удалить — свайп влево и анимация зачеркивания покажет на сколько еще нужно продлить свайп чтоб завершить удаление. При случайном удалении — нужно просто потрясти устройство («Shake»), и заметка вернется на свое прежнее место.
Для того, чтобы выделить заметку, я использовал LongTapGesture и три основных цвета приложения — белый, синий и красный, которые и сформировали главную палитру цветов.
Чтобы поделиться заметками из приложения я добавил дополнительный нижний бар, для появления которого необходимо сделать свайп из-под нижнего края устройства (Bottom Edge Swipe). В панели для шаринга собраны все самые важные действия — публикация в Facebook или Twitter, отправка списка заметок по электронной почте, или просто копирование для дальнейшего использования. Механизм очень простой — нужно выделить необходимые записи, после — нажать на нужную функцию. Если вы необходимо вернуться в обычный режим — свайп по бару, но уже вниз.
Переход между дневной и ночной темами я решил сделать автоматическим — почему никто еще не додумался менять внешний вид в зависимости от положения солнца на небе? Все очень просто — после наступления темноты и после восхода солнца тема меняется, при этом пользователю не нужно отвлекаться от создания заметок, ведь приложение всегда будет автоматически подстраиваться под окружающие условия.
Нейминг
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, так что заметки уже успели перебраться в облако.