Лекция 15 CS193P Spring 2016 — Application Lifecycle («жизненный цикл» приложения), Alerts и Cloud Kit.

screen-shot-2016-09-11-at-10-22-50-am
В Лекции 15 на сцену выходят в главной роли файл AppDelegate, который до сих пор Полом Хэгерти прятал во вспомогательную папку Supporting Files,  и CloudKit, этот реальный Mobile Backend as a Service (MBaaS) с авторизацией пользователей, с private  и public базами данных, структурированным хранением больших файлов и push уведомлениями. CloudKit — замечательный, очень простой, надежный  и практически бесплатный (до 1PB бесплатного public хранилища). Это прекрасная замена Parse, который недавно прекратил свое существование.

В результате в Лекции 15 освещаются три основные темы:

  • “Жизненный цикл” приложения (Notifications, AppDelegate, Info.plist, Capabilities)
  • Alerts и  Action Sheets
  • Cloud Kit

NSNotification

Это действительно важная часть MVC шаблона конструирования. Она нужна для передачи информации от Model к Controller  или от Глобального контекста к Controller. Иногда   в приложении происходят глобальные вещи, и нам нужно транслировать эту информацию специальным  View Controllers, заинтересованным в ней. View Controllers подписываются на  слушание определенных «радиостанций» и, таким образом, узнают о глобальных событиях в приложении.  В лекции рассказывается о том, как в iOS организован механизм передачи уведомлений, описываемых классом NSNotification: как создать «радиостанцию» и послать уведомление, как получить уведомление путем слушания вещания определенной «радиостанции».

Application Lifecycle

Приложение имеет 4 состояния:

  • режим Foreground, в котором приложение может находится либо в состоянии Inactive (запущено, но нет UI событий) либо в состоянии Active (запущено, получает и обрабатывает UI события).
  • режим Background, в котором код может работать только ограниченное время и нет  UI событий.
  • режим Suspended, в котором код не работает и приложение может быть «убито» в любой момент времени.

В лекции рассказывается о том, как осуществляется переход между этими состояниями и какие возникают уведомления на уровне приложения. Рассматриваются различные варианты задания установок для приложения, в том числе с помощью Info.plist.

Некоторые режимы в вашем приложении редко бывают активны, поэтому они требуют явного “включения” для их использования. И вы можете это сделать в Закладке Сapabilities в установках вашего проекта Project Setting .

Alerts and Action Sheets

В iOS существуют два типа механизмов, которые позволяют с помощью “всплывающего окна” что-то спросить у пользователя. Один называется Alert  (экстренное сообщение), а другой — Action Sheets (список действий).

Они используют один и тот же API. Имеется некоторая разница между этими двумя механизмами. Наиболее легкий способ увидеть разницу между Alert и Action Sheets — это посмотреть пример, представленный на слайдах. В качестве такого примера Пол Хагерти взял уже знакомое нам приложение Cassini и на нем продемонстрировал все возможности Alert и Action Sheets. Особое внимание уделяется появлению Action Sheets в Popover «окошке» как на iPhone, так и на iPad.

Cloud Kit

Cloud Kit — это технология передачи структурированных и бинарных (нестуктурированных данных) между вашим приложением и Apple серверами iCloud. Данные организованы в виде Записей, хранящихся в public и private базах данных. По существу это базы данных в «облаках». Но вам не нужно знать ни PHP, ни SQL, так как все организовано на очень простом интуитивном уровне. Фундаментальными объектами, с которыми работает Cloud Kit,  являются Container и Database. В Cloud Kit есть все основные операции “баз данных”. Все происходит в реальном времени и, естественно, полностью асинхронно, что требует вдумчивого программирования, но у Cloud Kit есть так называемый convenience API (удобный  API), который сильно облегчает взаимодействие разработчика с Cloud Kit.

Профессор показывает все этапы работы с удаленной базой данных через Cloud Kit — создание Записей, изменение их Полей, Выборка Записей, Постоянные Запросы (Standing Queries) c подпиской (Subscription) и Push Notifications. Показано как продвинуть Push Notification дальше от AppDelegate, в котором они получаются, к реальным потребителям View Controllers, которые работают с полученной информацией. Это делается с помощью локальных Notification, о которых шла речь в начале Лекции 15. В режиме разработки Схема базы данных создается Cloud Kit «на лету», и вам не нужно делать изнурительную работу по созданию Схемы базы данных вручную.

На Лекции 16 будет представлен большой демонстрационный пример, в котором все три раздела Лекции 15 будет показаны в действии.

Лекция и слайды на английском языке представлены в iTunes название “15. Application Lifecycle, Alerts, Cloud Kit”.  

Русскоязычный неавторизованный конспект Лекции 15, хронометрированный через каждые 5 минут, и представленный в виде PDF-файла, который можно скачать и использовать offline, а также Google Doc доступны на платной основе.