Реализация Пакета Настроек iOS

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

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

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

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

Интерфейс приложения настроек

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

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

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

Табличное 4-1  Предпочтение управляет типами

Тип управления

Описание

Текстовое поле

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

Ключ для этого типа PSTextFieldSpecifier.

Заголовок

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

Ключ для этого типа PSTitleValueSpecifier.

Тумблер

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

Ключ для этого типа PSToggleSwitchSpecifier.

Ползунок

Тип ползунка выводит на экран управление ползунком. Можно использовать этот тип для предпочтения, представляющего диапазон значений. Значение для этого типа является вещественным числом, минимальное и максимальное значение которого Вы указываете.

Ключ для этого типа PSSliderSpecifier.

Мультизначение

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

Ключ для этого типа PSMultiValueSpecifier.

Группа

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

Ключ для этого типа PSGroupSpecifier.

Дочерняя область

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

Ключ для этого типа PSChildPaneSpecifier.

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

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

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

Табличное 4-2  содержание Settings.bundle каталог

Название товара

Описание

Root.plist

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

Дополнительный .plist файлы

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

Один или больше .lproj каталоги

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

Дополнительные изображения

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

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

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

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

Формат файла страницы настроек

Каждый файл Страницы настроек хранится в формате файла списка свойств Настроек iPhone, который является структурированным форматом файла. Самый простой способ отредактировать файлы Страницы настроек состоит в том, чтобы использовать встроенные средства редактора XCode; посмотрите Подготовку Страницы настроек для Редактирования. Можно также отредактировать файлы списка свойств с помощью Редактора Списка свойств приложение, идущее с инструментами Xcode.

Корневой элемент каждого файла Страницы настроек содержит ключи, перечисленные в Таблице 4-3. Только один ключ фактически требуется, но рекомендуется включать их обоих.

Табличные 4-3  ключи Корневого уровня предпочтительного файла Страницы настроек

Ключ

Ввести

Значение

PreferenceSpecifiers (требуемый)

Массив

Значение для этого ключа является массивом словарей с каждым словарем, содержащим информацию для единственного управления. Для списка типов управления посмотрите Таблицу 4-1. Для описания ключей, связанных с каждым управлением, посмотрите Ссылку Схемы Приложения Настроек.

StringsTable

Строка

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

Иерархические предпочтения

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

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

Рисунок 4-1 показывает, как работает этот иерархический набор страниц. Левая сторона числа показывает .plist файлы и правая сторона показывают отношения между соответствующими страницами.

Рисунок 4-1  , Организующий предпочтения с помощью дочерних областей
Organizing preferences using child panes

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

Локализованные ресурсы

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

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

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

Создание и изменение пакета настроек

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

Добавление пакета настроек

Для добавления, Настройки связываются к проекту XCode:

  1. Выберите File> New> New File.

  2. Под iOS выберите Resource, и затем выберите шаблон Settings Bundle.

  3. Назовите файл Settings.bundle.

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

Новый пакет Настроек имеет следующую структуру:

Settings.bundle/
    Root.plist
    en.lproj/
        Root.strings

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

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

  1. Выберите файл.

  2. Щелчок управления окно редактора и выбирает Property List Type> Настройки iPhone plist, если это уже не выбрано.

    Форматирование списка свойств упрощает понимать и редактировать содержание файла. XCode заменяет человекочитаемыми строками (как показано на рисунке 4-2), которые являются подходящими для выбранного формата.

    Рисунок 4-2  Отформатированное содержание Root.plist файл
    Formatted contents of the Root.plist fileFormatted contents of the Root.plist file

Конфигурирование страницы настроек: учебное руководство

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

Рисунок 4-3  корневая Страница настроек
A root Settings page
  1. Раскройте ключ Preference Items для отображения элементов по умолчанию, идущих с шаблоном.

  2. Измените заголовок Item 0 к Sound.

    • Раскрыть Item 0 из Preference Items.

    • Измените значение Title ключ от Group к Sound.

    • Уезжайте Type набор ключей к Group.

    • Щелкните по треугольнику раскрытия элемента для сокрытия его содержания.

  3. Создайте первый тумблер для переименованной Звуковой группы.

    • Выбрать Item 2 (элемент тумблера) Preference Items и выберите Edit> Cut.

    • Выбрать Item 0 и выберите Edit> Paste. (Это перемещает элемент тумблера перед элементом текстового поля.)

    • Раскройте элемент тумблера для раскрытия его ключей конфигурации.

    • Измените значение Title ключ к Play Sounds.

    • Измените значение Identifier ключ к play_sounds_preference.

    • Щелкните по треугольнику раскрытия элемента для сокрытия его содержания.

  4. Создайте второй тумблер для Звуковой группы.

    • Выбрать Item 1 (тумблер Звуков Игры).

    • Выберите Edit> Copy.

    • Выберите Edit> Paste для размещения копии тумблера прямо после первого.

    • Раскройте новый элемент тумблера для раскрытия его ключей конфигурации.

    • Измените значение Title ключ к 3D Sound.

    • Измените значение Identifier ключ к 3D_sound_preference.

    • Щелкните по треугольнику раскрытия элемента для сокрытия его содержания.

    В этой точке Вы закончили первую группу настроек и готовы создать Пользовательскую Информационную группу.

  5. Изменение Item 3 в управление Группы и имя это User Info.

    • Щелкнуть Item 3 в Preferences Items. Это выводит на экран всплывающее меню со списком типов изделия.

    • От всплывающего меню выбрать Group изменить тип управления.

    • Раскройте содержание Item 3.

    • Установите значение Title ключ к User Info.

    • Щелкните по треугольнику раскрытия элемента для сокрытия его содержания.

  6. Создайте Поле имени.

    • Выбрать Item 4 в Preferences Items.

    • Используя всплывающее меню, измените его тип на Text Field.

    • Установите значение Title ключ к Name.

    • Установите значение Identifier ключ к user_name.

    • Щелкните по треугольнику раскрытия элемента для сокрытия его содержания.

  7. Создайте настройки Experience Level.

    • Выбрать Item 4.

    • Щелчок управления окно редактора и выбирает Add Row для добавления нового элемента.

    • Установите тип нового элемента к Multi Value.

    • Раскройте содержание элемента и установите его заголовок в Experience Level, его идентификатор к experience_preference, и его значение по умолчанию к 0.

    • С выбранным ключом Default Value, Щелчок управления и выбирают Add Row для добавления a Titles массив.

    • Выберите Titles выстройте и нажмите Return для добавления нового подэлемента.

    • Добавьте еще два подэлемента для создания в общей сложности трех элементов.

    • Установите значения подэлементов к Beginner, Expert, и Master.

    • Скройте подэлементы ключа.

    • Добавьте новый элемент для Values массив.

    • Добавьте три подэлемента к Values массив и набор их значения к 0, 1, и 2.

    • Скройте содержание Item 5.

  8. Добавьте заключительную группу к своей странице настроек.

    • Создайте новый элемент и установите его тип в Group и его заголовок к Gravity.

    • Создайте другой новый элемент и установите его тип в Slider, его идентификатор к gravity_preference, его значение по умолчанию к 1, и его максимальное значение к 2.

Создание дополнительных файлов страницы настроек

Шаблон Settings Bundle включает Root.plist файл, определяющий главную Страницу настроек Вашего приложения. Для определения дополнительных Страниц настроек необходимо добавить дополнительные файлы списка свойств к пакету Настроек.

Для добавления файла списка свойств к пакету Настроек в XCode сделайте следующее:

  1. Выберите File> New> New File.

  2. Под iOS выберите Resource, и затем выберите шаблон Property List.

  3. Выберите новый файл для отображения его содержания в редакторе.

  4. Щелчок управления область редактора и выбирает Property List Type> Настройки iPhone plist для форматирования содержания.

  5. Щелчок управления область редактора снова и выбирает Add Row для добавления нового ключа.

  6. Добавьте и сконфигурируйте любые дополнительные ключи, в которых Вы нуждаетесь.

После добавления новой Страницы настроек к Вашему пакету Настроек можно отредактировать содержание страницы, как описано в Конфигурировании Страницы настроек: Учебное руководство. Для отображения настроек для страницы необходимо сослаться на него от дочернего управления областью, как описано в Иерархических Предпочтениях.

Отладка предпочтений моделируемых приложений

При выполнении приложения Средство моделирования iOS хранит любые предпочтительные значения для приложения в ~/Library/Application Support/iOS Simulator/User/Applications/<APP_ID>/Library/Preferences, где <APP_ID> является программно сгенерированным именем каталога что использование iOS для идентификации приложения.

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