Файл iTunesMetadata.plist в приложениях Xamarin.iOS

В статье описывается файл iTunesMetadata.plist, который предоставляет в iTunes информацию о приложении при прямом распространении для тестирования или корпоративного развертывания.

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

Для предоставления этой информации при распространении напрямую можно создать и включить в IPA необязательный файл iTunesMetadata.plist. PLIST-файл представляет собой XML-файл со специальным форматированием (подробные сведения см. в разделе Руководство по программированию списка свойств Apple), который содержит пары "ключ-значение", задающие сведения об этом приложении iOS.

Содержимое файла iTunesMetadata.plist

Ниже представлен типовой пример файла iTunesMetadata.plist, используемого для предоставления iTunes сведений при прямом распространении:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>UIRequiredDeviceCapabilities</key>
    <dict>
        <key>armv7</key>
        <true/>
        <key>front-facing-camera</key>
        <true/>
    </dict>
    <key>artistName</key>
    <string>Company, Inc.</string>
    <key>bundleDisplayName</key>
    <string>App Name</string>
    <key>bundleShortVersionString</key>
    <string>1.5.1</string>
    <key>bundleVersion</key>
    <string>1.5.1</string>
    <key>copyright</key>
    <string>© 2015 Company, Inc.</string>
    <key>drmVersionNumber</key>
    <integer>0</integer>
    <key>fileExtension</key>
    <string>.app</string>
    <key>gameCenterEnabled</key>
    <false/>
    <key>gameCenterEverEnabled</key>
    <false/>
    <key>genre</key>
    <string>Games</string>
    <key>genreId</key>
    <integer>6014</integer>
    <key>itemName</key>
    <string>App Name</string>
    <key>kind</key>
    <string>software</string>
    <key>playlistArtistName</key>
    <string>Company, Inc.</string>
    <key>playlistName</key>
    <string>App Name</string>
    <key>releaseDate</key>
    <string>2015-11-18T03:23:10Z</string>
    <key>s</key>
    <integer>143441</integer>
    <key>softwareIconNeedsShine</key>
    <false/>
    <key>softwareSupportedDeviceIds</key>
    <array>
        <integer>9</integer>
    </array>
    <key>softwareVersionBundleId</key>
    <string>com.company.appid</string>
    <key>subgenres</key>
    <array>
        <dict>
            <key>genre</key>
            <string>Puzzle</string>
            <key>genreId</key>
            <integer>7012</integer>
        </dict>
        <dict>
            <key>genre</key>
            <string>Word</string>
            <key>genreId</key>
            <integer>7019</integer>
        </dict>
    </array>
    <key>versionRestrictions</key>
    <integer>16843008</integer>
</dict>
</plist>

Значения каждого ключа будут подробно рассмотрены ниже.

UIRequiredDeviceCapabilities

Ключ UIRequiredDeviceCapabilities сообщает iTunes, какие функции должно поддерживать конкретное устройство для установки приложения на это устройство iOS. Ключ состоит из словаря (<dict>...</dict>) функций (<key>...</key>), а также логического значения для каждой функции. Если значение для функции true, то наличие этой функции необходимо. Если false, то эта функция должна отсутствовать в устройстве. Например:

<key>UIRequiredDeviceCapabilities</key>
<dict>
    <key>armv7</key>
    <true/>
    <key>front-facing-camera</key>
    <true/>
</dict>

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

artistName и playlistArtistName

В ключах artistName и playlistArtistName указывается название компании, создавшей приложение. Название будет отображаться в iTunes. Пример:

<key>artistName</key>
<string>Company, Inc.</string>
...
<key>playlistArtistName</key>
<string>Company, Inc.</string>

bundleDisplayName, itemName и playlistName

В ключах bundleDisplayName, itemName и playlistName указывается имя приложения iOS, которое будет отображаться в iTunes. Пример:

<key>bundleDisplayName</key>
<string>App Name</string>
...
<key>itemName</key>
<string>App Name</string>
...
<key>playlistName</key>
<string>App Name</string>

bundleShortVersionString и bundleVersion

В ключах bundleShortVersionString и bundleVersion указывается номер версии приложения iOS, который отображается в iTunes. Пример:

<key>bundleShortVersionString</key>
<string>1.5.1</string>
<key>bundleVersion</key>
<string>1.5.1</string>

softwareVersionBundleId

В ключе softwareVersionBundleId указывается идентификатор пакета приложения. Пример:

<key>softwareVersionBundleId</key>
<string>com.company.appid</string>

В ключе copyrightуказывается уведомление об авторских правах, которое отображается в iTunes. Пример:

<key>copyright</key>
<string>© 2015 Company, Inc.</string>

releaseDate

В ключе releaseDate указывается дата выпуска приложения iOS. Дата выпуска отображается в iTunes. Пример:

<key>releaseDate</key>
<string>2015-11-18T03:23:10Z</string>

softwareIconNeedsShine

В ключе softwareIconNeedsShine указывается, требуется ли подсветка значка приложения в iOS 6 (и ранее). Пример:

<key>softwareIconNeedsShine</key>
<false/>

gameCenterEnabled и gameCenterEverEnabled

Ключи gameCenterEnabled и gameCenterEverEnabled сообщают iTunes, поддерживает ли это приложение Apple Game Center. Пример:

<key>gameCenterEnabled</key>
<false/>
<key>gameCenterEverEnabled</key>
<false/>

genre, genreId и subgenres

Ключи genre и genreId сообщают iTunes, к какому жанру относится приложение. Пример:

<key>genre</key>
<string>Games</string>
<key>genreId</key>
<integer>6014</integer>

Дополнительно можно использовать ключ subgenres для определения до двух поджанров приложения iOS. Пример:

<key>subgenres</key>
<array>
    <dict>
        <key>genre</key>
        <string>Puzzle</string>
        <key>genreId</key>
        <integer>7012</integer>
    </dict>
    <dict>
        <key>genre</key>
        <string>Word</string>
        <key>genreId</key>
        <integer>7019</integer>
    </dict>
</array>

Apple определяет следующие жанры и идентификаторы жанров для приложений iOS:

Идентификатор жанра Название жанра
6000 Триггер
6001 Погода
6002 Служебные инструменты
6003 Поездка
6004 Спорт
6005 Социальные сети
6006 Справочные материалы
6007 Продуктивность
6008 Фото и видео
6009 News
6010 Область
6011 Музыка
6012 Образ жизни
6013 Здоровье и фитнес
6014 Игры
6015 Finance
6016 Развлечения
6017 Образование
6018 Книги
6020 Медицинское обслуживание
6021 Киоск
6022 Каталоги

Поджанры игр (6014):

Идентификатор жанра Название жанра
7001 Действие
7002 Adventure
7003 Аркады
7004 Board
7005 Карточка
7006 Казино
7007 Кости
7008 Образование
7009 Семья
7010 Дети"
7011 Музыка
7012 Паззл
7013 Гонки
7014 Ролевые игры
7015 Simulation
7016 Спорт
7017 Стратегия
7018 Викторины
7019 Word

Поджанры новостей (6021):

Идентификатор жанра Название жанра
13001 Новости и политика
13002 Мода и стиль
13003 Дом и сад
13004 Туризм и природа
13005 Спорт и досуг
13006 Автомобильная промышленность
13007 Искусство и фотография
13008 Свадьбы
13009 Бизнес и инвестиции
13010 Журналы для детей
13011 Компьютеры и Интернет
13012 Приготовление еды и напитков
13013 Ремесла и хобби
13014 Электронные устройства и аудио
13015 Развлечения
13017 Здоровье, ум и тело
13018 Журнал
13019 Литературные журналы и альманахи
13020 Мужчины
13021 Видео и музыка
13023 Родительство и семья
13024 Животные
13025 Профессиональные навыки и торговля
13026 Региональные новости
13027 Наука
13028 Подростки
13029 Путешествия
13030 Женщины

softwareSupportedDeviceIds

Ключ softwareSupportedDeviceIds сообщает iTunes, какие устройства с iOS поддерживает это приложение. Пример:

<key>softwareSupportedDeviceIds</key>
<array>
    <integer>9</integer>
</array>

Допустимы следующие значения:

  • 1 — классические iPhone
  • 2 — iPod Touch
  • 4 — iPad
  • 9 — современные iPhone

Стандартные ключи

Следующие ключи содержатся во всех файлах iTunesMetadata.plist всех приложений iOS и всегда имеют одни и те же значения:

<key>drmVersionNumber</key>
<integer>0</integer>
<key>fileExtension</key>
<string>.app</string>
...
<key>kind</key>
<string>software</string>
...
<key>s</key>
<integer>143441</integer>
...
<key>versionRestrictions</key>
<integer>16843008</integer>

Создание файла iTunesMetadata.plist

При работе с файлом iTunesMetadata.plist в Visual Studio для Mac возможны два варианта:

  • Создать и настроить файл а визуальном редакторе файлов plist Visual Studio для Mac.
  • Создать и настроить файл в текстовом редакторе.

Ниже описываются оба способа.

Использование визуального редактора файлов plist

Выполните следующие действия.

  1. В Обозревателе решений щелкните правой кнопкой на файле проекта Xamarin.iOS и выберите Добавить>Новый файл...

  2. В диалоговом окне создания файла выберите iOS>Список свойств:

    Select iOS Property List

  3. Введите в поле Имя значение iTunesMetadata и нажмите кнопку Новый.

  4. Для редактирования файла дважды щелкните на файле iTunesMetadata.plist в Обозревателе решений:

    The iTunesMetadata.plist editor

  5. Нажмите зеленый + для создания новой записи и введите UIRequiredDeviceCapabilities в качестве имени ключа:

    Create a new entry and enter UIRequiredDeviceCapabilities as the key name

  6. Нажмите на тип значение Строка и выберите Словарь в раскрывающемся списке:

    Select Dictionary from the popup list

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

    Reveal the dictionary entries

  8. Нажмите на надпись Добавить запись, затем нажмите зеленый + для добавления записи в словарь:

    Add an entry to the dictionary

  9. Введите armv7 в качестве имени ключа, выберите тип Логическое и введите Да в качестве значения:

    Enter armv7 for the key name, select a type of Boolean and enter Yes as the value

  10. Повторяйте эти шаги, пока не заполните все необходимые пары ключ/значение в файле iTunesMetadata.plist (подробные сведения см. в разделе Содержимое файла iTunesMetadata.plist).

  11. Сохраните изменения в файле plist.

Использование текстового редактора

Выполните следующие действия.

  1. Создайте в текстовом редакторе новый файл и назовите его iTunesMetadata.plist.
  2. Скопируйте пример содержимого файла из раздела Содержимое файла iTunesMetadata.plist выше.
  3. Вставьте содержимое в файл и отредактируйте его под свои нужды.
  4. Сохраните файл и вернитесь в Visual Studio для Mac.
  5. В Обозревателе решений щелкните правой кнопкой на файле проекта Xamarin.iOS и выберите Добавить>Существующие файлы....
  6. В диалоговом окне открытия файла выберите файл iTunesMetadata.plist, который мы создали выше, и нажмите кнопку OK.
  7. Оставьте значение поля Действие при построении в значении Нет.

Позднее выберите файл iTunesMetadata.plist при подготовке к сборке IPA-файла в среде разработки.

Итоги

Статья описывает файл iTunesMetadata.plist, который используется для предоставления информации iTunes о распространяемом напрямую приложении iOS. Приведено описание стандартных ключей в файле plist, а также процесс создания и настройки файла в Visual Studio и Visual Studio для Mac.