Xamarin.iOS 应用中的 iTunesMetadata.plist 文件

本文介绍了 iTunesMetadata.plist 文件,该文件用于向 iTunes 提供 iOS 应用程序使用 Ad Hoc 分发进行测试或企业部署的相关信息。

在 iTunes Connect 中创建 iOS 应用程序(无论是用于在 iTunes App Store 中销售还是免费发布)时,开发人员可指定应用程序类型、子类型、版权声明、支持的 iOS 设备和必需设备功能等信息。 对于通过 Ad Hoc 分发传递给测试员或企业用户的 iOS 应用程序,缺少此信息。

若要向 Ad Hoc 分发提供缺少的信息,可选择创建可选的 iTunesMetadata.plist 文件,然后将其包含在应用程序 IPA 文件中。 此 plist 文件是特殊格式的 XML 文件(详情请参阅属性列表编程指南),其中包含定义给定 iOS 应用程序相关信息的键/值对。

iTunesMetadata.plist 内容

以下示例介绍了典型的 iTunesMetadata.plist 文件,该文件用于定义 Ad Hoc 分发所需的 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 应用程序需要哪些设备特定的功能才可在给定的 iOS 设备上安装。 其提供作为功能 (<key>...</key>) 和各功能布尔值的字典 (<dict>...</dict>)。 如果某功能的值为 true,则必须显示该功能。 若为 false,则不可在设备上显示该功能。 例如:

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

指定 iOS 设备必须在支持 ARM7 指令集并拥有前置摄像头后才可安装该应用程序。 有关允许值的完整列表,请参阅 Apple 的 UIRequiredDeviceCapabilities 文档。

artistName 和 playlistArtistName

artistNameplaylistArtistName 键用于定义创建要在 iTunes 内显示的 iOS 应用程序的公司名称。 示例:

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

bundleDisplayName、itemName 和 playlistName

bundleDisplayNameitemNameplaylistName 键用于定义将在 iTunes 中显示的 iOS 应用程序的名称。 示例:

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

bundleShortVersionString 和 bundleVersion

bundleShortVersionStringbundleVersion 键用于定义将在 iTunes 中显示的 iOS 应用程序版本号。 示例:

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

softwareVersionBundleId

softwareVersionBundleId 键用于指定 iOS 应用程序的程序包 ID。 示例:

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

copyright 键用于定义 iTunes 中显示的版权声明。 示例:

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

releaseDate

releaseDate 键用于提供要在 iTunes 中显示的 iOS 应用程序的发布日期。 示例:

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

softwareIconNeedsShine

softwareIconNeedsShine 键用于就 iOS 应用程序图标是否需要对 iOS 6(及先前版本)使用高亮突出显示通知 iTunes。 示例:

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

gameCenterEnabled 和 gameCenterEverEnabled

gameCenterEnabledgameCenterEverEnabled 键用于就此 iOS 应用程序是否支持 Apple Game Center 通知 iTunes 。 示例:

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

genre、genreId 和 subgenres

genregenreId 键用于就此 iOS 应用程序属于哪种类型通知 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>

对于 iOS 应用程序,Apple 当前定义以下的类型和类型 ID:

类型 ID 类型名称
6000 企业
6001 天气
6002 实用程序
6003 旅行
6004 体育游戏
6005 社交
6006 参考
6007 工作效率
6008 摄像与录影
6009 新闻
6010 导航
6011 音乐
6012 生活
6013 健康健美
6014 游戏
6015 Finance
6016 娱乐
6017 教育
6018 书籍
6020 医疗
6021 报刊杂志
6022 目录

游戏 (6014) 子类型:

类型 ID 类型名称
7001 操作
7002 Adventure
7003 街机游戏
7004 Board
7005
7006 娱乐场游戏
7007 骰子游戏
7008 教育类游戏
7009 系列
7010 儿童游戏
7011 音乐
7012 拼图
7013 赛车游戏
7014 角色扮演游戏
7015 模拟
7016 体育游戏
7017 策略
7018 Trivia
7019 Word

Newstand (6021) 子类型:

类型 ID 类型名称
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 键用于就此 iOS 应用程序支持哪些 iOS 设备通知 iTunes。 示例:

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

其中以下值可用:

  • 1 – 经典 iPhone
  • 2 – iPod Touch
  • 4 – iPad
  • 9 – 新型 iPhone

标准键

以下键内附在 iOS 应用程序的所有 iTunesMetadata.plist 文件中,且始终使用相同的值:

<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 文件

在 Visual Studio for Mac 中使用 iTunesMetadata.plist 文件时,有两种选择:

  • 使用 Visual Studio for Mac 的可视化 plist 编辑器创建和维护文件。
  • 在纯文本编辑器中创建和维护文件。

下面将详细介绍这两种选择。

使用可视化 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”作为键名称,选择“布尔”类型,再输入“Yes”作为值:

    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 for Mac。
  5. 解决方案资源管理器中,右键单击 Xamarin.iOS 项目文件并选择“添加”>“现有文件...”
  6. 在“打开文件”对话框中,选择上面创建的 iTunesMetadata.plist 文件,然后单击“确定”按钮。
  7. 将此文件的“生成操作”保留设置为“无”

稍后,准备在 IDE 中生成 IPA 时,请选择此 iTunesMetadata.plist 文件。

总结

本文介绍了 iTunesMetadata.plist 文件,该文件可用于就 Ad Hoc 分发的 iOS 应用程序通知 iTunes。 它还介绍了 plist 文件中的标准键,以及如何在 Visual Studio 和 Visual Studio for Mac 中创建和维护该文件。