Xamarin.iOS 應用程式中的 iTunesMetadata.plist 檔案

本文所涵蓋的 iTunesMetadata.plist 檔案,可為 iTunes 提供針對測試或企業部署使用臨機操作散發之 iOS 應用程式的相關資訊。

在 iTunes Connect 中建立 iOS 應用程式時 (無論是要在 iTunes App Store 銷售或免費發行),開發人員可指定像是應用程式的內容類型、子內容類型、著作權聲明、支援的 iOS 裝置以及所需裝置功能等資訊。 針對透過臨機操作散發提供給測試人員或企業使用者的 iOS 應用程式,則會缺少這項資訊。

若要將缺少的資訊提供給臨機操作散發,可以建立選擇性的 iTunesMetadata.plist 檔案,並將其包含在應用程式 IPA 檔案中。 此 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 應用程式所需的裝置專屬功能,以順利將該應用程式安裝於特定的 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 應用程式的套件組合識別碼。 範例:

<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 索引鍵來告訴 iTunes 該 iOS 應用程式的圖示是否需要針對 iOS 6 (和更舊版本) 以發亮醒目提示的方式呈現。 範例:

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

gameCenterEnabled 和 gameCenterEverEnabled

使用 gameCenterEnabledgameCenterEverEnabled 索引鍵來告訴 iTunes 此 iOS 應用程式支援 Apple 的 Game Center。 範例:

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

genre、genreId 與 subgenres

使用 genregenreId 索引鍵來告訴 iTunes 該 iOS 應用程式所屬的內容類型。 範例:

<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 目前會定義下列內容類型和內容類型識別碼:

Genre ID (內容類型識別碼) Genre Name (內容類型名稱)
6000 業務
6001 天氣
6002 公用程式
6003 旅遊
6004 運動
6005 社交網路
6006 參考
6007 生產力
6008 相片與影片
6009 新聞
6010 導覽
6011 音樂
6012 生活方式
6013 健康與健身
6014 遊戲
6015 Finance
6016 娛樂
6017 教育程度
6018 書籍
6020 醫療
6021 Newsstand
6022 目錄

遊戲 (6014) 子內容類型:

Genre ID (內容類型識別碼) Genre Name (內容類型名稱)
7001 動作
7002 Adventure
7003 大型電玩
7004 委員會
7005 卡片
7006 博奕
7007 骰子
7008 教育
7009 系列
7010 兒童
7011 音樂
7012 Puzzle
7013 競速
7014 角色扮演
7015 模擬
7016 運動
7017 策略
7018 邏輯
7019 Word

Newstand (6021) 子內容類型:

Genre ID (內容類型識別碼) Genre Name (內容類型名稱)
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 應用程式所支援的 iOS 裝置。 範例:

<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 編輯器來建立和維護檔案。
  • 在純文字編輯器中建立和維護檔案。

這兩個選項都將在下方詳細說明。

使用 Visual 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 檔案,此檔案可用來告訴 iTunes 有關以臨機操作傳遞之 iOS 應用程式的相關資訊。 本文也討論 plist 檔案中的標準索引鍵,以及如何在 Visual Studio 和 Visual Studio for Mac 中建立和維護該檔案。