Обзор Технологий iOS

47
О разработке под iOS iOS — это операционная система, которая запускается на устройствах iPhone, iPod touch и iPad. Эта операционная система управляет оборудованием этих устройств и предоставляет технологии необходимые для написания платформенно- ориентированных приложений. Операционная система поставляется с различными системными приложениями, такими как «Телефон» (“Phone”), «Почта» (“Mail”) и браузер «Сафари» (“Safari”), которые предоставляют стандартные системные службы пользователю. Набор средств разработки приложений для iOS (iOS SDK) включает инструменты и интерфейсы, необходимые для разработки, установки, запуска и тестирования платформенно-ориентированных приложений. Платформенно-ориентированные приложения собираются, с помощью системных библиотек iOS и языка программирования Objective-C и запускаются непосредственно в операционной системе iOS. В отличие от веб-приложений, такие приложения устанавливаются на устройство физически и поэтому всегда доступны пользователю, даже если устройство находится в режиме «Полета». Они располагаются вместе с другими системными приложениями, и, одновременно, сами приложения и пользовательские данные синхронизированы с компьютером пользователя через программу iTunes. Архитектура iOS Архитектура iOS схожа с базовой архитектурой операционной системы Mac OS X. На самом высоком уровне, iOS представляет собой промежуточный слой между оборудованием устройства и приложениями, которые отображаются на экране, как показано на рисунке 1-1. Очень редко приходится создавать приложения, которые будут обращаться к оборудованию напрямую. Вместо этого, приложения взаимодействуют с оборудованием через набор четко-определенных системных интерфейсов, которые защищают приложения от изменений оборудования. Эта абстракция позволяет очень легко писать приложения, которые корректно работают на устройствах с различными аппаратными возможностями. Рисунок 1-1 Приложения расположенные в верхнем слое iOS

description

Перевод официальной документации Apple "iOS Technology Overview" на русский язык.

Transcript of Обзор Технологий iOS

Page 1: Обзор Технологий iOS

О разработке под iOSiOS — это операционная система, которая запускается на устройствах iPhone, iPod touch и iPad. Эта операционная система управляет оборудованием этих устройств и предоставляет технологии необходимые для написания платформенно-ориентированных приложений. Операционная система поставляется с различными системными приложениями, такими как «Телефон» (“Phone”), «Почта» (“Mail”) и браузер «Сафари» (“Safari”), которые предоставляют стандартные системные службы пользователю.

Набор средств разработки приложений для iOS (iOS SDK) включает инструменты и интерфейсы, необходимые для разработки, установки, запуска и тестирования платформенно-ориентированных приложений. Платформенно-ориентированные приложения собираются, с помощью системных библиотек iOS и языка программирования Objective-C и запускаются непосредственно в операционной системе iOS. В отличие от веб-приложений, такие приложения устанавливаются на устройство физически и поэтому всегда доступны пользователю, даже если устройство находится в режиме «Полета». Они располагаются вместе с другими системными приложениями, и, одновременно, сами приложения и пользовательские данные синхронизированы с компьютером пользователя через программу iTunes.

Архитектура iOS

Архитектура iOS схожа с базовой архитектурой операционной системы Mac OS X. На самом высоком уровне, iOS представляет собой промежуточный слой между оборудованием устройства и приложениями, которые отображаются на экране, как показано на рисунке 1-1. Очень редко приходится создавать приложения, которые будут обращаться к оборудованию напрямую. Вместо этого, приложения взаимодействуют с оборудованием через набор четко-определенных системных интерфейсов, которые защищают приложения от изменений оборудования. Эта абстракция позволяет очень легко писать приложения, которые корректно работают на устройствах с различными аппаратными возможностями.

Рисунок 1-1  Приложения расположенные в верхнем слое iOS

Примечания: Хотя приложения в целом защищены от изменений оборудования, вам все равно приходится учитывать различия между устройствами при написании кода. Например, у некоторых устройств есть камера, а у некоторых ее нет. Если приложение умеет работать при наличии или отсутствии какой-то функции, то используя интерфейсы соответствующей библиотеки можно определить, доступна эта функция или нет.

Page 2: Обзор Технологий iOS

Приложения, которым требуется наличие определенного оборудования, должны декларировать это требование в файле со списком свойств приложения (Info.plist). Для получения большей информации о декларировании необходимого оборудования смотрите раздел «Особенности конфигурирования приложений во время сборки» в «Руководстве написания приложений для iOS».

Реализация технологий iOS может быть представлена в виде набора слоев, которые показаны на рисунке 1-2. На самом нижнем слое операционной системы находятся основные службы и технологии, от которых зависят все приложения; на более высоких уровнях находятся более сложные службы и технологии.

Рисунок 1-2  Слои системы iOS

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

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

Технологии и библиотеки каждого уровня описаны в последующих главах этой документации.

Что включено в набор средств разработки приложений для iOS?

Набор средств разработки поставляется со всеми интерфейсами, инструментами и ресурсами, которые необходимы для разработки приложений iOS на вашем компьютере Macintosh с процессором Intel.

Apple предоставляет большую часть системных интерфейсов, расположенных в специальных пакетах, называемых библиотеками. Библиотека — это каталог, который содержит общие динамические модули, и ресурсы (такие как заголовочные файлы, картинки, вспомогательные приложения и т.д.), необходимые для работы этих модулей. Для использования библиотек, вам необходимо подключить их в проекте своего приложения, так же как и любой другой общий модуль. Связав библиотеку со своим модулем, у вас появляется доступ к функциям этой библиотеки. Это также позволяет инструментам разработки определить нахождение заголовочных файлов и других ресурсов библиотеки.

В дополнение к библиотекам, Apple также поставляет некоторые технологии в виде стандартных общих модулей. Так как iOS основана на системе UNIX, многие из них

2

Page 3: Обзор Технологий iOS

являются низкоуровневыми технологиями с открытым исходным кодом. Интерфейсы для этих технологий доступны в стандартной библиотеке и в каталоге с интерфейсами.

Некоторые другие ключевые компоненты средств разработки включают:

Инструменты Xcode — это инструменты, для разработки iOS приложений, в которые входят следующие ключевые компоненты:

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

o Interface Builder — инструмент, для графического создания пользовательского интерфейса. Создаваемые объекты интерфейса сохраняются в файле ресурсов и загружаются приложением во время выполнения.

o Instruments— утилита для анализа производительности и отладки приложений во время выполнения. Вы можете использовать эту программу для сбора информации о поведении вашего приложения во время выполнения и для поиска потенциальных проблем.

Эмулятор iOS — это приложения для Mac OS X, которое эмулирует работу операционной системы iOS, позволяя вам тестировать ваши iOS приложения локально на компьютере Macintosh с процессором Intel.

Библиотека Разработчика iOS — справочная документация, в которой находится информация о технологиях и процессе разработки приложений iOS. Для получения подробной информации, смотрите раздел “Как использовать «Библиотеку разработчика iOS »” .

Хотя вы можете запускать приложения в эмуляторе iOS, инструменты Xcode также позволяют запускать и отлаживать приложения непосредственно на присоединенном устройстве. Эмулятор идеально подходит для сборки и быстрого тестирования приложений, но он не является заменой для тестирования на реальном устройстве. Разработка на реальном устройстве требует подписки в платной программе от Apple “iOS Developer Program” и конфигурирования устройства для разработки. Более подробную информацию о программе “iOS Developer Program” вы сможете найти в центре разработки под iOS (http://developer.apple.com/devcenter/ios).

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

Какие приложения вы можете создавать?

iOS поддерживает разработку приложений двух типов:

Платформенно-ориентированные приложения Веб-приложения

3

Page 4: Обзор Технологий iOS

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

Для создания интерактивных веб-приложений, располагающихся на сервере, используют связку HTML, каскадных таблиц стилей (CSS) и JavaScript кода. Эти приложения передаются через сеть интернет и запускаются внутри веб-браузера “Сафари”. В отличие от таких приложений, платформенно-ориентированные приложения установлены непосредственно на устройство и могут запускаться при отсутствии сетевого соединения.

Слой ‘Core OS’Слой “Core OS” содержит низкоуровневые возможности, на которых построены другие технологии. Даже если вы не используете эти технологии непосредственно в своем приложении, они все равно используются другими библиотеками. И в ситуациях, когда вам необходимо явно работать над безопасностью или связью с внешним дополнительным оборудованием, вам необходимо использовать библиотеки из этого слоя.

Библиотека “Accelerate”

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

Для получения большей информации о функциях библиотеки “Accelerate”, смотрите справку по библиотеке “Accelerate”.

Библиотека “External Accessory”

Представленная в iOS 3.0, библиотека “External Accessory” (ExternalAccessory.framework) предоставляет возможности для связи с дополнительным оборудованием присоединенным к iOS-устройству. Это оборудование может быть подключено через 30-контактный разъем устройства или через Bluetooth. Библиотека “External Accessory” предоставляет вам способ для получения информации о каждом доступном внешнем устройстве и инициирует сессию связи. После этого, вы можете свободно управлять устройством, посылая ему напрямую поддерживаемые команды.

4

Page 5: Обзор Технологий iOS

Для получения большей информации об использовании библиотеки, смотрите разделы “Программирование с использованием библиотеки External Accessory”. Для получения информации о разработке дополнительного оборудования для iOS-устройств, посетите http://developer.apple.com.

Библиотека “Security”

В дополнение к встроенным средствам безопасности, iOS также предоставляет открытую библиотеку “Security” (Security.framework), которую вы можете использовать, чтобы гарантировать безопасность данных вашего приложения. Эта библиотека предоставляет интерфейсы для управления сертификатами, открытыми и закрытыми ключами и политиками доверия. Она поддерживает генерацию криптографически безопасных случайных чисел. А также обеспечивает хранение сертификатов и криптографических ключей в «Связке ключей», представляющую собой хранилище конфиденциальных данных пользователя.

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

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

Для получения информации о функциях и возможностях связанных с библиотекой “Security”, смотрите справку «Библиотека “Security”». Для получения информации о том, как работать со «Связкой ключей», смотрите руководство разработчика “Keychain Services”. Для получения информации о настройке проекта Xcode смотрите «Руководство разработчика iOS». Для получения информации о том, какие настройки можно производить смотрите описание функции SecItemAdd в справке по “Keychain Services”.

Система

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

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

5

Page 6: Обзор Технологий iOS

возможности посредством библиотеки LibSystem. Эти интерфейсы языка C обеспечивают поддержку следующих возможностей:

работа с потоками (POSIX потоки); работа с сетью (BSD сокеты);

доступ к файловой системе;

стандартный ввод/вывод;

службы DNS и Bonjour;

информация о локализации системы;

работа с памятью;

математические вычисления.

Заголовочные файлы большей части технологий слоя ‘Core OS’ расположены в папке <iOS_SDK>/usr/include/, где <iOS_SDK> — путь к инструментарию разработки приложений, где установлен Xcode. Для получения большей информации о функциях связанных с этими технологиями смотрите справочное руководство iOS.

Слой ‘Core Services’Слой ‘Core Services’ или “Службы ядра» содержит основные системные службы, которые используются всеми приложениями. Даже если вы не используете эти службы напрямую, многие части системы построены на основе этих служб.

Высокоуровневые возможности

Следующие разделы описывают некоторые ключевые технологии доступные в слове “Core Services”.

Объекты блоков

Представленные в iOS 4.0, объекты блоков — это конструкции языка C, которые можно включать в программный код на языке C или Objective-C. Объект блока по существу является анонимной функцией и данными этой функции, что в других языках иногда называют замыканиями или лямбда-выражениями. Блоки в частности полезны как функции обратного вызова или в местах, где необходимо объединить исполняемый код и связанные с ним данные.

В iOS блоки широко используются в следующих ситуациях:

в качестве замены делегатов и методов-делегатов; в качестве замены функций обратного вызова;

6

Page 7: Обзор Технологий iOS

для реализации обработчиков выполнения одноразовых операций;

для облегчения выполнения какой-либо операции над всеми элементами коллекции;

Совместно с диспетчерами очередей, для выполнения асинхронных задач.

Для знакомства с объектами блоков и их использования смотрите «Короткое практическое руководство по работе с блоками». Дополнительную информацию о блоках смотрите в «Разделах о программировании блоков».

Grand Central Dispatch

Представленная в iOS 4.0, технология Grand Central Dispatch (GCD) — это технология уровня BSD, которая используется для управления выполнением задач вашего приложения. GCD объединяет модель асинхронного программирования вместе с высоко оптимизированным ядром, чтобы обеспечить удобную (и более эффективную) альтернативу потокам. GCD также предоставляет удобную альтернативу многим типам низкоуровневых задач, таких как чтение и запись файловых дескрипторов, реализация таймеров, контроль за сигналами и событиями процессов.

Для получения большей информации о том, как использовать GCD в своих приложениях смотрите «Руководство по параллельному программированию». Для получения информации о специфических функциях GCD смотрите «Руководство по GCD».

Покупки внутри приложения

Представленная в iOS 3.0 возможность покупок внутри приложения позволяет продавать содержимое и предоставлять обслуживание внутри вашего приложения. Эта возможность реализована с использованием библиотеки “Store Kit”, которая предоставляет инфраструктуру, необходимую для обработки финансовых транзакций над iTunes идентификатором пользователя. Ваше приложение полностью управляет тем, как будут представлены для пользователя содержимое и службы, доступные для покупок.

Для получения большей информации о поддержки покупок внутри приложений, смотрите «Руководство по покупкам внутри приложения». Для получения дополнительной информации о библиотеке “Store Kit”, смотрите «Библиотека “Store Kit”».

Библиотека SQLite

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

7

Page 8: Обзор Технологий iOS

Заголовочные файлы для доступа к библиотеке SQLite расположены в папке <iOS_SDK>/usr/include/sqlite3.h, где <iOS_SDK> — путь к инструментарию разработки приложений, где установлен Xcode. Для получения дополнительной информации об использовании SQLite, посетите http://www.sqlite.org.

Поддержка XML

Библиотека «Foundation» предоставляет класс NSXMLParser для получения элементов из XML-документа. Дополнительная поддержка управления XML содержимым предоставляется библиотекой libXML2. Эта библиотека с открытым исходным кодом, которая позволяет вам быстро читать и писать различные XML данные, и преобразовывать XML содержимое в HTML.

Заголовочные файлы для доступа к библиотеке libXML2 расположены в папке <iOS_SDK>/usr/include/libxml2/, где <iOS_SDK> — путь к инструментарию разработки приложений, где установлен Xcode. Для получения дополнительной информации об использовании libXML2, посетите http://xmlsoft.org/index.html.

Библиотеки “Core Services”

Следующие разделы описывают библиотеки слоя “Core Services” и службы, которые они предлагают.

Библитека “Address Book”

Библиотека “Address Book” (AddressBook.framework) предоставляет программный доступ к контактам, сохраненным на устройстве пользователя. Если ваше приложение использует контактную информацию, вы можете использовать эту библиотеку для доступа и редактирования записей в базе данных контактов пользователя. Например, приложение для общения может использовать эту библиотеку, чтобы получить список возможных собеседников, с которыми можно начать общение и отображать этих собеседников в специальном поле.

Для получения большей информации о функциях библиотеки “Address Book”, смотрите справку «Библиотека “Address Book” для iOS».

Библиотека “CFNetwork”

Библиотека “CFNetwork” (CFNetwork.framework) это набор высокопроизводительных интерфейсов языка C, которые используют объектно-ориентированный подход для работы с сетевыми протоколами. Это позволяет осуществлять детальное управление над стеком протоколов и облегчает использование низкоуровневых конструкций таких как BSD-сокеты. Вы можете использовать эту библиотеку для облегчения таких задач, как связь с FTP и HTTP серверами или для определения DNS имен узлов. Используя библиотеку “CFNetwork” вы можете:

использовать BSD сокеты; создавать шифрованные соединения, используя SSL или TLS;

8

Page 9: Обзор Технологий iOS

определять DNS имена узлов;

работать с HTTP серверами, HTTP серверами с аутентификацией и HTTPS серверами;

работать с FTP серверами

публиковать, разрешать и просматривать Bonjour-сервисы.

Библиотека “CFNetwork” основана теоретически и физически на на BSD-сокетах. Для получения информации о том, как использовать библиотеку, смотрите «Руководство программирования с использованием “CFNetwork”» и справку по «Библиотеке “ CFNetwork ”».

Библиотека “Core Data”

Представленная в iOS 3.0 библиотека “Core Data” (CoreData.framework) — это технология для управления моделью данных в приложениях MVC. Библиотека предназначена для использования в приложениях, в которых модель данных уже высоко структурирована. Вместо определения структур данных программно, используется графический инструмент Xcode для построения схемы представления вашей модели данных. Во время выполнения, экземпляры элементов модели данных создаются, управляются и становятся доступными посредством библиотеки “Core Data”.

Управляя моделью данных вашего приложения, библиотека существенно сокращает количество кода, которое вам необходимо написать. Библиотека “Core Data” также предоставляет следующие возможности:

хранение данных объектов в базе данных SQLite для оптимальной производительности;

класс NSFetchedResultsController для управления результатами в полях-таблицах;

управление отменой/повтором при редактировании обычного текста;

поддержка проверки значений свойств;

поддержка передачи изменений и обеспечение согласованных связей между объектами;

поддержка группировки, фильтрации и организации данных в памяти.

Если вы начинаете разрабатывать новое приложение или планируете значительное изменение существующего приложения, то вам следует подумать об использовании библиотеки “Core Data”. Пример использования библиотеки в iOS приложении, смотрите «Учебник для iOS по “Core Data”». Для получения большей информации о классах библиотеки “Core Data”, смотрите справку «Библиотека “Core Data”».

9

Page 10: Обзор Технологий iOS

Библиотека “Core Foundation”

Библиотека “Core Foundation” (CoreFoundation.framework) — это набор интерфейсов языка C, которые предоставляют основное управление данными и служебные возможности iOS приложения. Эта библиотека включает поддержку следующих возможностей:

типы данных коллекций (массивы, множества и другие); звязки (Bundles);

управление строковыми данными;

работа с датой и временем;

управление блоками «сырых» данных;

управление настройками приложения;

работа с потоками и URL-адресами;

потоки и циклы выполнения;

обмен информацией посредством портов и сокетов.

Библиотека “Core Foundation” сильно связана с библиотекой “Foundation”, которая предоставляет интерфейсы языка Objective-C для осуществления тех же самых операций. Когда вам необходимо использовать объекты сразу двух этих библиотек, вы можете пользоваться преимуществами «бесплатного перекрывания», которое существует между двумя библиотеками. Это означает, что типы в методах и функциях библиотек “Core Foundation” и “Foundation” взаимозаменяемые. Эта поддержка доступна для многих других типов данных, включая коллекции и строковые типы данных. В описании классов и типов каждой из библиотек указывается: является ли объект «бесплатным перекрыванием», и если да, то с каким объектом он связан.

Для получения дополнительной информации об использовании этой библиотеки, смотрите справку «Библиотека “Core Foundation”».

Библиотека “Core Location”

Библиотека “Core Location” (CoreLocation.framework) предоставляет приложениям информацию о местоположении и направлении. Для получения информации о местоположении, библиотека использует встроенный датчик GPS, сотовую сеть или Wi-Fi сети для определения долготы и широты, в которых находится пользователь. Вы можете включить это технологию в свои приложения для предоставления пользователю информации о местонахождении. Например, вы разрабатываете службу, которая ищет близлежащие рестораны, магазины или сооружения, основываясь на текущем положении пользователя.

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

10

Page 11: Обзор Технологий iOS

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

Для получения информации о том, как использовать библиотеку для сбора данных о направлении и местоположении, смотрите «Руководство программирования с учетом местоположения».

Библиотека “Core Media”

Представленная в iOS 4.0 библиотека “Core Media” (CoreMedia.framework) предлагает низкоуровневые медиа-типы, используемые в библиотеке “AV Foundation”. Большинство приложений никогда не используют эту библиотеку, но она предоставляет разработчикам более точное управление над созданием и воспроизведением аудио/видео данных.

Для дополнительной информации о функциях и типах данных этой библиотеки читайте справку «Библиотека “Core Media”».

Библиотека “Core Telephony”

Представленная в iOS 4.0 библиотека “Core Telephony” (CoreTelephony.framework) предлагает интерфейсы с телефонной информацией, в устройствах с поддержкой сотовой связи. Приложения могут использовать эту библиотеку для получения информации о сотовом операторе пользователя. Приложения, которым необходимо знать о телефонных вызовах (таким как приложениям VoIP), могут быть предупреждены, когда происходят такие события.

Для получения дополнительной информации об использовании классов и методов этой библиотеки, смотрите справку «Библиотека “Core Telephony”».

Библиотека “Event Kit”

Представленная в iOS 4.0 библиотека “Event Kit” (EventKit.framework) предоставляет интерфейс для доступа к событиям календаря устройства пользователя. Вы можете использовать эту библиотеку для получения существующих событий и добавления новых событий в календарь пользователя. События календаря могут включать звуковые предупреждения, которые можно настраивать, когда они будут срабатывать.

Для получения дополнительной информации о классах и методах этой библиотеки, смотрите справку «Библиотека “Event Kit”».

Библиотека “Foundation”

Библиотека “Foundation” (Foundation.framework) предоставляет обертки на языке Objective-C к различным возможностям библиотеки “Core Foundation”, которые описаны в разделе «Библиотека “ Core Foundation ”» . Эта библиотека предоставляет следующие возможности:

типы данных коллекций (массивы, множества и другие);11

Page 12: Обзор Технологий iOS

звязки (Bundles);

управление строковыми данными;

работа с датой и временем;

управление блоками «сырых» данных;

управление настройками приложения;

работа с потоками и URL-адресами;

потоки и циклы выполнения;

работа с Bonjour;

управления портами коммуникаций;

интернационализация;

поиск по регулярным выражениям;

поддержка работы с кэшем.

Для получения информации о классах библиотеки “Foundation”, смотрите справку «Библиотека “Foundation”».

Библиотека “Mobile Core Services”

Представленная в iOS 3.0 библиотека “Mobile Core Services” (MobileCoreServices.framework) описывает низкоуровненвые типы используемые в универсальных идентификаторах типов (UTIs).

Для получения дополнительной информации о типах описанных в этой библиотеке, смотрите справку «Универсальные идентификаторы типов».

Библиотека “Quick Look”

Представленная в iOS 4.0 библиотека “Quick Look” (QuickLook.framework) предоставляет прямой интерфейс для просмотра содержимого файлов, которые ваше приложение не поддерживает напрямую. Эта библиотека предназначена в первую очередь для приложений, которые скачивают файлы из сети или другого неизвестного источника. После получения файла вы используете “View Controller”, который предоставляет эта библиотека для отображения файла непосредственно в вашем пользовательском интерфейсе.

Для получения дополнительной информации о классах и методах этой библиотеки, смотрите справку «Библиотека “Quick Look”».

12

Page 13: Обзор Технологий iOS

Библиотека “Store Kit”

Представленная в iOS 3.0 библиотека “Store Kit” (StoreKit.framework) предоставляет поддержку для покупок содержимого и служб внутри вашего iOS приложения. Например, вы можете использовать эту возможность, чтобы разрешить пользователю разблокировать дополнительные возможности приложения. Или если вы разработчик игр, вы можете использовать эту возможность, чтобы предложить дополнительные игровые уровни. В обоих случаях, библиотека “Store Kit” управляет финансовыми транзакциями, при обработке платежного запроса, используя iTunes Store идентификатор, и предоставляет вашему приложению информацию о совершенной покупке.

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

Для получения информации о том, как использовать библиотеку “Store Kit”, смотрите «Руководство программирования покупок внутри приложения» и справку «Библиотека “Store Kit”».

Библиотека “System Configuration”

Библиотека “System Configuration” (SystemConfiguration.framework) предоставляет доступные интерфейсы, которые вы можете использовать, для определения настроек сети устройства. Вы можете использовать эту библиотеку для определения того, подключена Wi-Fi сеть или сотовая сеть и доступен ли определенный интернет сервер.

Для получения дополнительной информации об интерфейсах данной библиотеки, смотрите справку «Библиотека “System Configuration”». Как использовать эту библиотеку, для получения информации о сети, смотрите проект “Reachability” в примерах кода.

13

Page 14: Обзор Технологий iOS

Слой ‘Media’Слой ‘Media’ содержит технологии для работы с графическими, видео и аудио данными, необходимые для создания наилучших мультимедийных возможностей доступных на мобильном устройстве. Технологии этого слоя были спроектированы так, чтобы облегчить создание красиво смотрящихся и красиво звучащих приложений.

Графические технологии

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

Core Graphics (или Quartz) управляет отрисовкой двухмерной векторной и растровой графики;

Core Animation (одна из частей библиотеки “Quartz Core”) предоставляет дополнительную поддержку для анимации полей и других элементов;

OpenGL ES предоставляет поддержку для 2D и 3D графики используя интерфейсы аппаратного ускорения;

Core Text предоставляет возможности рисования сложного текста;

Image I/O предоставляет интерфейсы для чтения и записи большинства графических форматов;

Assets Library предоставляет доступ к фотографиям и видео пользовательской библиотеки.

Для большей части приложений, работающих на устройствах с Retina-дисплеем, изменения не требуются или требуются незначительные изменения. Любое содержимое, которое вы рисуете, автоматически масштабируется, если это необходимо, для экранов с большим разрешением. Для кода рисующего векторную графику, системная библиотека автоматически использует дополнительные пиксели, чтобы улучшить четкость выводимого содержимого. И если вы используете картинки в своем приложении, UIKit обеспечивает поддержку для загрузки вариантов с высоким разрешением для уже существующих изображений автоматически. Для получения дополнительной информации о том, что необходимо делать для того, чтобы поддерживать экраны с высоким разрешением, смотрите раздел «Поддержка экранов с высоким разрешением» в «Руководстве разработки приложений под iOS».

Для получения информации о библиотеках связанных с графикой, смотрите соответствующие разделы в статье «Библиотеки уровня “Media”».

14

Page 15: Обзор Технологий iOS

Технологии работы со звуком

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

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

Библиотека “Media Player” обеспечивает простой доступ к библиотеке iTunes пользователя и поддерживает воспроизведение музыки и списков воспроизведения.

Библиотека “AV Foundation” обеспечивает набор легких в использовании интерфейсов языка Objective-C для управления воспроизведением и записью аудиоинформации.

Библиотека OpenAL предоставляет набор кросс-платформенных интерфейсов для доставки позиционного аудио.

Библиотека “Core Audio” предлагает одновременно и простые и сложные интерфейсы для проигрывания и записи звукового содержимого. Вы можете использовать эти интерфейсы для воспроизведения системных звуков, вибро-звука устройства, и управления буферизацией и воспроизведением многоканального локального или потокового аудио-содержимого.

Аудио технологии в iOS поддерживают следующие аудио-форматы:

AAC Apple Lossless (ALAC)

A-law

IMA/ADPCM (IMA4)

Linear PCM

µ-law

DVI/Intel IMA ADPCM

Microsoft GSM 6.10

AES3-2003

15

Page 16: Обзор Технологий iOS

Для получения информации о каждой аудио библиотеке, смотрите соответствующие разделы в статье «Библиотеки уровня “Media”».

Видео технологии

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

Система предоставляет несколько способов, чтобы воспроизвести и записать видео содержимое, которые вы можете выбрать в зависимости от ваших потребностей. При выборе видео технологии, необходимо помнить, что более высокоуровневые библиотеки легки в использовании и более предпочтительны. Библиотеки в следующем списке отсортированы от высокоуровневых к низкоуровневым, включая библиотеку “Media Player” предлагающую высокоуровневые интерфейсы.

Класс UIImagePickerController в библиотеке UIKit предоставляет стандартный интерфейс для записи видео на устройствах с камерой.

Библиотека “Media Player” предоставляет набор простых в использовании интерфейсов для представления полноэкранных или частично расположенных на экране видео в вашем приложении.

Библиотека “AV Foundation” предоставляет набор интерфейсов языка Objective-C для управления съемкой и воспроизведением видео.

“Core Media” описывает низкоуровневые типы данных, которые используют высокоуровневые библиотеки, и предоставляет низкоуровневые интерфейсы для работы с медиа-данными.

Видео технологии в iOS поддерживают воспроизведение файлов с расширениями .mov, .mp4, .m4v и .3gp, и использующими следующие типы сжатий:

H.264 видео, до 1.5 Mbps, 640 * 480 пикселей, 30 кадров в секунду, Low-Complexity версия H.264 с AAC-LC аудио, до 160 Kbps, 48 kHz, стерео аудио в типах файлов .m4v, .mp4 и .mov

H.264 видео, до 768 Kbps, 320 * 240 пикселей, 30 кадров в секунду, базовый профиль уровня 1.3 с AAC-LC аудио, до 160 Kbps, 48 kHz, стерео аудио в типах файлов .m4v, .mp4 и .mov

MPEG-4 видео, до 2.5 Mbps, 640 * 480 пикселей, 30 кадров в секунду, простой профиль с AAC-LC аудио, до 160 Kbps, 48 kHz, стерео аудио в типах файлов .m4v, .mp4 и .mov

Различные аудио форматы, включая те, которые перечислены в разделе «Аудио технологии»

Для получения информации о каждой видео библиотеке слоя “Media”, смотрите соответствующий раздел в статье «Библиотеки слоя “Media”». Для получения дополнительной информации об использовании класса UIImagePickerController, смотрите статью «Программирование с использованием камеры под iOS».

16

Page 17: Обзор Технологий iOS

“AirPlay”

Технология “AirPlay” позволяет отправлять аудио на Apple TV или колонки и получатели с поддержкой технологии “AirPlay” от других фирм. Поддержка “AirPlay” встроена в библиотеку “AV Foundation” и семейство библиотек “Core Audio”. Любое аудио содержимое, которое вы проигрываете, используя эти библиотеки, автоматически имеет право распространяться по технологии “AirPlay”. Как только пользователь выбирает аудио для воспроизведения с использованием “AirPlay”, оно автоматически направляется системой.

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

Библиотеки слоя “Media”

Следующие секции описывают библиотеки слоя “Media” и службы, которые они предоставляют.

Библиотека “Assets Library”

Представленная в iOS 4.0, библиотека “Assets Library” (AssetsLibrary.framework) предоставляет основанный на запросах интерфейс для получения фотографий и видео с устройства пользователя. Используя эту библиотеку, вы можете получить доступ к тем же данным, которые обычно управляются приложением «Фотографии» (Photos), включая элементы в фотоальбоме пользователя и фотографии и видео, импортированные на устройство. Вы также можете сохранять новые фотографии и видео назад в фотоальбом пользователя.

Для получения дополнительной информации о классах и методах этой библиотеки, смотрите «Справочное руководство по библиотеке “Assets Library”».

Библиотека “AV Foundation”

Представленная в iOS 2.2, библиотека “AV Foundation” (AVFoundation.framework) содержит классы на языке Objective-C для проигрывания аудио содержимого. Вы можете использовать эти классы, чтобы проиграть звуки любой длины из файла или из памяти. Вы можете воспроизводить несколько звуков одновременно и управлять различными аспектами воспроизведения каждого звука. В iOS 3.0 и более поздних, эта библиотека также включает поддержку для записи аудио и управления информацией об аудио сессии.

В iOS 4.0 и более поздних, службы предлагаемые этой библиотекой расширены и включают также:

Управление медиа данными Редактирование медиа

Запись видео

17

Page 18: Обзор Технологий iOS

Воспроизведение видео

Отслеживание управлением

Управление метаданными медиа файлов

Стереофоническое панорамирование

Точная синхронизация между звуками

Интерфейс на языке Objective-C для определения информации о звуковых файлах, такой как формат данных, частота дискретизации и количество каналов

Библиотека “AV Foundation” это одновременно источник для записи и воспроизведения аудио и видео в iOS. Эта библиотека также предоставляет намного более сложную поддержку для управления медиа данными, чем высокоуровневые библиотеки.

Для получения дополнительной информации о классах библиотеки “AV Foundation”, смотрите «Справочное руководство по библиотеке “AV Foundation”».

”Core Audio”

Непосредственная поддержка аудио обеспечивается семейством библиотек “Core Audio”. Это интерфейсы основанные на языке C, которые поддерживают работу со стерео звуком. Вы можете использовать библиотеку “Core Audio” в iOS для того, чтобы сгенерировать, записать, смикшировать и воспроизводить аудио в своих приложениях. Вы также можете использовать эту библиотеку для того, чтобы сгенерировать вибро-сигнал на устройствах, которые это поддерживают.

Для получения дополнительной информации о библиотеке “Core Audio”, смотрите «Обзор библиотеки “Core Audio”». Для получения информации о том, как использовать библиотеку “Audio Toolbox” для того, чтобы воспроизвести звуки, смотрите «Руководство пользователя по службам аудио очередей» и «Справочное руководство по библиотеке “Audio Toolbox”».

Библиотека “Core Graphics”

Библиотека “Core Graphics” (CoreGraphics.framework) содержит интерфейсы для рисования Quartz 2D. Quartz — это такой же мощный движок, для рисования векторной графики, который используется в Mac OS X. Он обеспечивает поддержку для контурного рисования, рисования со сглаживанием, градиентов, изображений, цветов, преобразований координат, и создания, отображения и разбора PDF-документов. Несмотря на то, что программный интерфейс основан на языке C, он использует объектно-ориентированные абстракции для представления основных графических объектов, облегчая хранение и повторное использование вашего графического содержимого.

18

Page 19: Обзор Технологий iOS

Для получения дополнительной информации о том, как использовать Quartz для рисования, смотрите «Руководство разработчика по Quartz 2D» и «Справочное руководство по библиотеке “Core Graphics”».

Библиотека “Core MIDI”

Представленная в iOS 4.2, библиотека “Core MIDI” (CoreMIDI.framework) предоставляет стандартный способ для взаимодействия с MIDI-устройствами, включая аппаратные клавиатуры и синтезаторы. Вы можете использовать эту библиотеку для того, чтобы отправлять и получать сообщения от MIDI-устройств и взаимодействовать с внешним оборудованием, подключенным к устройству iOS посредством dock-станции или сети.

Для получения дополнительной информации о том, как использовать эту библиотеку, смотрите «Справочное руководство по библиотеке “Core MIDI”».

Библиотека “Core Text”

Представленная в iOS 3.2, библиотека “Core Text” (CoreText.framework) включает набор простых, высокопроизводительных интерфейсов языка C для вывода текста и работы со шрифтами. Библиотека “Core Text” предоставляет полноценный движок для отображения текста, который вы можете использовать, чтобы управлять положением текста на экране. Выводимый текст может также быть стилизован различными шрифтами и атрибутами отображения.

Эта библиотека предназначена для использования в приложениях, которым необходимы более сложные способности по управлению текстом, такие как приложения для обработки текста. Если вашему приложению требуется лишь простой ввод и отображение текста, вам следует использовать классы для работы с текстом библиотеки “UIKit”.

Для получения дополнительной информации о том, как использовать интерфейсы “Core Text”, смотрите «Руководство разработчика с использованием “Core Text”» и справочную литературу по “Core Text”.

Библиотека “Core Video”

Представленная в iOS 4.0, библиотека “Core Video” (CoreVideo.framework) предоставляет поддержку буфера и пула буферов для библиотеки “Core Media”. Большинству приложений нет необходимости в использовании этой библиотеки напрямую.

Библиотека “Image I/O”

Представленная в iOS 4.0, библиотека “Image I/O” (ImageIO.framework) предоставляет интерфейсы для импорта и экспорта изображений и их метаданных. Эта библиотека использует типы данных и функции “Core Graphics”, и поддерживает все стандартные типы изображений доступные в iOS.

19

Page 20: Обзор Технологий iOS

Для получения дополнительной информации о функциях и типах этой библиотеки, смотрите справочную литературу по “Image I/O”.

Библиотека “Media Player”

Библиотека “Media Player” (MediaPlayer.framework) предоставляет высокоуровневую поддержку для воспроизведения аудио и видео содержимого из вашего приложения. Вы можете использовать эту библиотеку для воспроизведения видео, используя стандартный системный интерфейс.

В iOS 3.0 была добавлена поддержка для доступа к пользовательской библиотеке музыки iTunes. С ее помощью, вы можете проигрывать музыкальные треки и списки воспроизведения, производить поиск песен и отображать окно для выбора музыки пользователем.

В iOS 3.2 было сделано изменение, которое позволяет проигрывать видео в области произвольного размера (ранее было доступно только полноэкранное воспроизведение). Также были добавлены различные интерфейсы для настройки и управления воспроизведением видео.

Для получения информации о классах библиотеки “Media Player”, смотрите «Справочное руководство по библиотеке “Media Player”». Для получения информации о том, как использовать эти классы для доступа к пользовательской библиотеке iTunes, смотрите «Руководство разработчика для доступа к библиотеке iPod».

Библиотека “OpenAL”

Интерфейсы “Open Audio Library” (OpenAL) — это кросс-платформенные стандарты для доставки позиционного аудио в приложения. Вы можете их использовать для того, чтобы обеспечить высокоэффективное, высококачественное аудио в игровых и других приложениях, которым необходим позиционный аудио выход. Так как OpenAL это кросс-платформенный стандарт, то код модулей, использующих эту библиотеку в iOS может быть легко портирован на другие платформы.

Для получения информации об OpenAL и ее использовании, смотрите http://www.openal.org.

Библиотека “OpenGL ES”

Библиотека “OpenGL ES” (OpenGLES.framework) предоставляет инструменты для рисования двух- и трехмерного содержимого. Это основанная на языке C библиотека, которая работает непосредственно с оборудованием устройства, чтобы обеспечить высокую скорость отображения кадров в полноэкранных игровых приложениях.

Вы всегда используете библиотеку “OpenGL” вместе с интерфейсами “EAGL”. Эти интерфейсы являются частью библиотеки “OpenGL ES” и предоставляют интерфейс между вашим кодом и нативными оконными объектами, определенными в библиотеке UIKit.

20

Page 21: Обзор Технологий iOS

В iOS 3.0 и более поздних, библиотека “OpenGL ES” включает поддержку одновременно двух версий 2.0 и 1.1 спецификаций библиотеки “OpenGL ES”. Спецификация версии 2.0 обеспечивает поддержку пиксельных и вершинных шейдеров и доступна только в iOS -устройствах с версией 3.0 и более поздних. Поддержка версии 1.1 доступна во всех iOS-устройствах всех версий iOS.

Для получения информации о том, как использовать “OpenGL ES” в своих приложениях, смотрите «Руководство разработчика “OpenGL ES” для iOS». Для справочной информации, смотрите справочное руководство по библиотеке “OpenGL ES”.

Библиотека “Quartz Core”

Библиотека “Quartz Core” (QuartzCore.framework) содержит интерфейсы “Core Animation”. “Core Animation” — это технология продвинутой анимации и комбинирования, которая использует оптимизированную прорисовку для реализации сложной анимации и визуальных эффектов. Она предоставляет высокоуровневые интерфейсы языка Objective-C для настройки анимации и эффектов, которые потом рисуются оборудованием для лучшего быстродействия. “Core Animation” интегрирована во многие части iOS, включая классы UIKit такие как UIView, обеспечивая анимацию для различных стандартных действий системы. Вы также можете использовать интерфейсы языка Objective-C этой библиотеки, для создания собственной анимации.

Для получения дополнительной информации о том, как использовать “Core Animation” в своих приложениях, смотрите «Руководство разработчика “Core Animation”» и справочную литературу по “Core Animation”.

Слой ‘Cocoa Touch’Слой ‘Cocoa Touch’ содержит ключевые библиотеки для создания iOS приложений. В этом слое описываются базовые конструкции приложения и поддержка ключевых технологий, таких как многозадачность, ввод данных основанный на жестах, push-уведомления и многие высокоуровневые системные службы. При разработке своих приложений, вы должны исследовать технологии этого уровня в первую очередь, чтобы убедиться могут ли они удовлетворить ваши потребности.

Высокоуровневые возможности

Следующие разделы описывают некоторые ключевые технологии доступные в слое “Cocoa Touch”.

Многозадачность

Приложения, созданные с использованием iOS SDK 4.0 или более поздней версии (и запускаемые на iOS 4.0 и более поздних версиях), не завершаются, когда пользователь нажимает клавишу «Главный экран» (Home); вместо этого, они переходят в контекст фонового выполнения. Поддержка многозадачности, описанная в UIKit, позволяет вашему приложению плавно переходить из и в фоновое состояние.

21

Page 22: Обзор Технологий iOS

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

Приложение может запросить ограниченное количество времени для завершения какой-то важной задачи.

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

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

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

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

Печать

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

Запросы печати, отправленные вашим приложением, передаются системе печати, которая управляет фактическими печатными процессами. Запросы на печать от всех приложений устройства ставятся в очередь и выполняются по принципу «первым пришел, первым обработан». Пользователи могут получить состояние запроса на печать из приложения «Центр печати» (Print Center) и могут использовать это приложение даже для того, чтобы отменить печать. Все другие аспекты печати управляются системой автоматически.

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

22

Page 23: Обзор Технологий iOS

Для получения информации о том, как добавить поддержку печати в ваши приложения, смотрите раздел «Печать» в статье «Рисование» и «Руководство печати в iOS».

Защита данных

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

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

Для получения дополнительной информации о том, как добавить защиту данных к файлам вашего приложения, смотрите «Реализация стандартного поведения приложения» в «Руководстве разработчика приложений под iOS».

Служба push-уведомлений Apple

Представленная в iOS 3.0, служба push-уведомлений предоставляет способ предупредить пользователей о получении новой информации, даже если ваше приложение сейчас не активно. Используя эту службу, вы можете отправить текстовые уведомления, добавить красный значок к иконке приложения или генерировать звуковые сигналы на устройстве пользователя в любое время. Эти сообщения позволяют пользователям узнавать, что им следует открыть приложение, чтобы получить определенную информацию.

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

Для получения дополнительной информации о том, как настроить приложение для использования удаленных уведомлений, смотрите «Руководство разработчика локальных и push-уведомлений».

Локальные уведомления

Представленные в iOS 4.0, локальные уведомления дополняются существующий механизм push-уведомлений, предоставляя приложениям возможность генерации

23

Page 24: Обзор Технологий iOS

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

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

Для получения дополнительной информации об использовании локальных уведомлений, смотрите «Руководство разработчика локальных и push-уведомлений».

Распознаватели жестов

Представленные в iOS 3.2, распознаватели жестов — это объекты, которые вы можете присоединять к окнам приложения и использовать для определения стандартных жестов таких как «смахивание» и «сжатие». После присоединения распознавателя жестов к окну приложения, вы сообщаете ему какое действие необходимо совершить, когда жест распознается. Объект распознавателя жестов отслеживает необработанное событие прикосновения и применяет определенные в системе эвристики, для определения, что это за жест. Без распознавателей жестов, вы должны проделывать всю эту работу самостоятельно, что может быть несколько затруднительно.

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

Касание (одно или несколько касаний) Сжатие и растяжение (для масштабирования)

Панорамирование или перетаскивание

Смахивание (в любом направлении)

Вращение (пальцы двигаются в разных направлениях)

Длительное нажатие

Для получения дополнительной информации о доступных распознавателях жестов, смотрите «Руководство обработки событий в iOS».

24

Page 25: Обзор Технологий iOS

Поддержка обмена файлами

Представленная в iOS 3.2, поддержка обмена файлами позволяет приложениям делать пользовательские файлы с данными доступными в iTunes 9.1 и более поздних версиях. Приложение, которое декларирует поддержку обмена файлами, делает содержимое своей директории /Documents доступным пользователю. Пользователь может перемещать файлы в эту директорию и из нее при необходимости, используя iTunes. Эта возможность не разрешает вашему приложению обмениваться файлами с другими приложениями на одном и том же устройстве; это поведение требует «обменник» или объект для управления взаимодействием документов.

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

1. Добавьте секцию UIFileSharingEnabled в файл Info.plist вашего приложения и установите значение этой секции в YES.

2. Файлы, которые вы хотите обменивать сохраняйте в директории Documents вашего приложения.

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

4. Пользователь может добавить файлы в эту директорию или переместить их к себе на компьютер.

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

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

Службы Peer-to-Peer

Представленная в iOS 3.0, библиотека “Game Kit” предоставляет возможность peer-to-peer подключения через Bluetooth. Вы можете использовать peer-to-peer соединения для установки связи с ближайшими устройствами и реализовывать возможности многопользовательских игр. Хотя в первую очередь эта возможность используется в играх, вы можете также использовать ее и в приложениях других типов.

Для получения информации о том, как использовать возможности peer-to-peer соединения в вашем приложении, смотрите «Руководство разработчика “Game Kit”». Для обзора возможностей библиотеки “Game Kit”, смотрите раздел «Библиотека “Game Kit”».

25

Page 26: Обзор Технологий iOS

Стандартные системные контроллеры представлений (View Controllers)

Большинство библиотек слоя “Cocoa Touch” содержат контроллеры представлений для стандартных системных интерфейсов. Вам следует использовать эти контроллеры представлений в своих приложениях для того, чтобы сделать согласованный пользовательский интерфейс. Всегда когда необходимо осуществить одну из следующих задач, вам следует использовать контроллер представления из соответствующей библиотеки:

Отображение или редактирование контактной информации — используйте контроллер представления библиотеки “Address Book UI”.

Создание или редактирование событий календаря — используйте контроллер представления библиотеки “Event Kit UI”.

Написание email или SMS сообщения — используйте контроллер представления библиотеки “Message UI”.

Открытие или предпросмотр содержимого файла — используйте класс UIDocumentInteractionController библиотеки “UIKit”.

Сделать фотографию или выбрать фото из пользовательской библиотеки фотографий — используйте класс UIImagePickerController библиотеки “UIKit”.

Снять видео ролик — используйте класс UIImagePickerController библиотеки “UIKit”.

Для получения информации о том, как отобразить или спрятать контроллеры представлений, смотрите «Руководство разработчика контроллеров представлений для iOS». Для получения информации о интерфейсах определенных контроллеров представлений, смотрите соответствующую справку по библиотекам.

Поддержка внешнего экрана

Представленная в iOS 3.2, поддержка внешнего экрана позволяет некоторым iOS-устройствам быть подключенным к внешнему экрану через набор поддерживаемых кабелей. Когда устройство подключено, связанный с ним дисплей может быть использован приложением для того, чтобы отобразить содержимое. Информация о дисплее, включая поддерживаемые разрешения, доступны через интерфейсы библиотеки “UIKit”. Вы также можете использовать эти интерфейсы, чтобы связать окна вашего приложения с одним или другим дисплеем.

Для получения информации о том, как подключить и отобразить содержимое на внешнем экране, смотрите «Руководство разработчика для представления информации в iOS».

26

Page 27: Обзор Технологий iOS

Библиотеки слоя ‘Cocoa Touch’

Следующие разделы описывают библиотеки слоя “Cocoa Touch” и службы, которые они предлагают.

Библиотека “Address Book UI”

Библиотека “Address Book UI” — это программный интерфейс на языке Objective-C, который вы используете для отображения стандартных системных элементов для создания новых контактов и для редактирования или выбора существующих контактов. Эта библиотека упрощает работу, которую необходимо проделать для того, чтобы отобразить контактную информацию в вашем приложении, и также гарантирует, что ваше приложение использует те же интерфейсы, что и другие приложения, обеспечивая согласованность между платформами.

Для получения дополнительной информации о классах библиотеки “Address Book UI” и о том, как их использовать, смотрите «Руководство разработчика “Address Book” для iOS» и справочное руководство iOS по библиотеке “Address Book UI”».

Библиотека “Event Kit UI”

Представленная в iOS 4.0, библиотека “Event Kit UI” (EventKitUI.framework) предоставляет контроллеры представлений для отображения стандартных системных интерфейсов для просмотра и редактирования событий, связанных с календарем. Эта библиотека построена на данных связанных с событиями библиотеки “Event Kit”, которые описаны в статье «Библиотека “Event Kit”».

Для получения дополнительной информации о классах и методах этой библиотеки, смотрите справочное руководство по библиотеке “Event Kit UI”.

Библиотека “Game Kit”

Представленная в iOS 3.0, библиотека “Game Kit” (GameKit.framework) позволяет вам добавлять сетевые возможности peer-to-peer в свои приложения. В частности, эта библиотека обеспечивает поддержку peer-to-peer соединения и внутриигровые голосовые возможности. Хотя эти возможности широко распространены в многопользовательских сетевых играх, вы также можете встроить их в приложения отличные от игровых. Эта библиотека обеспечивает сетевые возможности посредством простого (но мощного) набора классов основанных на протоколе Bonjour. Эти классы абстрагируют многие сетевые детали. Для разработчиков, которые не имеют большого опыта в сетевом программировании, библиотека позволяет встраивать сетевые возможности в свои приложения.

Представленное в iOS 4.1, приложение «Игровой центр» — это расширение библиотеки “Game Kit”, которое предоставляет поддержку следующих возможностей:

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

27

Page 28: Обзор Технологий iOS

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

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

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

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

Для получения дополнительной информации о том, как использовать библиотеку “Game Kit”, смотрите «Руководство разработчика “Game Kit”» и справочное руководство по библиотеке “Game Kit”.

Библиотека “iAd”

Представленная в iOS 4.0, библиотека “iAd” (iAd.framework) позволяет вам показывать основанную на баннерах рекламу внутри вашего приложения. Реклама встраивается внутрь стандартных окон, которые вы помещаете в пользовательский интерфейс, и отображается, когда вы захотите. Сами окна работают со службой рекламы от Apple, чтобы автоматически совершать всю работу, связанную с загрузкой и отображением рекламного содержимого, и реакцией на нажатия на эти баннеры.

Для получения дополнительной информации об использовании “iAd” внутри вашего приложения, смотрите «Руководство разработчика “iAd”».

Библиотека “Map Kit”

Представленная в iOS 3.0, библиотека “Map Kit” (MapKit.framework) предоставляет прокручиваемый интерфейс с картой, который вы можете встроить в существующую иерархию окон. Вы можете использовать эту карту, чтобы предоставить направление или подсветить достопримечательности. Приложения могут программно задавать атрибуты карте или позволить пользователю управлять картой по своему усмотрению. Вы можете снабжать примечаниями карту, собственными рисунками или другим содержимым.

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

28

Page 29: Обзор Технологий iOS

Для получения дополнительной информации об использовании классов библиотеки “Map Kit”, смотрите «Руководство разработчика о местоположении».

Библиотека “Message UI”

Представленная в iOS 3.0, библиотека “Message UI” (MessageUI.framework) предоставляет поддержку для написания email-сообщений и помещения их в очередь в пользовательский ящик исходящих сообщений. Поддержка написания состоит из интерфейса, основанного на контроллере представлений, который вы отображаете в своем приложении. Вы можете заранее заполнить некоторые поля этого контроллера, указав получателя, тему, тело содержимого и некоторые вложения, которые вы хотите включить в это сообщение. После отображения контроллера представления, пользователю предоставляется возможность редактирования сообщения перед его отправкой.

В iOS 4.0 и более поздних версиях, эта библиотека предоставляет контроллер представления, который отображает окно для написания SMS-сообщения. Вы можете использовать этот контроллер для создания и редактирования SMS-сообщений, не покидая ваше приложение. Также как и в интерфейсе написания email-сообщений, этот интерфейс дает пользователю возможность для редактирования сообщения перед его отправкой.

Для получения дополнительной информации о классах библиотеки “Message UI”, смотрите справочное руководство по библиотеке “Message UI”.

Библиотека “UIKit”

Библиотека “UIKit” (UIKit.framework) обеспечивает ключевую инфраструктуру для реализации графических, основанных на событиях iOS-приложений. Каждое iOS-приложение использует эту библиотеку для реализации следующих центральных возможностей:

Управление приложением Управление интерфейсом пользователя

Поддержка графики и окон

Поддержка многозадачности (смотрите раздел «Многозадачность»)

Поддержка печати (смотрите раздел «Печать»)

Поддержка обработки событий касаний и жестов

Объекты для отображения стандартных системных окон и элементов управления

Поддержка текстового и web-содержимого

Поддержка «Вырезки», «Копирования» и «Вставки»

29

Page 30: Обзор Технологий iOS

Поддержка анимации содержимого интерфейса пользователя

Интеграция с другими приложениями системы посредством URL-схем

Поддержка службы push-уведомлений Apple (смотрите «Служба push-уведомлений Apple)

Поддержка дополнительных возможностей для пользователей с ограниченными возможностями

Планировка и доставка локальных уведомлений (смотрите «Локальные уведомления»)

Создание PDF-документов

Поддержка особых окон ввода информации, которые работают как системная клавиатура

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

В дополнение к обеспечению основным кодом для создания приложения, библиотека “UIKit” также встраивает поддержку для некоторых возможностей специфичных для устройства, таких как:

Данные акселерометра Встроенная камера (на устройствах, где она присутствует)

Пользовательская библиотека фотографий

Информация об имени и модели устройства

Информация о состоянии батареи

Информация о датчике близости

Информация об удаленном управлении с присоединенной гарнитуры

Для получения информации о классах библиотеки “UIKit”, смотрите справочное руководство по библиотеке “UIKit”.

Инструменты разработчика iOSДля разработки приложений под iOS, вам необходимо иметь компьютер Macintosh с процессором Intel и инструменты Xcode. Xcode — это комплект инструментов разработки компании Apple, которые поддерживают управление проектом, редактирование кода, создание исполняемых файлов, отладка программного кода, хранилище управления исходным кодом, средства настройки производительности и многое другое. Центральное место занимает само приложение Xcode, которое

30

Page 31: Обзор Технологий iOS

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

Xcode

Центральное место для разработки — это среда Xcode. Xcode — это интегрированная среда разработки (IDE), которая обеспечивает вас всеми необходимыми инструментами для создания и управления ваших iOS-проектов и исходных файлов, сборку кода в исполняемый файл, запуск и отладку вашего кода как в iOS-эмуляторе, так и на реальном устройстве. Xcode включает большое число возможностей, чтобы облегчить разработки iOS-приложений, включая следующие:

Систему управления проектом для определения программных продуктов Среду для редактирования кода, включающую возможности подсветки

синтаксиса, автозавершения кода и индексацию символов

Продвинутую программу просмотра и поиска документации Apple

Контекстно-зависимый инспектор для просмотра информации о выделенном в коде символе

Продвинутая система сборки проекта с проверкой зависимостей и проверкой правил сборки

Компиляторы GCC, поддерживающие языки C, C++, Objective-C, Objective-C++ и другие

Поддержка LLVM и Clang для языков C, C++ и Objective-C

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

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

Интеллектуальная компиляция, ускоряющая время компиляции одного файла

Продвинутые возможности по отладке кода, такие как починка и продолжение исполнения, и компоновщики данных пользователя

Продвинутые средства отладки, позволяющие вам делать глобальные изменения в коде без изменения его поведения

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

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

Поддержка встроенной системы управления исходным кодом

31

Page 32: Обзор Технологий iOS

Поддержка AppleScript, для автоматизации процесса сборки

Поддержка отладочной информации в форматах DWARF и Stabs (отладочная информация для всех проектов по умолчанию генерируется в формате DWARF)

Создание нового iOS-приложения, начинается с создания нового проекта Xcode. Проект управляет всей информацией, связанной с вашим приложением, включая файлы ресурсов, встроенные настройки и правила, необходимые для того, чтобы разместить все части приложения вместе. Сердце каждого проекта Xcode — это окно проекта, показанное на рисунке A-1. Это окно предоставляет быстрый доступ ко всем ключевым элементам вашего приложения. В списке «Группы и файлы» вы управляете файлами вашего проекта, включая исходные файлы и цели сборок, которые создаются из исходных этих файлов. На панели инструментов вам доступны часто используемые инструменты и команды. На панели деталей вы можете настроить рабочее пространство вашего проекта. Другие элементы окна проекта предоставляют контекстуальную информацию о вашем проекте.

Рисунок A-1  Окно проекта Xcode

Когда вы собираете ваше приложение в Xcode, у вас есть выбор: собирать его для iOS-эмулятора или для реального устройства. Эмулятор предоставляет локальную среду для тестирования ваших приложений, чтобы удостовериться, что они ведут себя именно так, как вы хотели. После того, как вы удовлетворены базовым поведением вашего приложения, вы можете настроить Xcode для сборки и запуска вашего приложения на реальном iOS-устройстве подключенному к вашему компьютеру. Запуск вашего приложения на реальном устройстве предоставляет окончательную среду для тестирования, и Xcode позволяет вам присоединить встроенный отладчик к коду, запущенному на устройстве.

Рисунок A-2  Запуск проекта в Xcode

32

Page 33: Обзор Технологий iOS

Подробности о том, как собирать и запускать ваш проект на iOS, смотрите «Руководство разработчика iOS». Для получения дополнительной информации об среде Xcode вообще, смотрите «Экскурсия по среде Xcode».

Interface Builder

Interface Builder — это инструмент, используемый для визуального создания пользовательского интерфейса вашего приложения. Используя Interface Builder, вы можете создавать окно вашего приложения путем перетаскивания в него предварительно настроенных компонентов, как показано на рисунке A-3. Компоненты включают стандартные системные элементы управления, такие как переключатели, текстовые поля, кнопки и различные представления для отображения поставщиков представлений вашего приложения. После того как вы поместили компоненты на поверхность окна, вы можете позиционировать их перетаскивая по всей величине окна, настраивать их атрибуты используя инспектор и устанавливать связи между этими объектами и вашим кодом. Когда ваш интерфейс выглядит так, как вы этого хотите, вы сохраняете содержимое в nib-файл, который является ресурсным файлом особого формата.

Рисунок A-3  Создание iOS-интерфейсов с использованием Interface Builder

33

Page 34: Обзор Технологий iOS

Создаваемый в Interface Builder nib-файл содержит всю информацию, которая требуется библиотеке “UIKit” для создания тех же самых объектов в вашем приложении во время выполнения. Загрузка nib-файла создает версии времени выполнения всех объектов, сохраненных в файле, настраивает их в точности, какими они были в Interface Builder. Также используется информация о взаимосвязи, указанная вами для установки связи между заново созданными объектами и уже существующими в вашем приложении. Эти связи обеспечивают ваш код указателями на объекты nib-файла, а также предоставляют информацию самим объектам, необходимую для передачи действий пользователя вашему коду.

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

Для получения дополнительной информации об использовании Interface Builder, смотрите «Руководство пользователя Interface Builder».

«Инструменты»

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

Рисунок A-4  Использование среды «Инструменты», для настройки вашего приложения

34

Page 35: Обзор Технологий iOS

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

Для получения деталей использования среды «Инструменты» с iOS-приложениями, смотрите «Руководство разработчика iOS». Для получения общей информации о том, как использовать среду «Инструменты», смотрите «Руководство пользователя среды «Инструменты».

35