
使用裝置管理部署軟件更新至 Apple 裝置
聲明式裝置管理是 Apple 裝置管理的未來。 其可讓裝置以非同步方式套用設定和報告狀態到裝置管理服務,而無須持續輪詢。 這對效能和可擴展性來説是理想的選擇,亦提供進階方法來管理軟件更新。 聲明式裝置管理會隨着值和設定變更而從裝置提供主動狀態報告。 這樣裝置管理服務不需要執行定期查詢亦可以隨時取得裝置的最新狀態。
裝置管理服務會聲明想要的作業系統版本狀態並將達成該狀態的任務委託給裝置本身,而非向裝置傳送軟件更新指令來啟動更新。 這會讓受管理的軟件更新程序更強韌並提升用户透明度。
利用軟件更新聲明的重要性
裝置管理服務需要在可用時利用軟件更新聲明。 然而,舊版軟件更新指令和描述檔仍然可用和受支援。 進行以下變動後,其可與軟件更新聲明一起使用:
由聲明定義的延遲會優先於限制所設定的延遲。
macOS 上由聲明套用的自動軟件更新會優先於設定描述檔中提供的自動更新設定。
如有作業系統使用聲明式裝置管理設定的待處理軟件更新,客户端就無法再處理部份裝置管理指令,並會傳回錯誤指出裝置上有使用中的聲明,如下表所示:
裝置管理指令 | 結果 | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
| 有限: 針對 Mac 電腦,未受管理且基於作業系統的更新可能會顯示在指令回應中,例如在 Xcode 或命令列工具中。 | ||||||||||
| 裝置傳回 | ||||||||||
| 裝置傳回空白的狀態陣列。 |
使用 Apple 軟件查詢服務
「Apple 軟件查詢服務」(可在 https://gdmf.apple.com/v2/pmv 中使用)是取得一系列公開可用更新、升級和「快速保安回應」的官方資源。 其允許裝置管理服務在Apple發佈版本後立即查詢,並透過及時和準確的方式計算每個硬件型號的可用性。
JSON 回應包含三個可用軟件版本列表:
PublicAssetSets: 此列表包含公眾嘗試更新或升級時可用的最新版本。
AssetSets: 此列表是
PublicAssetSets
的一個子集,且包含所有可供裝置管理服務推送到裝置的版本。PublicRapidSecurityResponses: 此列表包含現適用於 Apple 裝置的「快速保安回應」版本。
列表中的每個元件都包括 ProductVersion
編號和作業系統的 Build
,版本發佈時的 PostingDate
、ExpirationDate
和該版本的 SupportedDevices
列表。 裝置列表與裝置中的 ProductName
值相符,該值在裝置嘗試註冊時於 DeviceInformation
回應、初次「認證」
要求或 MachineInfo
中傳回。
到期日通常設定為發佈日期的 180 日後,代表更新簽署到期的日期。 已逾期的更新無法再在裝置上安裝。 出現後續的更新時,之前更新的到期日可能會更新。 如未有提供到期日,則該更新未到期。 更新只會在到期日已過時才會到期。
內容會由作業系統平台使用以下鍵分組:
iOS
(包括 iPadOS、tvOS 和 watchOS)macOS
visionOS
{
"AssetSets": {
"iOS": [
{
"ProductVersion": "18.2.1",
"Build": "22C6161",
"PostingDate": "2025-01-06",
"ExpirationDate": "2025-04-17",
"SupportedDevices": ["iPad11,1", "iPad11,2", "iPad11,3", "iPad11,4", "iPad11,6", "iPad11,7", "iPad12,1", "iPad12,2", "iPad13,1", "iPad13,10", "iPad13,11", "iPad13,16", "iPad13,17", "iPad13,18", "iPad13,19", "iPad13,2", "iPad13,4", "iPad13,5", "iPad13,6", "iPad13,7", "iPad13,8", "iPad13,9", "iPad14,1", "iPad14,10", "iPad14,11", "iPad14,2", "iPad14,3", "iPad14,4", "iPad14,5", "iPad14,6", "iPad14,8", "iPad14,9", "iPad16,1", "iPad16,2", "iPad16,3", "iPad16,4", "iPad16,5", "iPad16,6", "iPad7,11", "iPad7,12", "iPad8,1", "iPad8,10", "iPad8,11", "iPad8,12", "iPad8,2", "iPad8,3", "iPad8,4", "iPad8,5", "iPad8,6", "iPad8,7", "iPad8,8", "iPad8,9", "iPhone11,2", "iPhone11,4", "iPhone11,6", "iPhone11,8", "iPhone12,1", "iPhone12,3", "iPhone12,5", "iPhone12,8", "iPhone13,1", "iPhone13,2", "iPhone13,3", "iPhone13,4", "iPhone14,2", "iPhone14,3", "iPhone14,4", "iPhone14,5", "iPhone14,6", "iPhone14,7", "iPhone14,8", "iPhone15,2", "iPhone15,3", "iPhone15,4", "iPhone15,5", "iPhone16,1", "iPhone16,2", "iPhone17,1", "iPhone17,2", "iPhone17,3", "iPhone17,4"
]
},
使用產品版本列表來判斷哪個版本比裝置目前的作業系統版本新,並且適用於指定裝置。 然後以潛在的作業系統更新候選項目來向裝置管理服務管理員提供該版本列表。
將狀態報告傳送給裝置管理服務
如要在狀態項目變更時接收更新,伺服器需透過向裝置傳送 ManagementStatusSubscriptions
聲明來訂閲每個狀態報告。 如訂閲的項目變更,以及每 24 小時,裝置會在 ManagementStatusSubscriptions
聲明啟用時將 StatusReport
傳送給裝置管理服務。
為了監控作業系統版本和軟件更新狀態,裝置管理服務可能會想訂閲以下狀態報告:
狀態報告 | 説明 |
---|---|
| 裝置上作業系統的版號版本(例如 21E219)。 |
| 裝置上使用中的作業系統版本(例如 17.4)。 |
| 裝置上使用中的作業系統版號和「快速保安回應」版本(例如 20A123a 或 20F75c)。 |
| 裝置上使用中的作業系統「快速保安回應」版本(例如 a)。 |
| 包含裝置上待處理的軟件更新版號和作業系統版本的辭典。 |
| 軟件更新安裝狀態,其中包含以下值:
|
| 包含軟件待更新原因之詳情的辭典。
|
| 有關軟件更新失敗的詳細資料。 詳細資料包括軟件更新失敗的次數、上次失敗的時間戳記和失敗原因。 |
| 裝置已註冊的 Beta 版計劃名稱,或在沒有已註冊的 Beta 版計劃時的空白字串。 |
除了其他報告,裝置管理服務可能也會想讓管理員使用 softwareupdate.install-reason
以便支援,並針對進行更新的方式提供其他意見。 你可以使用此辭典來判斷更新由用户自行開始、自動發生還是由軟件更新強制執行聲明開始。
註冊期間要求指定的最低軟件版本
如裝置支援此功能,當裝置偵測到「設定輔助程式」中的管理設定,便會在 MachineInfo
資料(在初始 HTTP POST
要求中傳送給裝置管理服務)中傳回設為 True 的 MDM_CAN_REQUEST_SOFTWARE_UPDATE
鍵。 如需更多資料,請參閲 Apple 裝置管理 GitHub 資源庫中的 MachineInfo yaml 檔案。
此外,裝置會在 MachineInfo
資料(全部為字串)中提供以下欄位:
鍵 | 支援的最低作業系統版本 | 説明 | |||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
VERSION | iOS 17 iPadOS 17 macOS 14 | 裝置上已安裝的版號版本(例如 7A182)。 | |||||||||
OS_VERSION | iOS 17 iPadOS 17 macOS 14 | 裝置上已安裝的作業系統版本(例如 17.0)。 | |||||||||
SUPPLEMENTAL_BUILD_VERSION | iOS 17 iPadOS 17 macOS 14 | 裝置的「快速保安回應」版本(如有)。 | |||||||||
SUPPLEMENTAL_OS_VERSION_EXTRA | iOS 17 iPadOS 17 macOS 14 | 裝置的「快速保安回應」額外版本(如有)。 | |||||||||
SOFTWARE_UPDATE_DEVICE_ID | iOS 17.4 iPadOS 17.4 macOS 14.4 | 用來在「Apple 軟件查詢服務」中查詢可用作業系統更新的裝置型號識別碼。 |
根據提供的資料,裝置管理服務可以決定是否要強制裝置進行更新。
如裝置管理服務選擇不強制執行軟件更新,其只會傳回註冊描述檔以回應
HTTP POST
要求,如同其允許註冊繼續執行的操作。如裝置管理服務選擇強制執行軟件更新,其需要傳回顯示 403 狀態代碼
HTTP
回應,並在回應內文中包括 JSON 或 XML 物件(HTTP內容類型
回應標題需要分別設為application/json
或application/xml
)。
收到此錯誤回應後,裝置會嘗試更新至指定版本。 如更新成功,裝置會重新啟動且用户需要再次執行「設定輔助程式」。 裝置傳送給裝置管理服務的下一個 MachineInfo POST
要求會顯示已更新的作業系統版本,然後服務可以繼續執行註冊。 如更新失敗,系統會向用户顯示錯誤訊息且「遙距管理」面板會在「設定輔助程式」中再次顯示。
response
描述語言定義於下表。
鍵 | 類型 | 必須 | 説明 | ||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
| 字串 | 是 | 需要設定為 | ||||||||
| 字串 | 否 | 錯誤説明。 只用於記錄用途。 | ||||||||
| 字串 | 否 | 錯誤説明適合向用户顯示。 | ||||||||
| 辭典 | 是 | 指定軟件更新的其他資料。 |
details
辭典描述語言定義於此處。
鍵 | 類型 | 必須 | 説明 | ||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
| 字串 | 是 | 要求裝置更新到的作業系統版本。 | ||||||||
| 字串 | 否 | 要求裝置更新到的版號版本。 | ||||||||
| 辭典 | 否 | 裝置會註冊 Beta 版計劃,讓強制執行的軟件更新至 Beta 版計劃作業系統版本。 強制執行的軟件更新完成後,裝置會維持在 Beta 版計劃中。 |
如你只指定 OSVersion
,裝置會自動為此版本下載並安裝任何可用的「快速保安回應」。 如需特定版號或補充版本,裝置管理服務也可選擇指定 BuildVersion
。 例如,雖然 iOS 16.5.1(c)已可供使用,如要在註冊前要求裝置執行 iOS 16.5.1(a),裝置管理服務需要將 OSVersion
設為 iOS 16.5.1
並將 BuildVersion
設為 20F770750b
。
重要事項:在 macOS 15 之前,只有來自 PublicAssetSets
和 PublicRapidSecurityResponses
列表的版本可以被指定。 在 macOS 15 上,也可以使用來自 AssetSets
的內容。
軟件更新的裝置管理設定
com.apple.configuration.softwareupdate.settings
聲明(適用於 iOS 18、iPadOS 18、macOS 15、tvOS 18.4 或較新版本)由可用來設定多種軟件更新行為的辭典組成。
裝置管理服務在多個聲明間分配不同的鍵後,裝置會將所有使用中軟件更新設定聲明的設定合併。 如相同的鍵由多個聲明設定,合併行為會取決於個別鍵,其在下表中概述。
使用裝置管理設定自動軟件更新
com.apple.configuration.softwareupdate.settings
聲明會提供辭典來定義受監管 iPhone、iPad、Apple TV 和 Mac 裝置上的自動軟件更新行為。 如需更多資料,請參閲:AutomaticActions 辭典鍵。
裝置管理服務如何處理「快速保安回應」
「快速保安回應」會一律套用至作業系統的最新更新,成為「快速保安回應」的基礎版本。 例如,如 iPhone 安裝作業系統版本 iOS 17.2,其會套用 17.2(a)補充更新(如有)。 在 iOS 18、iPadOS 18 和 macOS 15 中已可使用合併的更新,其讓軟件更新包括任何可用的「快速保安回應」。
在 iOS 18、iPadOS 18 和 macOS 15 之前,裝置管理服務可能需要觸發兩個軟件更新才能確定特定的補充版本出現。 首先,如裝置尚未安裝該基礎版本,其需要將裝置更新至補充更新的基礎版本(例如 iOS 17.1 至 iOS 17.2)。 然後需要更新至補充更新的基礎版本(例如 iOS 17.2 至 iOS 17.2 (a))。
在 iOS 18、iPadOS 18 以及 macOS 15 上,裝置管理服務可以指定:
作業系統版本(其會自動安裝可用的「快速保安回應」)
補充版號版本(其會讓裝置自動執行必要的更新到基礎版本以作為程序的一部份)
這兩種方式會在「自動裝置註冊」期間套用到軟件更新強制執行設定,以及強制執行的最低版本。
com.apple.configuration.softwareupdate.settings
聲明也可以用來設定受監管的 iPhone、iPad 和 Mac 裝置上的「快速保安回應」行為。 如需更多資料,請參閲:iOS、iPadOS 和 macOS 的 RapidSecurityResponse 辭典鍵。
使用裝置管理延遲軟件更新
使用受監管的 iPhone、iPad 和 Mac 裝置上的 com.apple.configuration.softwareupdate.settings
聲明來完成將軟件更新或升級延遲 1 至 90 日。
設定的延遲可定義一個版本在公開可用後多少日後機構才會向用户提該版本。 裝置管理服務不會受設定的延遲影響,仍可在受管理的裝置上強制執行特定軟件更新、升級或「快速保安回應」。 如需更多資料,請參閲:iOS、iPadOS 和 tvOS 的 Deferrals 辭典鍵、macOS 的 Deferrals 辭典鍵。
備註:延遲軟件更新也會延遲任何依存於該版本的「快速保安回應」。
使用裝置管理強制執行軟件更新
如要在使用「裝置註冊」或「自動裝置註冊」註冊的裝置上於特定時間前強制執行軟件更新,裝置管理服務可以套用 com.apple.configuration.softwareupdate.enforcement.specific
聲明。
如套用到裝置的設定所指定之作業系統或版號版本與現有裝置版本相同或較舊,裝置會在狀態報告中傳回錯誤
如多個設定中提供的作業系統或版號版本比現有裝置版本新,系統會先處理目標日期和時間最早的設定,並將其他的任何設定留在佇列。 當裝置更新至新的版本,系統會重新處理設定組,以決定下一個要處理的設定。 作為此程序的一部份,裝置會忽略任何指定較舊或與目前一致的版本之現有設定。
如裝置管理服務只定義 TargetOSVersion
,作業系統會自動安裝任何可用的「快速保安回應」。 如要將指定版本或「快速保安回應」設定為目標,裝置管理服務除了指定包括補充版本識別碼的版本外,還可以使用 TargetBuildVersion
鍵。
如需更多資料,請參閲:強制執行軟件更新辭典鍵。
通知
Notifications 鍵會更改預設通知行為,以僅在強制執行時間和重新啟動倒數前 1 小時顯示通知。 如需更多資料,請參閲:Notifications 鍵。
將 Bootstrap 代碼用於配備 Apple 晶片的 Mac 電腦上
如要在配備 Apple 晶片且受監管的 Mac 電腦上授權強制執行的軟件更新,裝置管理服務可以要求和託管 Bootstrap 代碼。 這會讓軟件更新體驗極致流暢且無需將用户互動納入程序一部份。 如有需要,裝置會使用 GetBootstrapTokenRequest
以從裝置管理服務取回 Bootstrap 代碼。
在第一個步驟中,裝置管理服務會使用 SecurityInfo
指令來判斷裝置是否支援 Bootstrap 代碼。 如回應包括設為 true
的 BootstrapTokenRequiredForSoftwareUpdate
,裝置可以使用 Bootstrap 代碼來授權軟件更新。
如要製作 Bootstrap 代號,裝置管理服務需要在裝置管理描述檔中將 com.apple.mdm.bootstraptoken
加至 ServerCapabilities
陣列。 如需更多資料,請參閲 Apple 開發者網站上的裝置管理描述檔。
在裝置收到 Bootstrap 代碼後,當已啟用保安代碼的用户下次登入時,裝置會製作 Bootstrap 代碼。 然後裝置會聯絡裝置管理服務的簽入端點並使用 SetBootstrapTokenRequest
託管代碼。 如需更多資料,請參閲 Apple 開發者網站上的設定 Bootstrap 代碼。
如需最新的描述語言規格,請參閲:Apple 裝置管理 GitHub 資源庫。