
使用裝置管理來部署軟體更新到 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
回應、初次 Authenticate
要求或 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
傳送給裝置管理服務。
為了監控作業系統版本和軟體更新狀態,裝置管理服務可能會想訂閱下列狀態報告:
狀態報告 | 說明 |
---|---|
| 裝置上的作業系統版號版本(例如 21E19)。 |
| 裝置上使用中的作業系統版本(例如 17.4)。 |
| 裝置上使用中的作業系統版號和「快速安全回應」版本,例如(20A123a 或 20F75c)。 |
| 裝置上使用中的作業系統「快速安全回應」版本(例如 a)。 |
| 包含裝置上等待中之軟體更新版號和作業系統版本的辭典。 |
| 軟體更新安裝狀態,包含下列值:
|
| 包含軟體更新等待中之相關原因的詳細資訊的辭典。
|
| 關於軟體更新失敗的詳細資訊。詳細資訊包含軟體更新失敗的次數、上次失敗的時間戳記和失敗原因。 |
| 裝置的註冊 Beta 版計畫名稱,或是在沒有註冊的 Beta 版計畫時顯示空白字串。 |
除了其他報告,裝置管理服務可能也會想讓管理員使用 softwareupdate.install-reason
以便支援,並針對更新發生的方式提供其他見解。你可使用此辭典來確認使用者啟動更新,更新自動發生,或是軟體更新強制執行宣告啟動更新。
在註冊期間要求特定最低軟體版本
若裝置支援此功能,當裝置偵測到「設定輔助程式」中的管理設定,便會在傳送給裝置管理服務之初始 HTTP POST
要求的 MachineInfo
資料中傳回設為 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 Content-Type
回應標題需要分別設為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 辭典密鑰。
使用裝置管理延遲軟體更新
延遲軟體更新或升級 1 到 90 天可使用 iPhone、iPad 和 Mac 裝置上的 com.apple.configuration.softwareupdate.settings
宣告完成。
設定的延遲會定義機構在版本公開可用後,將其提供給使用者前的天數。不受設定的延遲支配,裝置管理服務仍可在受管理的裝置上強制執行特定軟體更新、升級或「快速安全回應」。如需更多資訊,請參閱:iOS、iPadOS 和 tvOS 的 Deferrals 辭典密鑰以及 macOS 的 Deferrals 辭典密鑰。
【注意】延遲軟體更新也會延遲任何依附於該版本的「快速安全回應」。
使用裝置管理強制執行軟體更新
若要在使用「裝置註冊」或「自動裝置註冊」進行註冊的裝置上依照特定時間強制執行軟體更新,裝置管理服務可以套用 com.apple.configuration.softwareupdate.enforcement.specific
宣告。
若將設定套用到指定作業系統或版號版本與目前裝置版本相同或更早的裝置,裝置會在狀態報告中傳回錯誤
若有包含比目前裝置版本新的作業系統或版號版本的多個設定,包含最早目標日期與時間的設定會先處理,而任何其他設定會保留在佇列中。裝置更新到新版本時,設定集會經過重新處理以確認接下來要處理的設定是哪一個。作為此過程的一部分,裝置會忽略任何指定較舊版本或與目前版本相同的現有配置。
若裝置管理服務只定義 TargetOSVersion
,作業系統會會自動安裝任何可用的「快速安全回應」。若要以特定版本或「快速安全回應」為目標,裝置管理服務在指定版號之外還可以使用 TargetBuildVersion
密鑰,包含補充版本識別碼。
如需更多資訊,請參閱:強制執行軟體更新辭典密鑰。
通知
Notifications 密鑰會更改預設通知動作來在強制執行時間的 1 小時前才顯示通知,以及重新啟動的倒數。如需更多資訊,請參閱:Notifications key。
將 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 資源庫。