Ожидаемые способы поведения приложения

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

Обеспечение требуемых ресурсов

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

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

Комплект приложений

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

Таблица 1-1  пакет типового приложения

Файл

Пример

Описание

Исполнимая программа приложения

MyApp

Исполняемый файл содержит скомпилированный код Вашего приложения. Имя исполняемого файла Вашего приложения совпадает с Вашим именем приложения минус .app расширение.

Этот файл требуется.

Информационный файл списка свойств

Info.plist

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

Этого файла требуют и нужно вызвать Info.plist. Для получения дополнительной информации посмотрите информационный Файл Списка свойств.

Значки приложения

Icon.png

Icon@2x.png

Icon-Small.png

Icon-Small@2x.png

Ваш значок приложения используется для представления приложения на домашнем экране устройства. Другие значки используются системой в надлежащих местах. Значки с @2x в их имени файла предназначаются для устройств с дисплеями Сетчатки.

Значок приложения требуется. Для получения информации об указании файлов образа значка посмотрите значки приложения.

Изображения запуска

Default.png

Default-Portrait.png

Default-Landscape.png

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

По крайней мере одно изображение запуска требуется. Для получения информации об указании изображений запуска посмотрите Запуск Приложения Изображения (По умолчанию).

Файлы раскадровки (или файлы пера)

MainBoard.storyboard

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

Имя основного файла раскадровки определяется XCode при создании проекта. Можно изменить имя путем присвоения различного значения UIMainStoryboardFile ключ Info.plist файл.) Приложения, использующие файлы пера вместо раскадровок, могут заменить UIMainStoryboardFile ключ с NSMainNibFile ключ и использование, что ключ для указания их основного файла пера.

Использование раскадровок (или файлы пера) является дополнительным, но рекомендовано.

Оперативный значок распределения

iTunesArtwork

Если Вы распределяете свое приложение оперативно, включаете версию на 512 x 512 пикселей Вашего значка приложения. Этот значок обычно предоставлен App Store от материалов, которые Вы представляете Подключению iTunes. Однако, потому что приложения распределили, оперативно не проходят через App Store, Ваш значок должен присутствовать в Вашем комплекте приложений вместо этого. iTunes использует этот значок для представления приложения. (Файл, который Вы указываете, должен быть тем же самым, Вы подчинились бы App Store, если Вы распределяли свое приложение тот путь.)

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

Пакет настроек

Settings.bundle

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

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

Нелокализованные файлы ресурсов

sun.png

mydata.plist

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

Подкаталоги для локализованных ресурсов

en.lproj

fr.lproj

es.lproj

Локализованные ресурсы должны быть помещены в специфичные для языка каталоги проекта, имена, для которых состоят из ISO сокращение языка 639-1 плюс .lproj суффикс. (Например, en.lproj, fr.lproj, и es.lproj каталоги содержат ресурсы, локализованные для английского, французского и испанского языка.)

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

Для получения дополнительной информации посмотрите Интернационализацию Вашего Приложения.

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

Информационный файл списка свойств

XCode использует информацию от Генерала, Возможностей и Информационных вкладок Вашего проекта генерировать информационный список свойств (Info.plist) файл для Вашего приложения во время компиляции. Info.plist файл является структурированным файлом, содержащим критическую информацию о конфигурации Вашего приложения. Это используется App Store и iOS, чтобы определить возможности Вашего приложения и определить местоположение ключевых ресурсов. Каждое приложение должно включать этот файл.

Несмотря на то, что Info.plist файл, предоставленный XCode, включает значения по умолчанию для всех требуемых записей, большинство приложений требует некоторых изменений или дополнений. Каждый раз, когда возможно, используйте Общие вкладки и вкладки Возможностей для указания конфигурационной информации для приложения. Те вкладки содержат наиболее распространенные параметры конфигурации, доступные для приложений. Если Вы не видите определенную опцию ни на одной из тех вкладок, используйте вкладку Info.

Для опций, где XCode не обеспечивает интерфейс пользовательской конфигурации, необходимо обеспечить надлежащие ключи и значения. Пользовательский раздел Target Properties iOS вкладки Info содержит сводку записей, которые будут включены в Info.plist файл. По умолчанию XCode выводит на экран человекочитаемые описания намеченной функции, но каждая функция фактически соответствует уникальному ключу в Info.plist файл. Большинство ключей является дополнительным и используется нечасто, но существует ряд ключей, которые необходимо рассмотреть при определении любого нового проекта:

  • Объявите требуемые возможности своего приложения на вкладке Info. Раздел возможностей Выбранного устройства содержит информацию о функциях уровня устройств, которых Ваше приложение требует для выполнения. App Store использует информацию в этой записи, чтобы определить возможности Вашего приложения и препятствовать тому, чтобы он был установлен на устройствах, не делающих функций поддержки, которых требует Ваше приложение. Для получения дополнительной информации посмотрите Объявление Возможностей Выбранного устройства.

  • Приложения, требующие персистентного соединения Wi-Fi, должны объявить тот факт. Если Ваше приложение говорит с сервером по сети, можно добавить, что Приложение использует запись Wi-Fi во вкладку Info проекта. Эта запись соответствует UIRequiresPersistentWiFi ключ Info.plist файл. Устанавливание этого ключа к YES препятствует тому, чтобы iOS закрыл активное соединение Wi-Fi, когда это было неактивно в течение длительного периода времени. Этот ключ рекомендуется для всех приложений, использующих сеть для передачи с сервером.

  • Приложения киоска должны объявить себя как таковой. Включайте UINewsstandApp ключ, чтобы указать, что Ваше приложение представляет содержание из приложения Киоска.

  • Приложения, определяющие пользовательские типы документов, должны объявить те типы. Используйте раздел Document Types вкладки Info для указания значков и информации UTI для форматов документов, которые Вы поддерживаете. Система использует эту информацию для идентификации приложений, способных к обработке определенных типов файлов. Для получения дополнительной информации о добавляющей поддержке документа Вашему приложению, см. Основанное на документе Руководство по программированию Приложения для iOS.

  • Приложения могут объявить любые пользовательские схемы URL, которые они поддерживают. Используйте раздел URL Types вкладки Info для указания пользовательских схем URL, которые обрабатывает приложение. Приложения могут использовать пользовательские схемы URL связаться друг с другом. Для получения дополнительной информации о том, как реализовать поддержку этой функции, посмотрите Используя Схемы URL Связаться с Приложениями.

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

Для получения дальнейшей информации о ключах и значениях можно включать в Info.plist файл, посмотрите информационную Ключевую Ссылку Списка свойств.

Объявление возможностей выбранного устройства

Все приложения должны объявить специфичные для устройства возможности, которые они должны выполнить. XCode включает запись возможностей Выбранного устройства во вкладку Info Вашего проекта и заполняет ее с некоторыми минимальными требованиями. Вы можете добавленные стоимости к этой записи для указания дополнительных требований для приложения. Запись возможностей Выбранного устройства соответствует UIRequiredDeviceCapabilities введите свое приложение Info.plist файл.

Значение UIRequiredDeviceCapabilities ключ является или массивом или словарем, содержащим дополнительные ключевые функции идентификации, которых Ваше приложение требует (или в частности запрещает). При указании значения ключа с помощью массива присутствие ключа указывает, что требуется функция; отсутствие ключа указывает, что функция не требуется и что приложение может работать без него. При указании словаря вместо этого, каждый ключ в словаре должен иметь булево значение, указывающее, требуется ли функция или запрещается. Значение true указывает, что функция требуется и значение false указывает, что функция не должна присутствовать на устройстве. Если данная возможность является дополнительной для Вашего приложения, не включайте соответствующий ключ в словаре.

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

Значки приложения

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

Новые проекты XCode включают записи актива изображения для изображений значка Вашего приложения. Для добавления значков присвойте соответствующие файлы образа активам изображения проекта. Во время изготовления XCode добавляет надлежащие ключи к Вашему приложению Info.plist файл и места изображения в Вашем комплекте приложений.

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

Запуск приложения изображения (по умолчанию)

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

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

Новые проекты XCode включают записи актива изображения для изображений запуска Вашего приложения. Для добавления изображений запуска добавьте соответствующие файлы образа к активам изображения проекта. Во время изготовления XCode добавляет надлежащие ключи к Вашему приложению Info.plist файл и места изображения в Вашем комплекте приложений.

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

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

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

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

Таблица 1-2 перечисляет типы полномочий данных, поддерживаемых iOS. Используя службы, перечисленные в этой таблице, заставляет предупреждение быть выведенным на экран пользователю, запрашивающему разрешение сделать так. Можно определить, авторизовал ли пользователь приложение для службы с помощью API, перечисленного для каждого элемента. Необходимо просмотреть эту таблицу как начальную точку для собственных способов поведения конфиденциальности приложения и не как конечный контрольный список. Содержание этой таблицы может развиваться в течение долгого времени.

Табличные 1-2  Данные защищены системными настройками авторизации

Данные

Системная поддержка авторизации

Расположение

Текущее состояние авторизации для данных расположения доступно от authorizationStatus метод класса CLLocationManager. В запросе авторизации в iOS 8 и позже, необходимо использовать requestWhenInUseAuthorization или requestAlwaysAuthorization метод и включает NSLocationWhenInUseUsageDescription или NSLocationAlwaysUsageDescription ключ в Вашем Info.plist файл для указания уровня авторизации Вы требуете.

Фотографии

Состояние авторизации для фото данных доступно от authorizationStatus метод ALAssetsLibrary. Для информирования пользователя о том, как Вы намереваетесь использовать эту информацию включайте NSPhotoLibraryUsageDescription ключ в Вашем Info.plist файл.

Музыка, видео и другие активы носителей

Состояние авторизации для активов носителей доступно от authorizationStatus метод ALAssetsLibrary.

Контакты

Состояние авторизации для контактных данных доступно от ABAddressBookGetAuthorizationStatus функция. Для информирования пользователя о том, как Вы намереваетесь использовать эту информацию включайте NSContactsUsageDescription ключ в Вашем Info.plist файл.

Календарные данные

Состояние авторизации для календарных данных доступно от authorizationStatusForEntityType: метод EKEventStore. Для информирования пользователя о том, как Вы намереваетесь использовать эту информацию включайте NSCalendarsUsageDescription ключ в Вашем Info.plist файл.

Напоминания

Состояние авторизации для данных напоминания доступно от authorizationStatusForEntityType: метод EKEventStore. Для информирования пользователя о том, как Вы намереваетесь использовать эту информацию включайте NSRemindersUsageDescription ключ в Вашем Info.plist файл.

Периферийные устройства Bluetooth

Состояние авторизации для периферийных устройств Bluetooth доступно от state свойство CBCentralManager. Для информирования пользователя о том, как Вы намереваетесь использовать Bluetooth включайте NSBluetoothPeripheralUsageDescription ключ в Вашем Info.plist файл.

Микрофон

В iOS 7 и позже, состояние авторизации для микрофона доступно от requestRecordPermission: метод AVAudioSession. Для информирования пользователя о том, как Вы намереваетесь использовать микрофон включайте NSMicrophoneUsageDescription ключ в Вашем Info.plist файл.

Камера

В iOS 7 и позже, состояние авторизации для камеры доступно в deviceInputWithDevice:error: метод AVCaptureDeviceInput. Для информирования пользователя о том, как Вы намереваетесь использовать камеру включайте NSCameraUsageDescription ключ в Вашем Info.plist файл.

Интернационализация Вашего приложения

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

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

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

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