Ios руководство разработчика

С разрешения автора выкладываю перевод статьи Norberto Gil Vasconcelos «14 must knows for an iOS developer» (ссылка на оригинал). На момент публикации статьи актуальной была версия Swift 3.

Как iOS-разработчик (в данный момент абсолютно зависимый от Swift), я создавал приложения с нуля, поддерживал приложения, работал в различных командах. За все время работы в этой индустрии я не раз слышал фразу: «Не можешь объяснить – значит не понимаешь». Так что, в попытке понять, чем именно я занимаюсь каждый день, я создаю список того, что, на мой взгляд, важно для любого iOS-разработчика. Я постараюсь максимально ясно объяснить каждый момент. [Пожалуйста, не стесняйтесь исправлять меня, высказывать свое мнение или предлагать свои дополнения в этот список.]


Темы: [ контроль версий | архитектурные паттерны | Objective-C против Swift | React | менеджер зависимостей | хранение информации | CollectionViews & TableViews | UI | протоколы | замыкания | схемы | тесты | геолокация | локализуемые строки ]


Вот мой список, без лишних слов, в произвольном порядке.

1 – Контроль версий

Поздравляю, вы приняты! Извлеките код из репозитория и приступайте к работе. Стоп, что?

Контроль версий необходим любому проекту, даже если вы только разработчик. Наиболее часто используемые системы – это Git и SVN.

SVN основан на централизованной системе управления версиями. Это репозиторий, где создаются рабочие копии, и для доступа к ним нужно соединение по сети. Авторизация изменений осуществляется по конкретному пути; система отслеживает изменения путем регистрации каждого файла, полную историю изменений можно посмотреть только в репозитории. Рабочие копии содержат лишь новейшую версию.

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

2 – Архитектурные паттерны

Ваши пальцы дрожат от волнения, вы разобрались с контролем версий! Или это из-за кофе? Неважно! Вы в ударе, и настал час программирования! Не-а. А чего еще ждать?
Прежде, чем вы сядете за клавиатуру, необходимо выбрать архитектурный паттерн, которого вы будете придерживаться. Если не вы начали проект, вы должны соответствовать уже существующему паттерну.
Существует широкий спектр паттернов, используемых при разработке мобильных приложений (MVC, MVP, MVVM, VIPER и т. д.). Дам краткий обзор наиболее часто используемых в разработке для iOS:

  • MVC — сокращенно от Model, View, Controller. Controller создает мост между Model и View, которые не знают друг о друге. Связь между View и Controller очень тесная, поэтому Controller обрабатывает практически все. Что это значит? Проще говоря, если вы создаете сложный View, ваш контроллер (ViewController) будет безумно большим. Есть способы обойти это, однако они выходят за рамки MVC. Еще одним недостатком MVC является тестирование. Если вы используете тесты (так держать!), вы, вероятно, будете тестировать только Model, поскольку она является единственным слоем, отделенным от остальных. Плюс использования шаблона MVC в том, что он интуитивно понятен, и большинство разработчиков iOS привыкли к нему.


    MVC – визуальное представление

  • MVVM — сокращенно от Model, View, ViewModel. Привязки (в основном реактивное программирование) устанавливаются между View и ViewModel, это позволяет ViewModel вызывать изменения в модели, которая затем обновляет ViewModel, автоматически обновляя View из-за привязок. ViewModel ничего не знает о View, что облегчает тестирование, а привязки уменьшают объем кода.


    MVVM – визуальное представление

Для более глубокого понимания и получения информации о других паттернах я рекомендую прочесть следующую статью.

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

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

– Бенджамин Франклин

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

3 – Objective-C против Swift

Решая, на каком языке программирования писать свое приложение, вы должны знать, какими возможностями располагает каждый из них. Если есть возможность, я предпочитаю использовать Swift. Почему? Если честно, Objective-C имеет очень мало преимуществ по сравнению со Swift. Большинство примеров и учебных пособий написаны на Objective-C, а у Swift с каждым обновлением вносятся коррективы в парадигмы, что может приводить в уныние. Однако эти проблемы в конечном итоге исчезнут.

В сравнении с Objective-C, Swift делает скачок во многих отношениях. Его легко читать, он похож на естественный английский, и, поскольку он не построен на C, это позволяет отказаться от традиционных условностей. Для тех, кто знает Objective-C, это значит никаких больше точек с запятой, а вызовы методов и условия выражений не нужно будет заключать в скобки. Также легче поддерживать ваш код: Swift нужен только файл .swift вместо файлов .h и .m, потому что Xcode и компилятор LLVM могут определять зависимости и выполнять инкрементные сборки автоматически. В целом вам придется меньше беспокоиться о создании стандартизированного кода, и вы обнаружите, что можно достичь тех же результатов меньшим количеством строк.

Все еще сомневаетесь? Swift безопаснее, быстрее, и заботится об управлении памятью (большей ее частью!). Знаете, что происходит в Objective-C, когда вы вызываете метод с неинициализированной переменной-указателем? Ничего. Выражение становится неактивным и пропускается. Звучит здорово, потому что это не приводит к вылету приложения, однако вызывает ряд багов и нестабильное поведение, из-за которых вам захочется подумать о смене профессии. Серьезно. Идея стать профессиональным выгульщиком собак заиграла новыми красками. В это же время, счетчик Swift работает с optional-значениями. Вы не только получите лучшее представление о том, что может быть nil и поставите условия для предотвращения использования nil-значений, но и получите runtime crash, если nil optional все же будет использоваться, что упростит отладку. ARC (автоматический подсчет ссылок) помогает лучше распоряжаться памятью в Swift. В Objective-C ARC не работает с процедурным C или с API, наподобие Core Graphics.

4 – React или не React? (вот в чем вопрос)

Функциональное реактивное программирование (FRP) – новый хит. Оно предназначено для упрощения составления асинхронных операций и потоков событий/данных. Для Swift это общая абстракция вычислений, выраженная через интерфейс Observable.

Проще всего проиллюстрировать это небольшим количеством кода. Скажем, малыш Тимми и его сестра Дженни хотят купить новую игровую приставку. Тимми получает от своих родителей 5 евро каждую неделю, то же самое касается Дженни. Однако Дженни зарабатывает еще 5 евро, доставляя газеты по выходным. Если оба экономят каждый цент, мы можем каждую неделю проверять, доступна ли консоль! Каждый раз, когда значение их сбережений меняется, рассчитывается их совокупная величина. Если этого достаточно, сообщение сохраняется в переменной isConsoleAttainable. В любой момент мы можем проверить сообщение, подписавшись на него.

// Сбережения
let timmySavings = Variable(5)
let jennySavings = Variable(10)

var isConsoleAttainable =
Observable
.combineLatest(timmy.asObservable(), jenny.asObservable()) { $0 + $1 }
.filter { $0 >= 300 }
.map { "\($0) достаточно для покупки приставки!" }

// Вторая неделя
timmySavings.value = 10
jennySavings.value = 20
isConsoleAttainable
   .subscribe(onNext: { print($0) }) // Не выведет ничего

// Двадцатая неделя
timmySavings.value = 100
jennySavings.value = 200
isConsoleAttainable
   .subscribe(onNext: { print($0) }) // 300 достаточно для покупки приставки!

Это лишь пример того, что можно сделать с FRP, как только вы освоите его, оно откроет целый новый мир возможностей, вплоть до принятия архитектуры, отличной от MVC… Да-да! MVVM!
Вы можете посмотреть на двух основных претендентов на звание главного Swift FRP:

  • RxSwift
  • ReactiveCocoa

5 – Менеджер зависимостей

CocoaPods и Carthage являются наиболее распространенными менеджерами зависимостей для проектов Cocoa Swift и Objective-C. Они упрощают процесс внедрения библиотеки и поддержания ее в актуальном состоянии.

CocoaPods имеет множество библиотек, собран с помощью Ruby и может быть установлен с помощью следующей команды:

$ sudo gem install cocoapods

После установки вы захотите создать Podfile для вашего проекта. Вы можете запустить следующую команду:

$ pod install

или создать пользовательский Podfile с такой структурой:

platform :ios, '8.0'
use_frameworks!

target 'MyApp' do
pod 'AFNetworking', '~> 2.6'
pod 'ORStackView', '~> 3.0'
pod 'SwiftyJSON', '~> 2.3'
end

После создания пришло время установить ваши новые модули:

$ pod install

Теперь вы можете открыть .xcworkspace вашего проекта, не забудьте импортировать ваши зависимости.

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

Для получения дополнительной информации об установке и использовании загляните на GitHub проекта.

6 – Хранение информации

Начнем с простейшего способа сохранения данных для ваших приложений. NSUserDefaults, названный так, потому что он обычно используется для сохранения пользовательских данных по умолчанию, отображаемых при первой загрузке приложения. По этой причине он сделан простым и легким в использовании, однако это же подразумевает некоторые ограничения. Одним из них является тип объектов, которые принимает этот способ. Его поведение очень похоже на Property List (Plist), который имеет такое же ограничение. Вот шесть типов объектов, которые они могут хранить:

  • NSData
  • NSDate
  • NSNumber
  • NSDictionary
  • NSString
  • NSArray

В целях совместимости со Swift, NSNumber может принять следующие типы:

  • UInt
  • Int
  • Float
  • Double
  • Bool

Объекты могут быть сохранены в NSUserDefaults следующим образом (Сначала создайте константу, которая будет хранить ключ для сохраняемого объекта):

let keyConstant = "objectKey"

let defaults = NSUserDefaults.standardsUserDefaults()
defaults.setObject("Object to save", objectKey: keyConstant)

Чтобы прочитать объект из NSUserDefaults, мы можем сделать следующее:

if let name = defaults.stringForKey(keyConstant) {
   print(name)
}

Есть несколько удобных методов для чтения и записи в NSUserDefaults, которые получают конкретные объекты вместо AnyObject.

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

Что это значит? Это не совсем супер безопасно, особенно если вы не используете пароль на экране блокировки. Существуют также способы доступа к ключу, используемому на втором уровне, поскольку он сохранен на устройстве.

Лучшее решение — использовать собственное шифрование. (Не храните ключ на устройстве)

CoreData – это фреймворк, разработанный Apple, чтобы ваше приложение взаимодействовало с базой данных объектно-ориентированным образом. Это упрощает процесс, сокращая объем кода и избавляя от необходимости тестировать этот раздел.

Вы должны использовать CoreData, если вашему приложению требуются постоянные данные, это значительно упрощает процесс их сохранения и позволяет вам не создавать/тестировать свой собственный способ связи с БД.

7 – CollectionViews & TableViews

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

TableViews отображают список элементов в одном столбце по вертикали и ограничены только вертикальной прокруткой. Каждый элемент представлен UITableViewCell, который можно полностью настроить. Их можно отсортировать по разделам и строкам.

CollectionViews также отображают список элементов, однако они могут иметь несколько столбцов и строк (к примеру, сетка). Они могут прокручиваться по горизонтали и/или по вертикали, и каждый элемент представлен UICollectionViewCell. Как и UITableViewCells, они могут быть настроены по желанию и отсортированы по разделам и строкам.

Они обе имеют схожую функциональность и используют многоразовые ячейки для улучшения подвижности. Выбор того, что вам нужно, зависит от сложности, которую вы хотите иметь в списке. CollectionView может использоваться для представления любого списка и, на мой взгляд, всегда является лучшим выбором. Представьте, что вы хотите представить список контактов. Список простой, можно реализовать его одним столбцом, поэтому вы выбираете UITableView. Все работает! Через несколько месяцев ваш дизайнер решит, что контакты должны отображаться в формате сетки, а не в виде списка. Единственный способ сделать это — изменить реализацию UITableView на реализацию UICollectionView. Я пытаюсь сказать, что, хотя ваш список может быть простым и UITableView может быть достаточно, если есть большая вероятность изменения дизайна, вероятно, лучше всего реализовать этот список с помощью UICollectionView.

Какой бы выбор вы ни сделали, хорошей идеей будет создать общий TableView/CollectionView. Это облегчает реализацию и позволяет повторно использовать большой объем кода.

8 – Storyboards VS Xibs VS программируемый UI

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

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

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

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

Вышеуказанные подходы к созданию пользовательского интерфейса сильно разнятся. Но, по моему субъективному мнению, лучшим вариантом является сочетание всех трех. Несколько Storyboards (теперь мы можем переходить между Storyboard-ами!), с Xibs для любого визуального объекта, который не является основным окном, и, наконец, чуть-чуть программирования для дополнительного контроля, столь необходимого в определенных ситуациях.

9 – Протоколы!

В быту протоколы существуют, чтобы в определенной ситуации мы знали, как реагировать. Допустим, вы пожарный, и возникла чрезвычайная ситуация. Каждый пожарный должен следовать протоколу, который устанавливает требования для успешного реагирования. То же самое относится и к протоколам в Swift/Objective-C.

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

Вот пример создания и использования протокола:

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

enum ExtinguisherType: String {

   case water, foam, sand

}

Далее я создам протокол реагирования на чрезвычайные ситуации.

protocol RespondEmergencyProtocol {

   func putOutFire(with material: ExtinguisherType)

}

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

class Fireman: RespondEmergencyProtocol {

    func putOutFire(with material: ExtinguisherType) {

       print("Fire was put out using \(material.rawValue).")

    }

}

Отлично! А теперь используем нашего пожарного.

var fireman: Fireman = Fireman()

fireman.putOutFire(with: .foam)

В результате должно получится следующее: “Fire was put out using foam.”

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

protocol FireStationDelegate: AnyObject {

func handleEmergency()

}

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

class FireStation {
   weak var delegate: FireStationDelegate?

   func emergencyCallReceived() {
      delegate?.handleEmergency()
   }
}

Это означает, что пожарный должен будет также соответствовать протоколу FireStationDelegate.

class Fireman: RespondEmergencyProtocol, FireStationDelegate {

   func putOutFire(with material: ExtinguisherType) {
      print("Fire was put out using \(material.rawValue).")
   }

   func handleEmergency() {
      putOutFire(with: .water)
   }

}

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

let firestation: FireStation = FireStation()
firestation.delegate = fireman
firestation.emergencyCallReceived()

В результате получим: “Fire was put out using water.”

10 – Замыкания

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

Замыкания в Swift аналогичны блокам в C и Objective-C.

Замыкания являются объектами первого класса*, поэтому их можно вкладывать и передавать (как и блоки в Objective-C).

В Swift функции – это частный случай замыканий.

Источник – fuckingswiftblocksyntax.com **

Этот ресурс – отличное место для изучения синтаксиса замыканий.

* Объекты первого класса (first-class objects) – объекты, которые можно использовать без ограничений: присвоить переменной, передать/вернуть из функции, создать/уничтожить во время выполнения программы и т.д. Подробнее. (здесь и далее – прим. переводчика)
** Сайт не работает, но остались снимки в waybackmachine, пример.

11 – Схемы

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

Фиолетовым показана одна из возможных схем

12 – Тесты

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

Начнем с минусов модульного тестирования:

  • Увеличение длительности разработки;
  • Увеличение количества кода.

Плюсы:

  • Необходимость создавать модульный код (для упрощения тестирования);
  • Очевидно, обнаружение большинства ошибок до релиза;
  • Упрощение поддержки.

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

Существует много инструментов, которые можно использовать для проверки работы приложения. В зависимости от того, что нужно отследить, вы можете выбрать один или несколько из них. Пожалуй, наиболее часто используемые инструменты – это Leaks, Time Profiler и Allocations.

13 — Геолокация

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

Существует фреймворк под названием Core Location, позволяющий получить доступ ко всему, что вам нужно:

Фреймворк Core Location позволяет определить текущее местоположение или направление движения устройства. Фреймворк использует доступное аппаратное обеспечение для определения положения и направления пользователя. Вы можете использовать классы и протоколы этого фреймворка для настройки и планирования событий, связанных с местоположением и направлением. Вы также можете использовать Core Location для отслеживания перемещения по географическим регионам. В iOS вы также можете определить расстояние до Bluetooth-маячка*.

* Как я понял, речь о технологии iBeacon

Классно, не так ли? Ознакомьтесь с документацией Apple и приведенным там примером, чтобы лучше понять возможности фреймворка.

14 – Локализуемые строки

То, что должно быть реализовано в любом приложении. Это позволяет менять язык в зависимости от региона, в котором находится устройство. Даже если ваше приложение только на одном языке, в будущем может возникнуть необходимость добавить новые. Если весь текст вводится с использованием локализуемых строк, все, что нужно сделать, это добавить переведенную версию файла Localizable.strings для нового языка.

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

NSLocalizedString(key:, comment:)

К сожалению, чтобы добавить новую строку в файл Localizable, это нужно сделать вручную. Вот пример структуры:

{
"APP_NAME" = "MyApp"
"LOGIN_LBL" = "Login"
...
}

Теперь другой язык (португальский), локализуемый файл:

{
"APP_NAME" = "MinhaApp"
"LOGIN_LBL" = "Entrar"
...
}

Есть даже способы реализации множественного числа.

Всегда делись тем, чему ты научился.

– магистр Йода

Надеюсь, эта статья была полезна!

Развитие языка Swift снизило и так невысокий порог вхождения в iOS-разработку. Изучать сам язык, среду разработки и практики написания кода на нём — одно удовольствие. Но это не значит, что писать для платформ Apple просто или непрестижно: iOS-разработчики востребованы в большинстве крупных компаний. Ссылки на статьи и другие материалы в этом списке подобрал Артур Антонов — разработчик в команде приложения Яндекс.Переводчик.

Советы будут полезны будущим стажёрам Яндекса, а также всем остальным, кто хочет создавать приложения в режиме полного цикла, знать инструменты и основные фреймворки, придумывать архитектуру сервисов, писать производительный код без багов и угадывать мысли цензоров App Store. Если вы уже уверены в своих силах и готовы применять знания на практике, то вы можете податься на летнюю стажировку для iOS-разработчиков.

Инструменты платформы

Если вы только начинаете знакомиться с SDK, набором библиотек для iOS или хотите систематизировать знания в области создания приложений — пройдитесь по этим ссылкам.

Документация Apple, конечно же

Когда в марте 2008 года Apple представила первый SDK (тогда ещё для iPhone OS), больше ста тысяч человек загрузили его за первые две недели после релиза. Но тогда мало кто подозревал, какой бум iOS ждёт нас впереди. Сейчас Apple предлагает очень много полезной информации: ссылки на API, статьи, код. Лучше сначала ознакомиться с содержанием, а потом возвращаться в документацию по необходимости. 

Статьи про отдельные библиотеки iOS

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

Рассылка про iOS-разработку

Если вы мобильный разработчик или только собираетесь им стать, то вы наверняка уже слышали рекомендации подписаться на ряд email-рассылок. Вот всего одна, зато исчерпывающая и с очень чёткой структурой. Её ведёт независимый iOS-разработчик Дэйв Вервер. Внутри — новости индустрии за неделю, ссылки на полезные тулзы, GitHub и многое другое.

На кого стоит подписаться в твиттере

Твиттер — источник остросоциальных тем, новых мемов и идей для iOS-разработки. По ссылке вы найдёте список из 52 сильнейших специалистов индустрии: подписывайтесь, чтобы первыми узнавать важные новости, участвовать в обсуждениях и просто быть в теме.

Интерфейс

Фреймворк UIKit позволяет строить интерфейсы iOS-приложений и обрабатывать действия пользователя. В прошлом году Apple представила SwiftUI, который однажды должен заменить UIKit — но переходный период будет долгим, и ещё в течение нескольких лет большинству разработчиков потребуется знать оба фреймворка.

Документация по UIKit

Официальная документация от Apple очень подробная и становится со временем всё лучше: её точно будет полезно изучить новичкам, но даже при наличии опыта получится найти что-то интересное. Она покрывает большинство тем — от структуры приложения и методов пользовательского ввода до защиты данных и взаимодействия с самой iOS. Обратите внимание на раздел про UIView и его наследников.

Видеокурс по созданию приложения с UIKit

Если вам пока сложно разобраться с UIKit самостоятельно, обратите внимание на этот англоязычный видеокурс. Он создан для абсолютных новичков: опыт в создании iOS-приложений или знание Swift не понадобятся. Первые уроки в игровой форме рассказывают про основные понятия и термины. Все видео короткие — самые длинные идут около 9 минут — и бесплатные.

Туториалы по созданию интерфейса

Статьи про UI в. iOS-приложениях. Тут и про добавление разных элементов (например, контекстного меню или навигации), и про начало работы с анимацией, и про SnapKit для iOS. Основная ценность статей заключается в том, что это полноценные инструкции: со всеми подробностями и комментариями для новичков. Тексты, конечно, тоже на английском языке.

Туториалы по SwiftUI

UIKit — это прошлое и настоящее, а SwiftUI (по крайней мере, по замыслу Apple) — будущее. Apple предлагает начать создавать красивые, динамичные и быстрые приложения с новым декларативным фреймворком. Авторы собрали целый учебник: множество туториалов с разделением на секции и шаги. Каждый шаг проиллюстрирован скриншотом страницы или кода — словом, точно не запутаетесь. В конце каждого туториала можно пройти короткий тест, который проверит, насколько хорошо вы разобрались в теме.

Архитектура

Самый ответственный этап в создании приложения — выбор архитектуры и принципов, по которым вы планируете вести разработку. Чем позже вы найдёте ошибку, допущенную при проектировании, тем сложнее будет её исправить. Изучите материалы по этим ссылкам, чтобы сразу выбрать правильную концепцию приложения.

Примеры SOLID

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

GoF-паттерны с примерами

На этом сайте собрана исчерпывающая информация о паттернах проектирования. Автор предлагает начать с основ: изучить историю создания, задуматься о пользе, почитать критику и узнать всё о классификации. Самое ценное здесь — это сам каталог паттернов.

Clean Architecture

Статья на Хабре, которая призвана донести до сообщества детали концепции Clean Architecture и популярные заблуждения, связанные с ней.

Обзор архитектурных паттернов в iOS

iOS-разработчик из Badoo сравнивает популярные архитектурные практики и рассказывает о своих выводах. Всего автор разбирает четыре архитектурных паттерна: MVC, MVP, MVVM и VIPER. Впечатления от каждого из них в формате «ожидание/реальность» от практикующего разработчика — полезное чтение для новичков в этой теме.

Список опенсорсных iOS-приложений

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

Многопоточность

Концепция многопоточного программирования отлично укладывается в общую идеологию iOS. Запускать процессы в отдельных потоках можно с помощью понятного набора инструментов, который только улучшился с развитием языка Swift. Эта часть списка посвящена Grand Central Dispatch — технологии Apple для управления параллельными операциями. Можно почитать и о некоторых других опциях — знания в области многопоточности пригодятся и на собеседовании, и в продакшене.

Введение в многопоточность iOS

Туториал по улучшению отзывчивости приложений при помощи GCD. Это первая часть большого учебника, которая поможет разобраться, как использовать GCD, а также познакомит с основными функциями, плюсами и минусами API. В рамках туториала авторы предлагают не просто почитать теорию, но и попробовать применить её на практике. Для этого вместе с учебными материалами вы получите почти готовый проект под названием GooglyPuff. Сможете оптимизировать его с помощью GCD — и миссия выполнена!

Архивный гайд от Apple

Несмотря на то, что это руководство за 2012 год, мы советуем не обходить его стороной. Возможно, будет полезно даже начать с него, если вы впервые знакомитесь с темой многопоточности. Внутри вас ждёт подробное описание главных процессов: вы познакомитесь с основами асинхронного проектирования приложений, узнаете про выполнение задач с помощью объектов Objective-C и асинхронную обработку системных событий. Бонус — словарь с основными терминами.

objc.io про многопоточность

objc.io — проект трёх разработчиков из Берлина: Криса Эйдхофома, Даниэля Эггерта и Флориана Куглера. В далёком 2013 году они создали этот сайт, чтобы обсуждать темы, актуальные для всех разработчиков iOS и macOS. Прошло много времени, ребята выпустили целых пять книг и написали множество материалов — самостоятельно и с крутыми экспертами. По ссылке — выпуск на тему многопоточности. Вместе с автором библиотеки PSPDFKit Питером Штейнбергером и опытным разаботчиком Тобиасом Кранцером они рассказывают об основных методах, проблемах и подводных камнях параллельного программирования.

Отладка

Отладка здесь — это не только поиск багов. Инструментарий iOS-разработчика позволяет вам делать структуру кода более прозрачной и видеть больше свойств приложения прямо во время программирования.

Cессия WWDC

Видео доклада с WWDC 2018 — это целый час ценнейшей информации про методы отладки Xcode. Вы узнаете, как использовать популярный дебаггер LLDB и брейкпоинты для исправления ошибок в вашем приложении и что нужно сделать, чтобы получить максимум от инструментов отладки Xcode. Всё это с примерами и подробными объяснениями.

Выпуск objc.io про отладку

Целый урок про отладку приложений от objc.io. Начинается он с разбора кейса — автор рассказывает о процессе и инструментах, которые он использовал для отслеживания ошибки регрессии в UIKit. После этого полезного чтения вас ждут не менее интересные размышления про LLDB и технологии DTrace и Activity Tracing.

Отладка приложений под iOS

Роман Ермолов руководит группой разработки приложения Яндекс для iOS. В этом докладе от 2015 года он говорит про интересные возможности LLDB, отладку иерархии UIView и отладку без исходников. Бонус — реальные примеры и дискуссия по теме в конце доклада.

Как работает LLDB

Во всех вышеперечисленных источниках много внимания уделяется именно этому отладчику. Хотите разобраться во всех нюансах его работы? Тогда вам точно пригодится этот доклад с WWDC 2019. Вы узнаете про разные способы отображения значений, форматирование пользовательских типов данных и (самое интересное!) расширение LLDB с помощью собственных сценариев Python 3.

Устройство Objective-C Runtime

Майк Эш — программист и пилот планера, который живет в Вашингтоне. Впечатляет? Это вы ещё не видели его блог! В нём он делится полезным софтом, делает остроумные посты в формате Q&A по пятницам и рассказывает о полётах. В этом старом (2009 год), но всё ещё полезном материале он рассуждает об Objective-C Runtime. Максимально подробное объяснение поможет разобраться в теме даже новичкам.

Оптимизация

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

Обзорная статья Apple

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

Вводная сессия WWDC об инструментах

Если вы хотите больше узнать про инструментарий Xcode, посмотрите видео с WWDC-2019. Это получасовой рассказ с примерами, который поможет разобраться с такими вещами, как шаблоны для профилирования производительности приложений и поиск «узких» мест в коде. Все описанные спикером инструменты призваны существенно повысить скорость отклика вашего приложения.

Сессия WWDC о подходах к оптимизации

Ещё одно видео с конференции Apple, но уже за 2018 год. Оно позволит глобально взглянуть на тему оптимизации: спикеры говорят об общем подходе и стратегиях, которых стоит придерживаться. Однако тут тоже не обошлось без практических советов, основанных на опыте авторов: они приложили руку к нескольким популярным приложениям от самой Apple. В видео рассказывается о том, как научиться пользоваться пакетом Instruments и другими возможностями Xcode.

Книга о внутреннем устройстве iOS и macOS

Продолжаем погружаться в тему — нужно ещё больше теории. По ссылке вы найдёте почти 800 страниц авторства Джонатана Левина с информацией практически обо всём, что когда-либо интересовало вас в работе с iOS. Чтобы разобраться в принципах работы системы, автор активно пользуется реверс-инжинирингом (обратной разработкой) и учит читателей делать то же самое. Вас ждёт большое количеством практических примеров, иллюстраций, скриншотов и ссылок на открытый исходный код от Apple.

Доклад об оптимизации запуска приложения

Вернёмся к практике. В этом видео руководитель службы мобильной разработки Яндекс. Карт Николай Лихогруд рассказывает об оптимизации времени запуска iOS-приложения Карт. На примере реального кейса вы узнаете, как правильно измерять время запуска, оптимизировать системную и пользовательскую части и поддерживать результат в следующих версиях.

Публикация в App Store

Многие разработчики, включая сотрудников Яндекса, недооценивали сложность процесса подписи iOS-приложения и модерации в App Store. Казалось бы, у вас всё готово: программа работает, вы хотите начать распространять её среди клиентов. Но у Apple есть правила, которым ваш код должен соответствовать.

Как загрузить приложение в App Store

Начните с пошаговой инструкции. Она выгодно отличается от публикаций на других ресурсах своей актуальностью: это популярный гайд от разработчиков Густаво Амброзио и Тони Дабура, обновлённый в 2020 году — с информацией из последней версии Xcode.

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

Ещё одна классная статья на сайте objc.io. Автор считает, что механизм подписи и подготовки кода — одна из самых сложных вещей, с которыми сталкивается iOS-разработчик. Поэтому он подробно описывает процесс: почитайте, чтобы понимать, что и зачем вы делаете. Но учитывайте, что статья написана в далёком 2014 году.

Обзор инструментов Xcode для подписи приложения

Для тех, кто хочет совсем углубиться в тему и разобраться: презентация Apple про функции Xcode, которые упрощают процессы управления сертификатами, подпись приложений и настройку параметров сборки проекта. Это видео с конференции WWDC 2016. Именно тогда компания представила обновлённый способ управления конфигурацией подписи с включенным по умолчанию автоматическим режимом.

Непрерывная интеграция

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

В статье рассказывается:

  1. Необходимые знания и навыки для разработки iOS-приложений
  2. Основы разработки приложений под iOS
  3. Пошаговая инструкция по разработке приложения для iOS-приложения
  4. Пример разработки iOS-приложений на языке Swift
  5. Различия в разработке мобильных приложений для iOS и Android
  6. 5 конструкторов для быстрой разработки приложений для iOS
  7. Программы для разработки iOS-приложений на Windows
  8. Цена разработки приложений для iOS
  9. Пройди тест и узнай, какая сфера тебе подходит:
    айти, дизайн или маркетинг.

    Бесплатно от Geekbrains

Разработка iOS-приложений – перспективное направление в сфере IT. Если вы уже программируете какое-то время, то наверняка задумывались над тем, чтобы попробовать себя в создании мобильной программы для iPhone, но, возможно, что-то вас останавливало. А ведь вы уже давно могли бы освоить эту нишу и начать зарабатывать хорошие деньги.

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

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

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

Безусловно, знать хотя бы основы того же C++ не помешает, тем более что его элементы встречаются и в «яблочных» языках. И все же наибольшей популярностью в разработке для Apple-устройств пользуется Objective-C. Этот язык появился еще в начале 1980-х годов (то есть гораздо раньше C++). Более молодой Swift создатели выпустили в свет в 2014-м. И Objective-C, и Swift активно используются в разработке. Первый нужен для поддержки старого ПО, на втором же пишутся все новые приложения. По этой причине знать желательно оба языка.

Необходимые знания и навыки для разработки iOS-приложений

Необходимые знания и навыки для разработки iOS-приложений

Опытным разработчикам будет гораздо легче осваивать программирование iOS-приложений. Но начать развитие в этом направлении можно, даже не имея никаких навыков в разработке компьютерных программ. Для создания приложений под iOS существует среда PaintCode, появившаяся благодаря активному развитию технологий NoCode.

pdf иконка

Топ-30 самых востребованных и высокооплачиваемых профессий 2023

Поможет разобраться в актуальной ситуации на рынке труда

doc иконка

Подборка 50+ бесплатных нейросетей для упрощения работы и увеличения заработка

Только проверенные нейросети с доступом из России и свободным использованием

pdf иконка

ТОП-100 площадок для поиска работы от GeekBrains

Список проверенных ресурсов реальных вакансий с доходом от 210 000 ₽

Уже скачали 22647 pdf иконка

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

Основы разработки приложений под iOS

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

  • Создание iOS-приложений требует предварительного тщательного анализа отзывов и пожеланий целевой аудитории.
  • Программирование для устройств Apple выполняется в среде Xcode IDE, которая работает только в OS X.
  • Для размещения готового приложения в AppStore необходимо строго соблюдать требования этого магазина.
  1. Выбор языка для начала. Начинать разрабатывать можно как простые, так и кросс-платформенные приложения. В первом случае используется один из двух основных языков для разработки под iOS — Objective-C и Swift. Во втором случае может быть использован код на Java, C++, Python и т. п.
  2. Выбор типа программирования (нативное, гибридное, «чистый web»). Выбор здесь определяется самой концепцией приложения. Если от будущей программы не требуются постоянная доступность, автономность работы в условиях отсутствия интернета и наличие уведомлений для пользователя, лучшим вариантом будет веб-приложение. Благодаря запуску прямо из браузера такую программу можно использовать на любой платформе. Среди других преимуществ отметим универсальность, автоматические обновления, дешевизну разработки.Гибридную или нативную разработку стоит выбрать при создании полноценного мобильного приложения. В первом случае создаются сразу несколько версий программы соответственно для нескольких операционных систем. Это дешевле программирования исключительно под iOS, но и дает в итоге меньшую производительность и безопасность приложения.Выбор гибридного типа разработки обоснован, если:
    • необходимо создать простое приложение;
    • предполагается недорогое использование на двух платформах;

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

    Нативный подход позволяет обойтись без «костылей». Приложение разрабатывается только на стандартном для iOS языке.

    Когда стоит выбрать последний вариант?

    • Приложение создается для работы на одной платформе.
    • Предполагается использование функций, специфичных для данной платформы.
    • Требуется постоянное обновление программы, скоординированное с выходом обновлений ОС или выпуском новых версий устройств Apple.
  3. Стоимость размещения приложения в AppStore. На проверку магазином заявки на публикацию уходят обычно сутки. Далее после одобрения создатель программы должен подписать соглашение и заплатить 99 долларов в качестве взноса за iOS Developer Program. Причем, платеж не единоразовый — его необходимо проводить ежегодно.

Скачать
файл

Пошаговая инструкция по разработке приложения для iOS-приложения

  1. Выбор идеи. Первый этап является ключевым и одновременно самым интересным. Он определит популярность приложения среди аудитории AppStore. Здесь самое сложное для разработчика — определиться, что будет представлять собой программа: логическую игру, агрегатор онлайн-магазинов и т. д. Необходимо решить, какую именно задачу должно решать приложение. Быстрый ответ на этот вопрос будет означать, что разработчик выбрал правильное направление.
  2. Выбор инструментария. Сформулировав идею, не стоит сразу писать для нее код. В разработке мобильных приложений iOS важное значение имеет дизайн (внешний вид). И для этих целей отлично подойдет векторный редактор Sketch. Причем оценивать варианты наработок можно сразу же на устройстве благодаря плагину Sketch Preview и бесплатному просмотрщику Skala Preview. После создания дизайна и назначения функций кнопкам программист может приступать непосредственно к коду.
  3. Этап разработки. Приложение для iOS разрабатывается, как правило, на Objective-C, хотя все более популярным среди разработчиков становится Swift. Этот язык примечателен более простым синтаксисом и, как следствие, он проще в освоении. Тем не менее, для самостоятельной разработки приложений под iOS Swift требуется тщательное штудирование специализированных учебников и справочников. За время такого обучения другой разработчик может уже реализовать намеченную идею, создав аналогичное приложение.

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

  4. Выбор названия. Любопытный факт: имя определяет большую часть успеха приложения. Именно с названием (не считая иконки) впервые сталкивается пользователь, когда находит приложение, например, через поиск. Поэтому к неймингу нужно отнестись серьезно:
    • для игры подойдет огромное множество вариантов, пришедших в голову создателю;
    • узкоспециализированное приложение желательно назвать в соответствии с функцией (например, вариант для заметок — «Notes»);
    • лучше подбирать англоязычное название, понятное иностранным пользователям (например, приложение из категории «музыка» логично назвать «Music»).

    Дарим скидку от 60%
    на обучение «Инженер-программист» до 24 сентября

    Уже через 9 месяцев сможете устроиться на работу с доходом от 150 000 рублей

    Забронировать скидку


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

  5. Размещение в магазине. Готовое к загрузке и тщательно протестированное приложение можно публиковать в AppStore. Но перед этим необходимо купить подписку разработчика за 99 долларов в год, о чем мы уже упоминали ранее. Далее рекомендуется внимательно изучить гайдлайны магазина.

Только до 28.09

Скачай подборку материалов, чтобы гарантированно найти работу в IT за 14 дней

Список документов:


ТОП-100 площадок для поиска работы от GeekBrains


20 профессий 2023 года, с доходом от 150 000 рублей


Чек-лист «Как успешно пройти собеседование»

Чтобы получить файл, укажите e-mail:

Введите e-mail, чтобы получить доступ к документам

Подтвердите, что вы не робот,
указав номер телефона:

Введите телефон, чтобы получить доступ к документам


Уже скачали 52300

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

Пример разработки iOS-приложений на языке Swift

В качестве примера возьмем простое приложение, которое рассчитывает индекс массы тела и количество калорий, требуемое для поддержания массы. Расчет будет вестись с использованием стандартной формулы ИМТ и формулы Гарисса Бенедикта.

  1. В первую очередь необходимо создать проект в среде Xcode. Сделайте это, нажав комбинацию клавиш Cmd+Shift+N или выбрав в меню File — New пункт Project.
  2. Выберите вариант Tabbed Application и нажмите Next.
  3. Придумайте название приложения в соответствии с приведенными критериями и впишите его в поле Product Name. Нажмите Next и сохраните проект в определенной папке. Параметры Organization Name и Organization Identifier можно оставить как есть. Важно убедиться, что в поле Language выбран Swift.
  4. После сохранения проекта вы увидите рабочее пространство среды разработки. Слева и справа расположены панели, соответственно, Navigator и Utilites. В них имеется набор вкладок, позволяющих использовать различные функции. К примеру, в первой вкладке панели Navigator отображается перечень файлов проекта, а третья вкладка выполняет поиск по проекту.
  5. В первой вкладке Навигатора отыщите Main.storyboard и нажмите на него. Данный файл определяет имеющиеся в приложении экраны (контроллеры), в которые можно добавлять элементы. Между экранами также могут задаваться связи. Выбранный контроллер выделяется синей рамкой, а в панели Utilites отображаются его свойства (к примеру, размер). Для изменения размера экрана достаточно выбрать другое значение в поле Size.
  6. Запустите готовый шаблон приложения и оцените его внешний вид в симуляторе, выбрав вверху слева тип устройства и нажав на Play (либо Cmd + R). Перед вами отобразится приложение из двух экранов, переключаться между которыми можно с помощью таб-бара.
  7. Указанные табы необходимо переименовать. Сперва кликните по каждому табу либо выберите его из иерархического списка элементов управления. Выбранный элемент должен подсветиться зеленым цветом.
  8. Далее нужно выбрать функцию Attributes Inspector в панели Utilites. Переименуйте табы, поменяв значение первого таба на «BMR/BMI», а второго таба — на «ккал». На данном этапе первый экран содержит различные надписи. Их нужно удалить, выделяя мышкой и нажимая клавишу Delete.
  9. Добавьте собственные элементы управления к сцене. Для этого выберите нужные объекты из библиотеки Object Library, расположенной в нижней части панели Utilites. Отыщите объект Label и переместите его на экран «BMR/BMI». Предварительно дважды щелкните по сцене для приведения ее масштаба к стандартному. Панель Utilites среди прочего содержит функции изменения текста, шрифта и т. д.
  10. Переместите несколько других лейблов, пропишите им текст как на изображении. В последнем лейбле необходимо установить параметру Lines значение 2 для автоматического переноса текста на новую строку.
  11. Далее добавьте 3 текстовых поля (Text Field), установив их параметры Keyboard type в значение Number Pad. Сам текст оставьте по умолчанию.
  12. Следующим шагом нужно добавить элементы управления, позволяющие пользователям выбирать пол и количество тренировок в неделю. Это можно сделать путем добавления элемента Segmented Control из библиотеки Object Library на экран. В данном элементе есть возможность изменять количество сегментов и устанавливать текст для каждого сегмента.
  13. Добавьте кнопку в проект и задайте ей заголовок. Этот элемент называется button. Затем добавьте еще один лейбл со значением параметра Lines, равном 4.
  14. Откройте Assistant Editor, выбрав контроллер BMI/BMR и щелкнув по двум пересекающимся кольцам вверху справа. Отобразится код выбранного контроллера.
  15. Добавьте элементы управления. Кликните по первому текстовому полю для ввода возраста, зажмите Ctrl и повторно кликните по этому полю. Удерживая клавишу мыши, перетащите элемент внутрь класса. Должна всплыть подсказка “Insert Outlet, Action, …”. Как только она появилась, отпустите клавишу мыши. Отобразится окно создания связи. Впишите в поле имени значение ageTextField и нажмите Connect.
  16. Таким образом, вы создали переменную ageTextField. Повторите данную операцию для оставшихся текстовых полей, лейблов и элементов segmented controls, предполагающих текстовое значение результата. Далее переместите кнопку. Тип соединения следует указать Action, а в поле имени вписать calculateTapped.
  17. Затем в метод calculateTapped нужно скопировать указанный ниже код, предназначенный непосредственно для расчета целевых значений и вывода результата на экран.
  18. Проведите итоговую проверку работоспособности приложения, запустив его.

Различия в разработке мобильных приложений для iOS и Android

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

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

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

    Это важно учитывать разработчикам. Допустим, все устройства на базе Android имеют общую панель навигации, расположенную снизу и содержащую кнопку «Назад». Используя эту кнопку, пользователи легко возвращаются на предыдущий экран или этап. Практически все Android-приложения поддерживают эту возможность.

    Дизайнерский подход Apple в этом смысле отличается. В мобильных устройствах на базе iOS нет глобальной навигационной панели, а соответственно отсутствует и кнопка «Назад». Поэтому пользователи нативных приложений для этой системы по умолчанию не могут возвращаться на предыдущий экран данным способом.

    Это значит, что при создании дизайна в рамках разработки iOS-приложений с нуля необходимо такую возможность предоставлять, создавая отдельную навигационную панель для каждого приложения. Кнопка «Назад» при этом размещается в левом верхнем углу.

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

    Это существенное различие между двумя платформами необходимо всегда учитывать для согласованности с другими мобильными приложениями.

  2. Другие отличительные признаки навигационных паттернов в приложениях для iOS и Android. У системы Android имеется свой свод рекомендаций — так называемые Material Design Guidelines. Там для разработчиков предлагаются на выбор несколько вариантов навигации. Например, в приложениях широко применяется шаблон, комбинирующий навигационную панель с вкладками.Панелью навигации служит меню, появляющееся слева или справа при нажатии на кнопку с тремя горизонтальными чертами (меню «гамбургер»). Вкладки, размещаемые под заголовком экрана, предназначены для организации контента на верхнем уровне, давая пользователю самостоятельно переключать визуальное представление данных или функциональные элементы всего приложения.

    Что такое доменное имя: от общего понятия, до регистрации

    Читайте также

    В Guidelines также предлагается нижняя навигация, панели которой служат для переключения видов верхнего уровня одним нажатием. Для нативных приложений это достаточно важный компонент. Одновременное использование вкладок и нижней навигации не рекомендовано, так как это может запутать пользователя.В Apple разработаны собственные Human Interface Guidelines, где какой-либо аналог стандартной навигационной панели отсутствует. Вместо этого для глобальной навигации предполагается использование панели вкладок, размещаемой снизу экрана. Через этот элемент пользователи могут быстро переключаться между основными блоками приложения.

    Как правило, в панель вкладок добавляется не более 5 пунктов назначения. Аналогом данного элемента в Material Design служит нижняя навигация, однако чаще всего такое решение используется именно в iOS-приложениях.

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

    Помимо этого, мобильные системы отличаются друг от друга концепцией. Так, в Apple придерживаются принципа, исходя из которого все главные элементы должны располагаться на переднем плане. Меню «гамбургер» хранит лишь второстепенные функции, не выполняемые пользователем регулярно. Для приложений Android же в порядке вещей скрывать первичную навигацию в этом меню.

  3. Нативные слои «bottom sheets» и «action sheets». Первый вариант используется в продуктах под Android. В свою очередь существует 2 типа нижних листов: модальные и постоянные. Модальные слои могут вмещать в себе либо контент, предполагающий различные действия, либо список приложений, появляющийся после нажатия кнопки «Поделиться». Аналогичную роль в приложениях iOS выполняют, соответственно, элементы «action sheets» и «activity views». Тем не менее, их следует отличать от «bottom sheets» в Android.
  4. Сенсорные цели и сетки. Apple для своих мобильных ОС рекомендует устанавливать сенсорные цели (touch target) со следующими параметрами: 44px @1x. Для устройств Android рекомендованные значения выглядят так: 48dp / 48px @1x. Кроме того, в соответствии с Material Design Guidelines при разработке приложений элементы интерфейса желательно согласовывать с квадратной базовой сеткой 8dp.
  5. Типографика. Две платформы отличаются друг от друга и стандартными шрифтами. В iOS это San Francisco, в Android — соответственно, Roboto. Также на Android-устройствах и, в частности, в Google Chrome в качестве стандартного устанавливается шрифт Noto специально для языков, не поддерживаемых Roboto. Программист в процессе создания приложения для той или иной платформы должен учитывать специфичные особенности типографики.

Выбор между iOS и Android

Выбор между iOS и Android

Правильный выбор между iOS и Android:

  • Не следует концентрироваться на какой-то определенной системе. Разработчики на протяжении года могут создавать программы для Android, а затем легко переключиться на разработку под iOS. В любом случае все накопленные знания пригодятся. Часть практических навыков, приобретенных на Android, будут применимы и в среде разработки iOS-приложений.
  • Прежде всего, программисту нужно знать общую терминологию, облегчающую общение с другими разработчиками мобильных приложений. Так, наименование многих компонентов или архитектур, специфичных для iOS, будут понятны специалистам по Android.
  • Не стоит игнорировать специальные курсы по разработке приложений для iOS. Обучение этим навыкам с преподавателями позволит в течение нескольких месяцев изучить актуальные языки программирования, найти единомышленников в сообществах и в целом освоиться в новой профессии. Подобные программы существуют при университетах, а также в рамках курсов дополнительного образования. Как правило, там обучают разработке и для iOS, и для Android.

5 конструкторов для быстрой разработки приложений для iOS

  1. Appy Pie. Эта платформа сегодня развивается наиболее стремительно и уже успела оставить отчетливый след в сфере разработки iOS-приложений. Для начинающих Appy Pie подойдет в том числе. Благодаря своей гибкости в оплате тарифов данная среда разработки будет полезна также представителям малого и среднего бизнеса. В частности, здесь можно начать разрабатывать приложения на бесплатной основе, а уже в процессе выбрать подписку, наиболее удовлетворяющую бюджету.
  2. Shoutem. Продукт был выпущен на рынок в 2011 году и с тех пор непрерывно развивается, став одним из лучших на рынке. Платформа предлагает на выбор множество гибко настраиваемых шаблонов, в результате использования которых можно добиться уникальности во внешнем виде и дизайне приложения и высокой функциональности.Shoutem идеально подходит для разработки приложений по управлению мероприятиями. Также здесь имеется функция Social Wall («социальная стена»), благодаря которой можно эффективно взаимодействовать с другими пользователями.
  3. Swiftic. Продукт появился на свет в 2010 году, поначалу являясь израильским аналогом Como. На сегодняшний день платформа выросла до очень больших масштабов — на ее базе создано более миллиона мобильных приложений. В среде Swiftic имеется большое разнообразие блоков и компонентов, с помощью которых можно создавать планировщики, формировать карты лояльности, собирать целые интернет-магазины.

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

  4. GoodBarber. Данная платформа способна приятно удивить практически всем. Продукт, созданный на острове Корсика, включает в себя очень качественные шаблоны и имеет привлекательный внешний вид. Помимо этого, в GoodBarber реализованы соцсети, чаты, iBeacons, геофенсинг и множество других новейших функций.
  5. BuildFire. Высочайшая надежность этой платформы подтверждена уже более чем 30 тысячами клиентов, реализовавших в BuildFire свои приложения. В основном это предприятия, бренды и инфлюенсеры. Данная среда разработки считается одним из лидеров в области ускоренной разработки мобильных приложений.

Программы для разработки iOS-приложений на Windows

Рассмотрим в данном разделе решения, позволяющие программировать для iOS в системе Windows.

  1. Genuitec MobiOne. Программа работает на базе HTML/JS и с использованием фреймворка PhoneGap. Таким образом, программисты могут разрабатывать в среде Windows приложения, пользуясь функционалом веб-технологий, и затем запускать их через фреймворк Objective-C, отвечающий на действия UIWebView.

    Благодаря последнему предоставляется доступ к стандартным возможностям устройств на iOS. Фреймворки бесплатны, но для тестирования и компиляции понадобится компьютер или ноутбук от Apple.

  2. Flash CS5.5. Flash CS5.5 в связке с Flash iPhone Packager неплохо решает поставленную задачу. С помощью упаковщика для системы iOS компиляция приложений возможна в среде Windows. Flash iPhone Packager обеспечивает соблюдение новейших стандартов Apple. Тем не менее, в этом случае не стоит рассчитывать на нормальную работу приложений с высокими аппаратными требованиями (Papervision, например).

    Компьютер от Apple при разработке приложения данными средствами не понадобится. На вопрос, можно ли создавать приложения на Flash для iOS в отсутствие официальной среды разработки Adobe, ответ безусловно будет положительным. Компиляция при этом осуществляется с помощью Flex. Упакованные приложения должны соответствовать рекомендациям ASME.

  3. Stonetrip S3D. Это не только среда разработки, но и игровой движок, созданный под Windows. Здесь используется язык LUA. Как для компилирования, так и для тестирования понадобится компьютер от Apple.
  4. Airplay SDK. Программа дает возможность разрабатывать и выпускать 2D и 3D игры для iOS в системе Windows. Бесплатность решения обеспечивается независимыми разработчиками.
  5. Unity 3D. В данном редакторе, также включающем в себя игровой движок, используются языки программирования Boo и C#. Это дает возможность работать как под Windows, так и под Mac.
  6. Appcelerator Titanium. Неплохое решение, которое поддерживается достаточно большим и активным сообществом. Для создания приложений здесь применяются веб-технологии HTML/JS, поэтому высокая производительность от компьютера не требуется. Скомпилированные приложения могут загружаться в AppStore стандартным образом.
  7. Dragonfire SDK. Этот интересный продукт позволяет разрабатывать приложения с собственными SDK в среде Windows. После этого останется загрузить на сервер платформы исходный код для компиляции и скачать уже готовое iOS-приложение одним файлом. Единственное условие для такой операции: необходима версия Ultimate. В продукте реализована качественная симуляция работы приложения.

Scratch: среда программирования для детей

Читайте также

К этому списку можно было бы добавить еще несколько любопытных решений, но они либо полностью платные, либо еще находятся в разработке на стадии тестирования. Значительная часть разрабатываемых продуктов по сути являются упрощенными вариантами Dragonfire SDK.

То есть предполагается возможность создания iOS-приложений в системе Windows путем компиляции исходного кода разработчика. Из перечисленных выше решений наиболее богатый функционал отмечен у бесплатной программы Airplay SDK.

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

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

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

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

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

  1. Стандартное оффлайн-приложение с простейшим функционалом (например, визитная карточка): ценовой диапазон — 150-450 тысяч рублей, средний срок выполнения — 1 неделя.
  2. Приложение, подразумевающее взаимодействие через интернет с серверной частью (модерация сообщений, наполнение сайта контентом и т. п.): ценовой диапазон — 450-950 тысяч рублей, средний срок выполнения — 2-3 недели.
  3. Чат-бот или интерактивный помощник: ориентировочная стоимость — 1 млн рублей, средний срок выполнения — 1 месяц.
  4. Приложение, реализующее принцип IoT (например, для связи с другими устройствами посредством Bluetooth или Wi-Fi): ценовой диапазон — 1-1,5 млн рублей, средний срок выполнения — 1,5 месяца.
  5. Мессенджер: ценовой диапазон — 1,5-2,5 млн рублей, средний срок выполнения — 2 месяца.
  6. Приложение, реализующее технологии дополненной и виртуальной реальности: ценовой диапазон — 1,8-2,5 млн рублей, средний срок выполнения — 2 месяца.
  7. Приложения для оказания услуг (доставка продуктов, заказ такси, взаимодействие с курьерами и т. д.): ценовой диапазон — 2-3 млн рублей, средний срок выполнения — 2 месяца.
  8. Интернет-магазины и каталоги продукции с поиском, скидочной механикой, эквайрингом и личным кабинетом клиента: ориентировочная стоимость — 2 млн рублей, средний срок выполнения — 2 месяца.
  9. Приложения для соцсетей, различные по функционалу: ценовой диапазон — 2-4 млн рублей, средний срок выполнения — 3 месяца.
  10. Корпоративные приложения, интегрированные с множеством других сервисов, обладающие высокими требованиями к защите информации и безопасности данных: наиболее дорогой в разработке сегмент мобильного ПО.

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

Без приложений для мобильных устройств современному бизнесу никуда. Поэтому хороший Android-разработчик на вес золота. Востребованным специалистом можно стать всего за 9 месяцев. Воспользуйтесь уникальной возможностью изучить основы разработки приложений для Android. Вы изучите языки программирования Java и Kotlin, фреймворки и другие инструменты. Научитесь создавать игры, соцсети, интернет-магазины и получите опыт работы с реальными проектами. Записывайтесь на курс уже сегодня.

Если вы разрабатываете приложения для iOS, то вам наверняка пригодится режим разработчика на iPhone. Этот режим предназначен для упрощения процесса разработки, тестирования и отладки приложений на устройствах Apple. Чтобы включить режим разработчика на iPhone, вам нужно выполнить следующие действия: 

  1. Перейдите в меню «Настройки» на вашем iPhone.
  2. Нажмите на «Общие».
  3. Прокрутите страницу до пункта «Информация».
  4. Нажмите на «Серийный номер» до тех пор, пока не появится надпись «Режим разработчика включен».

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

  1. Возможность подключения к iPhone инструментов для отладки, таких как Xcode.
  2. Возможность установки профиля разработчика на iPhone для тестирования приложений, которые еще не опубликованы в App Store.
  3. Возможность настройки различных параметров, которые не доступны в обычном режиме.

Профиль разработчика — это набор сертификатов, который позволяет вам тестировать и устанавливать приложения на устройствах Apple, которые еще не опубликованы в App Store. 

Чтобы установить профиль разработчика на iPhone, вам нужно выполнить следующие действия: 

  1. Зарегистрируйтесь в Apple Developer Program на официальном сайте Apple.
  2. Скачайте профиль разработчика из панели управления веб-сайта Apple Developer Program.
  3. Подключите iPhone к компьютеру и откройте Xcode.
  4. В меню Xcode выберите «Preferences», затем «Accounts». Нажмите на «+» и добавьте свой Apple ID.
  5. Выберите «Manage Certificates» и загрузите профиль разработчика.

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

  1. Установка приложений из непроверенных источников: В режиме разработчика можно установить приложения на устройство без необходимости загрузки в App Store. Для этого необходимо разрешить установку приложений из непроверенных источников.

  2. Отображение сетевых запросов: С помощью этой настройки можно отображать все сетевые запросы, отправляемые и получаемые приложением. Это может помочь разработчикам отслеживать проблемы с сетевыми запросами и оптимизировать производительность приложения.

  3. Отображение CPU и памяти: Режим разработчика также позволяет отображать информацию о использовании процессора и памяти на устройстве. Это может помочь выявить узкие места в приложении и оптимизировать его производительность.

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

  5. Отладка через USB: Режим разработчика также позволяет отлаживать приложение на устройстве через USB-подключение. Это может быть полезным при разработке сложных приложений или при отладке проблем, которые происходят только на конкретном устройстве.

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

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

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

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

image

Идея

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

image

image

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

Результат

image

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

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

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

Как сделать приложение для iPhone самому

Favorite

В закладки

Как сделать приложение для iPhone самому

Без финансовых вложений и специальных знаний.

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

Примечание для пользователей Windows: чтобы создавать приложения для iOS вам необходимо установить OS X на виртуальной машине (VirtualBox, VMware). Это процесс отнюдь не прост и для его осуществления требуется отдельная инструкция.

1. Идем в App Store и устанавливаем среду разработки XCode:

start_install_xcode

Если у вас уже стоит XCode, то необходимо обновить его.

xcode_create_project

2. Запускаем xCode и выбираем пункт меню File -> New -> Project:

3. Выбираем платформу и тип приложения:

choose_application_type

info_about_app

4. Указываем информацию о проекте. Обратите внимание, что мы выбрали тип приложения «Universal»:

5. Нажимаем на кнопку New Folder и указываем имя папки, в которой будем хранить файлы приложения:

hello_world_folder

start_application_work

6. Снимаем галочку с чекбокса Create Git Repository и нажимаем кнопку Create . В результате вы должны попасть на стартовый экран работы над приложением:

7. Нажимаем на пункт Main.storyboard в правом меню, перетаскиваем на основное поле элемент Label и добавляем в него текст Hello_world:

drag_label

8. Теперь надо сделать иконку для приложения. Подбираем картинку и загружаем ее на mapappicon.com:

makeicon

9. Ждем когда веб-приложение закончит работу и указываем свой адрес электронной почты для получения архива с иконками:

sucess_icon

10. Возвращаемся в XCode и в левом меню выбираем раздел Assets.xassets:

add_app_icon

11. Открываем архив из почты и перетаскиваем иконки оттуда на рабочее пространство XCode:

open_icon_archive

12. Выбираем один из симуляторов устройств, нажимаем на кнопку запуска приложения (черный треугольник) и включаем на своем Mac Developer Mode:

start_launch

13. Повторяем попытку запуска. Ждем, когда на симуляторе загрузится iOS:

load_ios_in_simulator

14. Убеждаемся, что приложение работает:

hello+world_in_simulator

Смотрим готовое приложение на устройстве

Теперь можно посмотреть, как работает приложение на устройстве. Перед выполнением инструкции убедитесь, что у вас свежие версии XCode и iOS.

1. Идем в xCode -> Preferencies -> Accounts и добавляем свой Apple ID:

xcode_preferences

2. Подсоединяем iOS-устройство к компьютеру:

choose_device

3. Выбираем нужное устройство в списке и нажимаем на кнопку запуска. Ждем некоторое время.

4. Если вылезло сообщение о проблемах с безопасностью, то на iOS-устройстве идем в Настройки -> Основные -> Управление устройством и разрешаем запуск приложений от разработчика с вашим Apple ID:

device_management

developer_trust

5. Идем на рабочий стол и находим иконку нового приложения:

spring_board

app_in_action

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

Что делать, если хочешь больше?

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

Ведь Apple предъявляет очень высокие требования к приложениям. App Store Review Guidelines включает в себя 29 пунктов и более сотни подпунктов. Для того, чтобы приложение им соответствовало и было принято для публикации в магазине, разработчику требуется большой объем технических знаний.

Если хотите создавать качественные приложения для iOS предназначенные для массового использования, надо учиться!

geek_brains_webinars

Начать въезжать в тему можно с бесплатных вебинаров о мобильной разработке. Регистрируйся и смотри:

  • Программирование на Objective-C. Разработка простого калькулятора для iPhone
  • Swift — скорость и простота разработки
  • Язык Swift против языка Objective-C
  • Обзор Swift Cocoapods Frameworks
  • Обзор Swift Cocoapods Frameworks. Часть 2
  • Обзор Swift Cocoapods Frameworks. Часть 3
  • Обзор Swift Cocoapods Frameworks. Часть 4
  • Реактивное введение в мобильную разработку под Windows
  • Методы тестирования мобильных приложений на платформе Android

А лучше записаться на бесплатный курс Objective C. Приложение TO-DO List. Он состоит из 16 уроков с домашними заданиями, которые проверяются преподавателем.

(16 голосов, общий рейтинг: 4.63 из 5)
🤓 Хочешь больше? Подпишись на наш Telegram.

Favorite

В закладки

Без финансовых вложений и специальных знаний. Вот простейшая инструкция, как создать элементарное iOS-приложение и испытать его на своем устройстве. Отталкиваясь от нее вы сможете дальше углубиться в тему и создавать реально полезные программы. Примечание для пользователей Windows: чтобы создавать приложения для iOS вам необходимо установить OS X на виртуальной машине (VirtualBox, VMware). Это процесс отнюдь.

Легко ли начать разработку для iOS с нуля?

Конечно, вам будет гораздо легче, если вы умеете программировать, но создавать простые iOS-приложения можно даже без навыков программирования. Сейчас активно развиваются NoCode-технологии , и программы для iOS можно делать в PaintCode .

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

🍏 Как начать разрабатывать iOS-приложения с нуля

Разработка мобильных приложений под iOS – это не только весело, но и выгодно. В США за 2019 г. средняя годовая зарплата составляла 84 тыс. долл.

C тех пор, как Apple запустил App Store в 2008 г., было разработано 2 млн приложений . Согласно Appinventiv к 2021 году количество загрузок достигнет 353 млрд. Что насчёт России? По данным портала SuperJob в России разработчики iOS-приложений получают от 64 до 120 тыс. рублей.

Итак, что нужно, чтобы получить работу в качестве разработчика iOS?

1. Легче всего будет работать на macOS

Разработка приложений для iOS обычно осуществляется на Macbook/iMac. Не нужно гнаться за самой новой моделью, подойдет и простенький Air. Главное, чтобы на устройстве можно было установить последнюю версию macOS. Можно разрабатывать и на виртуальной macOS-машине, но это «больно».

2. Установите необходимый софт для iOS-разработки

Самая широко используемая IDE для iOS-разработки – это Xcode. Можно за день изучить, что где находится и для чего используется. Стоит потратить время и на продвинутые фичи и горячие клавиши , это облегчит и ускорит процесс разработки.

Разрабатывать iOS-приложения можно и на Objective-C, но обычно его используют для поддержки легаси-приложений. Для написания новых программ лучше подойдет Swift. Этот язык сейчас активно продвигается самой Apple.

🍏 Как начать разрабатывать iOS-приложения с нуля

Важно уметь адаптироваться к изменениям. Я бы не сказала, что каждая новая фича – это что-то хорошее. Если запустить Xcode, то можно увидеть много маленьких кнопок и панелей. Поверьте, нет ничего раздражительнее, когда в них что-то меняют, передвигают, удаляют, и потом надо тратить тысячу часов на их поиск. Ладно, преувеличиваю (нет).

3. Создайте пользовательский интерфейс

Разработчику iOS-приложений обязательно нужно уметь создавать пользовательские интерфейсы. Подвох в том, что это можно сделать несколькими способами. Например, используя Interface Builder и Storyboards из туториалов Apple. Или с помощью кода, для чего есть тоже множество разных решений . А можно взять SwiftUI – фреймворк для декларативного программирования пользовательских интерфейсов. Он относительно новый, но уже успел завоевать симпатии разработчиков.

🍏 Как начать разрабатывать iOS-приложения с нуля

Что касается дизайнов и прототипов, их я создаю в Sketch или Figma . Еще пользуюсь Canva . Практически всегда от клиентов поступают готовые ассеты. Поэтому, даже если вы не очень разбираетесь в дизайне, нужно уметь пользоваться соответствующими инструментами.

4. Нетворкинг и работа с API

Обязательно освойте работу с разными форматами данных. По крайней мере, нужно уметь парсить JSON и знать нетворкинг-классы Apple (URLSession) и библиотеки, к примеру, сетевую библиотеку Alamofire.

5. Научитесь взаимодействовать с базами данных

Самые распространенные базы данных в разработке iOS – это MongoDB, Firebase и Realm.

6. Контроль версий

Общение с моей командой осуществляется в Git. Можно освоить и другие менеджеры контроля версий, но мне на практике встречался только он.

7. Изучите пошаговые туториалы

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

Мой первый Swift dev курс я прошла на Udemy ( iOS разработка на Swift 5 от Angela Yu ). Мне он понравился тем, что составлен для новичков и сложность нарастает линейно. То есть не будет такого, что на первом уроке вы установили Xcode, а на втором кодите Flappy Bird. В курсе огромное количество готовых ассетов, что я нахожу огромным плюсом, так как можно сосредоточиться на программировании и не ломать голову над тем, куда поместить очередной UI-элемент или какой цвет придать кнопке.

Еще много полезностей можно найти на сайте Hacking With Swift . Там всё понятно и бесплатно. Сайт одобрил сам Крис Латтнер, создатель Swift. У проекта есть канал в Slack, где можно законнектиться с iOS-разработчиками со всего мира. Создатель сайта Пол Хадсон активно общается с пользователями в Slack и Twitter ( @twostraws ).

Примечание

Библиотека программиста также составила подборку 70 YouTube-каналов и плейлистов о мобильной разработке, в которой есть отдельный раздел с видеокурсами по разработке под iOS.

Если вы уже разрабатываете iOS-приложения и ищете работу, то канал iOS-разработчика Шона Аллена поможет грамотно подготовиться к собеседованию. Шон рассматривает самые каверзные вопросы, а также загружает туториалы для разработчиков разных уровней. Не каждый может похвастаться 10-летним опытом разработки в Swift, а именно столько лет исполнилось Swift в этом году!

8. Практикуйтесь

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

Многие ругают фриланс, но именно с него я начала, когда разобралась с основами разработки. Поэтому найдите подходящий по уровню проект и действуйте.

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

Если интересно, могу написать о своей учёбе в университете, в том числе об учёбе во время COVID-пандемии.

Хочу научиться программировать с нуля, но не знаю, с чего начать. Что делать?

Можно учиться самостоятельно (долго) или пойти на курсы с преподавателями (быстро). Плюс нужно учитывать, что джунов много, конкуренция выше и работодатели повышают порог вхождения при найме на работу. Чтобы получить актуальные знания, мы в proglib.academy запустили курсы:

  • Основы программирования на Python.
  • Профессия Python-разработчик.
  • Алгоритмы и структуры данных.
  • Математика для Data Science.
  • Профессия Data Science.
  • Frontend Basic: принцип работы современного веба.
  • Профессия Фронтенд-разработчик.
  • Обработка естественного языка. Полный курс.

На подходе еще больше 10 курсов для взрослых и детей.

При подготовке материала использовались источники:
https://habr.com/ru/articles/250171/
https://www.iphones.ru/iNotes/543737
https://proglib.io/p/kak-nachat-razrabatyvat-ios-prilozheniya-s-nulya-2020-07-23

Понравилась статья? Поделить с друзьями:
  • Урупский гок руководство
  • Estel professional хромоэнергетический комплекс инструкция по применению
  • Милдронат инструкция по применению противопоказания побочные эффекты
  • Триакутан инструкция по применению цена отзывы аналоги цена
  • Театр шалом руководство