Intune app SDK for iOS - 應用程式參與功能
Microsoft Intune App SDK for iOS 可讓您將 Intune 應用程式保護原則 (也稱為應用程式或 MAM 原則) 併入原生 iOS 應用程式。 Intune管理的應用程式是與 Intune App SDK 整合的應用程式。 Intune 系統管理員可以在 Intune 主動管理應用程式時,輕鬆地將應用程式保護原則部署到 Intune 管理的應用程式。
注意事項
本指南分成數個不同的階段。 從檢閱 規劃整合開始。
階段 4:應用程式參與功能
階段 Goals
- 瞭解 Intune App SDK 所提供的各種應用程式參與功能。
- 整合與您的應用程式和使用者相關的應用程式參與功能。
- 測試這些功能的整合。
什麼是「應用程式參與功能」?
此 SDK 整合程式會嘗試將開發人員需要撰寫的應用程式特定程式代碼數量降至最低。 順利完成 SDK 整合的先前階段,您的應用程式現在可以強制執行大部分的應用程式保護原則設定,例如檔案加密、複製/貼上限制、螢幕快照封鎖和數據傳輸限制。
不過,有些設定需要應用程式特定的程式代碼才能正確強制執行;這些稱為應用程式參與功能。 一般而言,SDK 對於應用程式的程式代碼或使用者案例沒有足夠的內容可自動強制執行這些設定,因此依賴開發人員適當地呼叫 SDK API。
應用程式參與功能不一定是選擇性的。 視您應用程式的現有功能而定,可能需要這些功能。
本指南的下一個階段將說明數個重要的應用程式參與功能:
- 階段 5:多重身分識別中所涵蓋 的多重身分識別。
- 階段 6:應用程式保護條件式存取支援中所涵蓋的應用程式保護 CA
- 階段7中涵蓋的網頁檢視特定功能 :網頁檢視功能
本指南的其餘部分將說明一組其餘的應用程式參與功能:
- 實作允許的帳戶
- 實作所需的檔案加密
- 實作另存新檔和開啟控件
- 透過UIActivityViewController共享數據
- 為您的 iOS 應用程式啟用目標設定 (APP/MAM 應用程式設定)
- 遙測
- Siri 意圖
- 應用程式剪輯
- 列印
- 通知
- 建置後腳本
使用 API 自定義應用程式的行為
Intune App SDK 有數個 API 可供您呼叫,以取得部署至應用程式 Intune 應用程式原則的相關信息。 您可以使用此資料來自定義應用程式的行為。 下表提供您所使用之一些基本 Intune 類別的相關信息。
類別 | 描述 |
---|---|
IntuneMAMPolicyManager.h | IntuneMAMPolicyManager 類別會公開部署至應用程式的 Intune 應用程式原則。 值得注意的是,它會公開適用於 啟用多重身分識別的 API。 |
IntuneMAMPolicy.h | IntuneMAMPolicy 類別會公開一些套用至應用程式的 MAM 原則設定。 這些原則設定大部分都會公開,讓應用程式可以自定義其 UI。 大部分的原則設定都是由 SDK 強制執行,而不是由應用程式強制執行。 不過,有一些例外狀況。 應用程式開發人員應該檢閱此標頭中的批註,以判斷哪些 API 適用於其應用程式的案例。 |
IntuneMAMFileProtectionManager.h | IntuneMAMFileProtectionManager 類別會公開應用程式可用來根據提供的身分識別明確保護檔案和目錄的 API。 身分識別可以由 Intune 或 Unmanaged 管理,而 SDK 會套用適當的 MAM 原則。 使用這個類別是選擇性的。 |
IntuneMAMDataProtectionManager.h | IntuneMAMDataProtectionManager 類別會公開應用程式在提供身分識別時可用來保護數據緩衝區的 API。 身分識別可以由 Intune 或 Unmanaged 管理,而 SDK 會適當地套用加密。 |
實作允許的帳戶
Intune 可讓 IT 系統管理員指定使用者可以登入哪些帳戶。 應用程式可以查詢 Intune App SDK 中指定的允許帳戶清單,然後確定只允許的帳戶登入裝置。
若要查詢允許的帳戶,應用程式應該檢查 allowedAccounts
上的 IntuneMAMEnrollmentManager
屬性。 屬性 allowedAccounts
是包含允許帳戶的陣列或 nil。 如果屬性為 nil,則未指定任何允許的帳戶。 已啟用 MSAL/OneAuth 的應用程式應該使用 allowedAccountIds
實例上的 IntuneMAMEnrollmentManager
屬性來查詢 Entra 物件識別碼。
應用程式也可以藉由觀察通知來回應屬性的IntuneMAMAllowedAccountsDidChangeNotification
變更allowedAccounts
。 每當 屬性值變更時, allowedAccounts
就會張貼通知。
針對允許的帳戶使用 API 時,需要下列需求:
- UPN 和 OID 的身分識別比較必須不區分大小寫。
- 身分識別比較必須同時支援UPN和OID。
- 應用程式必須具有記錄,才能診斷系統管理員指定的帳戶與使用者輸入帳戶之間的任何不相符。
實作所需的檔案加密
isFileEncryptionRequired
當 IT 系統管理員要求應用程式在儲存至磁碟的任何檔案上使用 Intune 加密時,中定義IntuneMAMPolicy.h
的 API 會通知應用程式。 如果 isFileEncryptionRequired
為 true,則應用程式必須負責確保應用程式儲存到磁碟的任何檔案都會使用、 IntuneMAMFileProtectionManager.h
和IntuneMAMFDataProtectionManager.h
中的 API IntuneMAMFile.h
進行加密。
應用程式可以觀察 中定義的通知, IntuneMAMDataProtectionDidChangeNotification
以回應此原則中的 IntuneMAMFDataProtectionManager.h
變更。
實作另存新檔和開啟控件
Intune 可讓IT系統管理員選取受控應用程式可將資料儲存至或開啟資料的儲存位置。 應用程式可以使用 isSaveToAllowedForLocation:withAccountId:
中定義IntuneMAMPolicy.h
的 API,查詢 Intune MAM SDK 以取得允許的儲存至記憶體位置。 應用程式也可以使用 isOpenFromAllowedForLocation:withAccountId:
中定義的 API,查詢 SDK 中 IntuneMAMPolicy.h
允許的從記憶體位置開啟。
此外,應用程式可以查詢 中IntuneMAMPolicy.h
定義的 API,以確認允許來自共用擴充功能的canReceiveSharedItemProvider:
傳入數據。 應用程式也可以查詢 canReceiveSharedFile:
API,以驗證來自 openURL 呼叫的連入檔案,也定義於 IntuneMAMPolicy.h
注意事項
自 MAM SDK v15.1.0 起,已對內部行為進行變更。
-
nil
帳戶將不再被視為 LocalDrive/LocalStorage 位置的目前帳戶。 傳入nil
帳戶會將它視為 Unmanaged 帳戶。 因為應用程式可以控制其處理沙箱記憶體的方式,所以身分識別可以而且應該與這些位置相關聯。 - 帳戶將不再被視為單一
nil
身分識別應用程式的目前帳戶。 現在,在單一nil
身分識別應用程式中傳入帳戶的處理方式會與傳遞至多重身分識別應用程式時完全相同。 如果您正在開發單一身分識別應用程式,請使用IntuneMAMPolicy
的primaryUser
在受控nil
時參考目前的帳戶,並在未受管理時參考目前的帳戶。
處理儲存至案例
將數據移至新的雲端記憶體或本機位置之前,應用程式必須先向 isSaveToAllowedForLocation:withAccountId:
API檢查,以瞭解IT系統管理員是否允許資料傳輸。 這個方法會在物件上 IntuneMAMPolicy
呼叫。 就地編輯和儲存的數據不需要使用此 API 進行檢查。
注意事項
對象 IntuneMAMPolicy
應該代表所儲存數據擁有者的原則。 若要取得 IntuneMAMPolicy
特定身分識別的物件,請呼叫 IntuneMAMPolicyManager
的 policyForAccountId:
方法。 如果擁有者是沒有身分識別的 Unmanaged 帳戶, nil
則可以傳遞至 policyForAccountId:
。 即使要儲存的資料不是組織資料, isSaveToAllowedForLocation:withAccountId:
仍應呼叫 。 擁有目的地位置的帳戶可能仍有限制傳入 Unmanaged 數據的原則。
方法 isSaveToAllowedForLocation:withAccountId:
接受兩個自變數。 第一個自變數是 中IntuneMAMPolicy.h
定義之型IntuneMAMSaveLocation
別的列舉值。 第二個自變數是擁有位置之身分識別的 UPN。 如果不知道擁有者, nil
則可以改用 。
支援的儲存位置
Intune MAM SDK 支援中IntuneMAMPolicy.h
定義的下列儲存位置:
-
IntuneMAMSaveLocationOneDriveForBusiness
- 此位置代表 商務用 OneDrive 位置。 與 OneDrive 帳戶相關聯的身分識別應該作為第二個自變數傳入。 -
IntuneMAMSaveLocationSharePoint
- 此位置同時代表 SharePoint Online 和 Microsoft Entra 混合式新式驗證 SharePoint 內部部署位置。 與 SharePoint 帳戶相關聯的身分識別應該作為第二個自變數傳入。 -
IntuneMAMSaveLocationLocalDrive
- 此位置代表只能由應用程式存取的應用程式沙箱記憶體。 此位置 不應 用於透過檔案選擇器儲存,或透過共用擴充功能儲存至檔案。 如果身分識別可以與 app-sandbox 記憶體相關聯,則應該將它當做第二個自變數傳入。 如果沒有身分識別,nil
則應該改為傳遞 。 例如,應用程式可能會針對不同的帳戶使用個別的應用程式沙盒記憶體容器。 在此情況下,擁有所存取容器的帳戶應該作為第二個自變數使用。 -
IntuneMAMSaveLocationCameraRoll
- 此位置代表 iOS 相片庫。 因為沒有與 iOS 相片庫相關聯的帳戶,所以只有在使用此位置時,才nil
應該傳遞作為第二個自變數。 -
IntuneMAMSaveLocationAccountDocument
- 此位置代表先前未列出可系結至受管理帳戶的任何組織位置。 與位置相關聯的組織帳戶應該作為第二個自變數傳入。 例如,將相片上傳至組織與組織帳戶系結的LOB雲端服務。 -
IntuneMAMSaveLocationOther
- 此位置代表任何非組織、先前未列出或任何未知的位置。 如果帳戶與位置相關聯,則應該將它當做第二個自變數傳入。 否則,nil
應該改用 。
儲存位置的特殊考慮
位置 IntuneMAMSaveLocationLocalDrive
應該只用於只能由應用程式存取的應用程式沙盒記憶體。 若要檢查檔案是否可以透過檔案選擇器儲存至 iOS 裝置記憶體,或使用檔案應用程式 IntuneMAMSaveLocationOther
中可存取資料的其他方法。
如果未列出目的地位置, IntuneMAMSaveLocationAccountDocument
則應該使用 或 IntuneMAMSaveLocationOther
。 如果位置包含使用受控帳戶存取的組織數據, (即。應該使用 LOB 雲端服務來儲存組織資料) IntuneMAMSaveLocationAccountDocument
。 如果位置不包含組織數據,則 IntuneMAMSaveLocationOther
應該使用位置。
處理開放式案例
從新的雲端記憶體或本機位置匯入數據之前,應用程式必須先向 isOpenFromAllowedForLocation:withAccountId:
API檢查,以瞭解IT系統管理員是否允許資料傳輸。 這個方法會在物件上 IntuneMAMPolicy
呼叫。 就地開啟的數據不需要使用此 API 進行檢查。
注意事項
對象 IntuneMAMPolicy
應該代表接收數據之身分識別的原則。 若要取得 IntuneMAMPolicy
特定身分識別的物件,請呼叫 IntuneMAMPolicyManager
的 policyForAccountId:
方法。 如果接收帳戶是沒有身分識別的 Unmanaged 帳戶, nil
則可以傳遞至 policyForAccountId:
。 即使收到的數據不是組織數據, isOpenFromAllowedForLocation:withAccountId:
仍應呼叫 。 擁有數據的帳戶可能仍有限制傳出數據傳輸目的地的原則。
方法 isOpenFromAllowedForLocation:withAccountId:
接受兩個自變數。 第一個自變數是 中IntuneMAMPolicy.h
定義之型IntuneMAMOpenLocation
別的列舉值。 第二個自變數是擁有位置之身分識別的 UPN。 如果不知道擁有者, nil
則可以改用 。
支援的開啟位置
Intune MAM SDK 支援中IntuneMAMPolicy.h
定義的下列開放位置:
-
IntuneMAMOpenLocationOneDriveForBusiness
- 此位置代表 商務用 OneDrive 位置。 與 OneDrive 帳戶相關聯的身分識別應該作為第二個自變數傳入。 -
IntuneMAMOpenLocationSharePoint
- 此位置同時代表 SharePoint Online 和 Microsoft Entra 混合式新式驗證 SharePoint 內部部署位置。 與 SharePoint 帳戶相關聯的身分識別應該作為第二個自變數傳入。 -
IntuneMAMOpenLocationCamera
- 此位置 僅 代表相機所拍攝的新影像。 因為沒有與 iOS 相機相關聯的帳戶,所以只有在使用此位置時,才nil
應該傳遞作為第二個自變數。 若要從 iOS 相片庫開啟資料, 請使用IntuneMAMOpenLocationPhotos
。 -
IntuneMAMOpenLocationPhotos
- 此位置 僅 代表 iOS 相片庫內的現有影像。 因為沒有與 iOS 相片庫相關聯的帳戶,所以只有在使用此位置時,才nil
應該傳遞作為第二個自變數。 若要開啟直接從 iOS 相機擷取的影像,請使用IntuneMAMOpenLocationCamera
。 -
IntuneMAMOpenLocationLocalStorage
- 此位置代表只能由應用程式存取的應用程式沙箱記憶體。 此位置 不應 用於從檔案選擇器開啟檔案,或處理來自 openURL 的傳入檔案。 如果身分識別可以與 app-sandbox 記憶體相關聯,則應該將它當做第二個自變數傳入。 如果沒有身分識別,nil
則應該改為傳遞 。 例如,應用程式可能會針對不同的帳戶使用個別的應用程式沙盒記憶體容器。 在此情況下,擁有所存取容器的帳戶應該作為第二個自變數使用。 -
IntuneMAMOpenLocationAccountDocument
- 此位置代表先前未列出可系結至受管理帳戶的任何組織位置。 與位置相關聯的組織帳戶應該作為第二個自變數傳入。 例如,從組織與組織帳戶系結的 LOB 雲端服務下載相片。 -
IntuneMAMOpenLocationOther
- 此位置代表任何非組織位置、先前未列出的位置或任何未知的位置。 如果帳戶與位置相關聯,則應該將它當做第二個自變數傳入。 否則,nil
應該改用 。
開放位置的特殊考慮
位置 IntuneMAMOpenLocationLocalStorage
應該只用於應用程式可存取的應用程式沙盒記憶體。 若要檢查是否可以透過檔案選擇器或檔案應用程式中也可存取資料的其他方法,從 iOS 裝置記憶體開啟檔案, IntuneMAMOpenLocationOther
請使用 。
如果未列出目的地位置, IntuneMAMOpenLocationAccountDocument
則應該使用 或 IntuneMAMOpenLocationOther
。 如果位置包含使用受管理帳戶存取的組織數據。 例如,應該使用 LOB 雲端服務來儲存組織數據 IntuneMAMOpenLocationAccountDocument
。 如果位置不包含組織數據,則 IntuneMAMSaveLocationOther
應該使用位置。
處理傳入的 NSItemProviders 和檔案
若要處理從共用延伸模組接收的 NSItemProviders, IntuneMAMPolicy
可以使用 的 canReceiveSharedItemProvider:
方法,而不是 isOpenFromAllowedForLocation:withAccountId:
。 方法 canReceiveSharedItemProvider:
會採用 NSItemProvider,並傳回 IT 系統管理員是否允許它開啟至 IntuneMAMPolicy
對象的帳戶。 在呼叫這個方法之前,必須先載入專案。 例如,藉由呼叫 loadItemForTypeIdentifier:options:completionHandler
。 您也可以從傳遞至 NSItemProvider 載入呼叫的完成處理程式呼叫這個方法。
若要處理傳入檔案, IntuneMAMPolicy
可以使用 的 canReceiveSharedFile:
方法,而不是 isOpenFromAllowedForLocation:withAccountId:
。 方法 canReceiveSharedFile:
會採用 NSString 路徑,並傳回 IT 系統管理員是否允許它開啟至 IntuneMAMPolicy
對象的帳戶。
共用封鎖的警示
呼叫 或 isOpenFromAllowedForLocation:withAccountId:
API 並找到 封鎖儲存/開啟動作時,isSaveToAllowedForLocation:withAccountId:
可以使用 UI 協助程式函式。 如果應用程式想要通知使用者已封鎖動作,它可以呼叫 showSharingBlockedMessage
中 IntuneMAMUIHelper.h
定義的 API,以顯示具有一般訊息的警示檢視。
透過UIActivityViewController共享數據
從8.0.2版開始,Intune App SDK可以篩選UIActivityViewController
動作,讓只有 Intune 受控共用位置可供選取。 此行為將由應用程式數據傳輸原則控制。
「複製到」動作
透過 UIActivityViewController
和 UIDocumentInteractionController
共用檔時,iOS 會針對支援開啟共用檔的每個應用程式顯示「複製到」動作。 應用程式會透過其 Info.plist 中的 設定來宣告其支援 CFBundleDocumentTypes
的文件類型。 如果原則禁止共用至 Unmanaged 應用程式,將無法再使用這種共享類型。 作為取代,用戶必須將非UI動作延伸模組新增至其應用程式,並將它連結至 Intune App SDK。 動作延伸模組只是存根。 SDK 會實作檔案共享行為。 請遵循下列步驟:
您的應用程式必須在其 Info.plist
CFBundleURLTypes
下定義至少一個 schemeURL 及其對應專案-intunemam
。 例如:<key>CFBundleURLSchemes</key> <array> <string>launch-com.contoso.myapp</string> <string>launch-com.contoso.myapp-intunemam</string> </array>
您的應用程式和動作延伸模組必須至少共用一個應用程式群組,而且應用程式群組必須列在應用程式的和延伸模組的 IntuneMAMSettings 字典底下的 數位底下
AppGroupIdentifiers
。您的應用程式和動作延伸模組都必須具有 Keychain 共用功能,並共用
com.microsoft.intune.mam
密鑰鏈群組。將動作延伸模組命名為 「Open in」,後面接著應用程式名稱。 視需要將 Info.plist 當地語系化。
提供延伸模組的範本圖示,如 Apple 開發人員檔所述。 或者,IntuneMAMConfigurator 工具可用來從應用程式.app目錄產生這些映像。 若要執行這項作業,請執行:
IntuneMAMConfigurator -generateOpenInIcons /path/to/app.app -o /path/to/output/directory
在延伸模組 Info.plist 的 IntuneMAMSettings 底下,新增名為 且值為
OpenInActionExtension
YES 的布爾值設定。將 設定
NSExtensionActivationRule
為支援單一檔案,以及應用程式CFBundleDocumentTypes
前置com.microsoft.intune.mam
詞為的所有類型。 例如,如果應用程式支援 public.text 和 public.image,則啟用規則會是:SUBQUERY ( extensionItems, $extensionItem, SUBQUERY ( $extensionItem.attachments, $attachment, ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "com.microsoft.intune.mam.public.text" || ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "com.microsoft.intune.mam.public.image").@count == 1 ).@count == 1
更新現有的共享和動作延伸模組
如果您的應用程式已經包含共用或動作延伸模組,則必須修改它們NSExtensionActivationRule
才能允許 Intune 類型。 針對擴充功能所支援的每個類型,新增前面加上 com.microsoft.intune.mam
的其他類型。 例如,如果現有的啟用規則是:
SUBQUERY (
extensionItems,
$extensionItem,
SUBQUERY (
$extensionItem.attachments,
$attachment,
ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.url" ||
ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.plain-text" ||
ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.image" ||
ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.data"
).@count > 0
).@count > 0
它應該變更為:
SUBQUERY (
extensionItems,
$extensionItem,
SUBQUERY (
$extensionItem.attachments,
$attachment,
ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.url" ||
ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.plain-text" ||
ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.image" ||
ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "public.data" ||
ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "com.microsoft.intune.mam.public.url" ||
ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "com.microsoft.intune.mam.public.plain-text" ||
ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "com.microsoft.intune.mam.public.image" ||
ANY $attachment.registeredTypeIdentifiers UTI-CONFORMS-TO "com.microsoft.intune.mam.public.data"
).@count > 0
).@count > 0
注意事項
IntuneMAMConfigurator 工具可用來將 Intune 類型新增至啟用規則。 如果您現有的啟用規則使用預先定義的字串常數。 例如,NSExtensionActivationSupportsFileWithMaxCount、NSExtensionActivationSupportsText 等,述詞語法可能會變得相當複雜。 IntuneMAMConfigurator 工具也可用來將啟用規則從字串常數轉換成述詞字串,同時新增 Intune 類型。
UI 看起來應該像什麼
舊的 UI:
新的 UI:
為 iOS 應用程式啟用目標應用程式設定
MAM 目標設定 (也稱為 MAM 應用程式設定) 可讓應用程式透過 Intune SDK 接收設定資料。 此資料的格式和變體必須由應用程式擁有者/開發人員定義並傳達給 Intune 客戶。
Intune 系統管理員可以透過 Microsoft Intune 系統管理中心和 Intune 圖形 API,將設定資料設為目標並部署。 從適用於 iOS 的 Intune App SDK 7.0.1 版開始,參與 MAM 目標設定的應用程式可以透過 MAM 服務提供 MAM 目標設定數據。 應用程式設定數據會透過 MAM 服務直接推送至應用程式,而不是透過 MDM 通道。 Intune App SDK 提供類別來存取從這些控制台擷取的數據。 下列專案是必要條件:
您必須先向 Intune MAM 服務註冊應用程式,才能存取 MAM 目標設定 UI。 如需詳細資訊,請 參閱接收應用程式保護原則。
包含
IntuneMAMAppConfigManager.h
在應用程式的原始程序檔中。呼叫
[[IntuneMAMAppConfigManager instance] appConfigForAccountId:]
以取得應用程式組態物件。在物件上
IntuneMAMAppConfig
呼叫適當的選取器。 例如,如果您應用程式的金鑰是字串,您要使用stringValueForKey
或allStringsForKey
。 如需傳回值和錯誤狀況的詳細描述,請參閱IntuneMAMAppConfig.h
。
如需 圖形 API 功能的詳細資訊,請參閱 圖形 API 參考。
如需如何在 iOS 中建立 MAM 目標應用程式設定原則的詳細資訊,請參閱如何使用 iOS/iPadOS 的 Microsoft Intune 應用程式設定原則中的 MAM 目標應用程式設定一節。
遙測
根據預設,Intune App SDK for iOS 會收集下列事件類型的遙測:
應用程式啟動:若要協助 Microsoft Intune 瞭解已啟用 MAM 的應用程式使用方式,請依管理類型 (使用 MDM 的 MAM、不含 MDM 註冊的 MAM 等) 。
註冊呼叫:若要協助 Microsoft Intune 瞭解從用戶端起始註冊呼叫的成功率和其他效能計量。
Intune 動作:為了協助診斷問題並確保 Intune 功能,我們會收集 SDK 動作 Intune 相關信息。
注意事項
如果您選擇不要將 Intune App SDK 遙測數據傳送至行動應用程式 Microsoft Intune,則必須停用 Intune 應用程式 SDK 遙測擷取。 在 IntuneMAMSettings 字典中,將屬性 MAMTelemetryDisabled
設定為 YES。
Siri 意圖
如果您的應用程式與 Siri 意圖整合,或進行 Siri 意圖的註冊,請務必閱讀 中的 IntuneMAMPolicy.h
批areSiriIntentsAllowed
注,以取得支援此案例的指示。
注意事項
在 iOS 16 和更新版本中,新的應用程式意圖系統架構可用於建立 Swift 應用程式意圖。 實作應用程式意圖的應用程式應該先檢查 areSiriIntentsAllowed
使用者在 IntuneMAMPolicy 物件上的 屬性。
應用程式剪輯
如果您的應用程式包含應用程式剪輯目標,請務必確認應用程式剪輯中未顯示任何受控數據。 應用程式剪輯應視為非受控位置。 目前不支援將 SDK 整合到應用程式剪輯。
列印
如果您的應用程式實作列印,並在自定義功能表上提供自定義列印動作,請務必使用 UIPrintInteractionController.isPrintingAvailable()
來判斷您是否應該將列印動作新增至自定義功能表。
螢幕擷取封鎖
對於已針對 SDK 的 Xcode 15 和 v20.2.1 或更新版本更新為 v19.7.6 或更新版本的應用程式,如果您已 Send Org data to other apps
設定為 「所有應用程式」以外的值,則會套用螢幕擷取區塊。 如果您想要允許 iOS 裝置的螢幕擷取,您可以設定應用程式設定原則設定 「com.microsoft.intune.mam.screencapturecontrol = Disabled」。。
通知
如果您的應用程式收到通知,請務必閱讀 中的 IntuneMAMPolicy.h
批notificationPolicy
注,以取得支援此案例的指示。 建議應用程式註冊 IntuneMAMPolicyDidChangeNotification
中所 IntuneMAMPolicyManager.h
述的 ,並透過金鑰鏈將此值傳達給它們 UNNotificationServiceExtension
。
Safari Web 延伸模組
如果您的應用程式具有 Safari Web 擴充功能,並支援在擴充功能與父應用程式之間傳送數據,在某些情況下,您的應用程式可能需要支援封鎖數據。 若要封鎖數據,請在父應用程式中呼叫 isAppSharingAllowed
中的 API IntuneMAMPolicy.h
,然後封鎖 Web 擴充功能。
建置後腳本
IntuneMAMFrameworkPatcher 命令行工具不再必須作為應用程式建置程式的最後一個步驟執行。 不過,此工具可作為 GitHub 上適用於 iOS 的 Intune App SDK 的一部分。
重要事項
自 Intune MAM SDK 17.7.1 版起,不再需要此步驟。 不再必須執行 IntuneMAMFrameworkPatcher 命令行工具。
命令行使用方式
IntuneMAMFrameworkPatcher -i /path/to/directory_or_binary [-resign] [-verbose]
參數:
-
i
、r
、v
:此參數可讓您選擇安裝、移除或驗證應用程式建置程式 Intune MAM Framework 修補程式。 -
path
path
:應該是應用程式.app目錄的根目錄。 -
resign
:此resign
選項會指示工具在修補二進位檔之前,先放棄具有有效簽章的二進位檔。 如果專案包含具有 [ 內嵌] 和 [簽署 ] 選項的架構相依性或外掛程式,即使在最終應用程式簽署之前執行,或在最終應用程式簽署之後執行工具,也應該使用此選項。 -
verbose
:此verbose
選項會導致工具輸出已修補之每個二進位檔的相關信息。
其他使用方式:
移除修補程式:
IntuneMAMFrameworkPatcher -r /path/to/directory_or_binary [-resign] [-verbose]
確認修補程式:
IntuneMAMFrameworkPatcher -v /path/to/directory_or_binary [-verbose]
範例文稿:
IntuneMAMFrameworkPatcher -i $BUILT_PRODUCTS_DIR/$EXECUTABLE_FOLDER_PATH -resign -verbose
如需開始和下載 SDK 的詳細資訊,請參閱開始使用 Microsoft Intune App SDK。
結束準則
驗證儲存至限制/從限制開啟
如果您未 實作另存新檔和開啟控件,請略過。
在您的應用程式可以將資料儲存至雲端記憶體或本機位置,以及從雲端記憶體或本機位置開啟數據的每個案例中,自行重新分析。
為了簡單起見,這些測試會假設您的應用程式只支援從應用程式內的單一位置儲存至 商務用 OneDrive 並開啟數據。 不過,您必須驗證每個組合:針對應用程式允許儲存資料的每個位置,每個支援的儲存位置,以及應用程式允許開啟數據的每個支持開啟位置。
針對這些測試,請先安裝您的應用程式、將其與 SDK 整合,然後使用受控帳戶登入,再開始測試。
此外:
- 將受管理帳戶的原則設定為:
- 「將組織數據傳送至其他應用程式」至「受原則管理的應用程式」。
- 「從其他應用程式接收數據」至「受原則管理的應用程式」。
案例 | 前提條件 | 步驟 |
---|---|---|
儲存至,完全允許 | [儲存組織數據的複本] 原則設定為 [允許] | - 瀏覽至您的應用程式可將資料儲存至 商務用 OneDrive 的位置。 - 嘗試將檔案儲存至 商務用 OneDrive,並儲存至登入您應用程式的相同受管理帳戶。 - 確認允許儲存。 |
儲存至 、豁免 | - [儲存組織數據的複本] 原則設定為 [封鎖] - [允許使用者將複本儲存至選取的服務] 原則設定為 [僅 商務用 OneDrive] |
- 瀏覽至您的應用程式可將資料儲存至 商務用 OneDrive 的位置。 - 嘗試將檔案儲存至 商務用 OneDrive,並儲存至登入您應用程式的相同受管理帳戶。 - 確認允許儲存。 - 如果您的應用程式允許,請嘗試將檔案儲存到不同的雲端儲存位置,並確認該檔案遭到封鎖。 |
儲存至、封鎖 | [儲存組織數據的複本] 原則設定為 [封鎖] | - 瀏覽至您的應用程式可將資料儲存至 商務用 OneDrive 的位置。 - 嘗試將檔案儲存至 商務用 OneDrive,並儲存至登入您應用程式的相同受管理帳戶。 - 確認已封鎖儲存。 - 如果您的應用程式允許,請嘗試將檔案儲存到不同的雲端儲存位置,並確認該檔案遭到封鎖。 |
從開啟,完全允許 | [將數據開啟到組織檔] 原則設定為 [允許] | - 瀏覽至您的應用程式可從 商務用 OneDrive 開啟資料的位置。 - 嘗試從 商務用 OneDrive 開啟檔,從登入您應用程式記憶體的相同受管理帳戶開啟檔。 - 確認允許開啟。 |
從開啟,豁免 | - [將數據開啟至組織檔] 原則設定為 [封鎖] - [允許使用者從選取的服務開啟數據] 原則設定為 [僅限 商務用 OneDrive] |
- 瀏覽至您的應用程式可從 商務用 OneDrive 開啟資料的位置。 - 嘗試從 商務用 OneDrive 開啟檔,從登入您應用程式記憶體的相同受管理帳戶開啟檔。 - 確認允許開啟。 - 如果您的應用程式允許,請嘗試從不同的雲端儲存位置開啟另一個檔案,並確認該檔案已被封鎖。 |
開啟來源,封鎖 | [將數據開啟至組織檔] 原則設定為 [封鎖] | - 瀏覽至您的應用程式可從 商務用 OneDrive 開啟資料的位置。 - 嘗試從 商務用 OneDrive 開啟檔,從登入您應用程式記憶體的相同受管理帳戶開啟檔。 - 確認已封鎖開啟。 - 如果您的應用程式允許,請嘗試從不同的雲端儲存位置開啟另一個檔案,並確認該檔案已被封鎖。 |
驗證「複製到」動作
如果您未實作 「複製到」動作,請略過。
為了簡單起見,這些測試會假設您的應用程式只支援將數據複製到Microsoft Office 應用程式,例如 Microsoft Word、Excel 等。不過,您必須驗證每個組合:針對應用程式允許複製資料的每個位置,每個支援的複製到位置。
針對這些測試,請先安裝您的應用程式、將其與 SDK 整合,然後使用受控帳戶登入,再開始測試。
此外:
- 已完成 [複製到] 動作中的所有整合步驟,其中包含適用於Microsoft Word 的動作延伸模組,並成功建置和執行應用程式。
- 將受管理帳戶的原則設定為:
- 「將組織數據傳送至其他應用程式」至「受原則管理的應用程式」。
案例 | 前提條件 | 步驟 |
---|---|---|
選取要豁免的應用程式,無 | [將組織數據傳送至其他應用程式] 原則設定為 [受原則管理的應用程式] | - 瀏覽至您的應用程式可以將數據複製到Microsoft Word 的位置,然後啟動該數據的共享選項。 - 確認而不是看到 [複製到 Word] 作為選項,您可以看到 [在 Word 中開啟]。 - 按 [在 Word 中開啟],並確認已成功複製和檢視檔,因為 Word 也使用相同的受管理帳戶登入。 |
驗證列印動作
如果您未實作列印,請略 過。
在此測試中,請先安裝您的應用程式、將其與 SDK 整合,然後使用受管理的帳戶登入,再開始測試。
此外:
- 已順利完成 列印 和建置及執行應用程式的所有整合步驟。
- 當 APP IT 系統管理員不允許列印時,您的應用程式已實作警示/動作項目來處理案例。在此測試中,假設您的應用程式會在列印遭到封鎖時提示用戶發出警示。
案例 | 步驟 |
---|---|
列印組織數據,封鎖 | - 瀏覽至您的應用程式可以檢視資料的位置,並啟動該數據的共享選項。 - 按 「Print」。 - 確認區塊警示出現且不允許列印。 |
列印組織數據,允許 | - 瀏覽至您的應用程式可以檢視資料的位置,並啟動該數據的共享選項。 - 按 「Print」。 - 確認 [列印] 檢視出現,您可以選取印表機並順利完成動作。 |
驗證接收應用程式組態
如果您未 為 iOS 應用程式啟用目標應用程式設定,請略過。
Intune 負責將應用程式設定原則值傳遞給您的應用程式;之後,您的應用程式會負責使用這些值來變更應用程式內的行為或 UI。 完整的端對端測試應該涵蓋這兩個元件。
若要驗證 Intune 是否正確傳遞應用程式設定原則:
- 設定以您的應用程式為目標並部署至測試帳戶的應用程式設定原則。
- 如果您的應用程式支援受控裝置的應用程式設定,請參閱 受控iOS企業版裝置的應用程式設定原則。
- 如果您的應用程式支援 Managed 應用程式的應用程式設定,請參閱 適用於 Managed 應用程式的應用程式設定原則。
- 如果您的應用程式支援這兩種類型的應用程式設定,請建立這兩種類型的原則來進行測試。
- 使用您的測試帳戶登入您的應用程式。
- 瀏覽您的應用程式,以練習呼叫
IntuneMAMAppConfigManager
的appConfigForIdentity
每個程式代碼路徑。- 記錄呼叫
appConfigForIdentity
的結果是驗證傳遞哪些設定的簡單方式。 不過,因為系統管理員可以輸入應用程式組態設定的任何數據,所以請小心不要記錄任何私人用戶數據。
- 記錄呼叫
- 請參閱 驗證已套用的應用程式設定原則。
因為應用程式組態是應用程式特定的,所以只有您知道如何驗證應用程式應該如何變更每個應用程式組態設定的行為或 UI。
測試時,請考慮下列事項:
- 使用應用程式支援的每個值建立不同的測試應用程式設定原則,以確保涵蓋所有案例。
- 針對每個設定建立具有不同值的多個測試應用程式設定原則,以驗證應用程式的衝突解決邏輯。
後續步驟
如果您依照本指南的順序完成上述所有結束準則,恭喜您,您的應用程式現在已與 Intune 應用程式 SDK 完全整合,而且可以強制執行應用程式保護原則! 請查看其他重要的應用程式參與功能,例如 階段 5:多重身分識別、 階段 6:應用程式保護條件式存取支援 和 階段 7:Web 檢視功能 ,將這些功能整合到您的應用程式。
應用程式防護 現在是您應用程式的核心案例。 當您繼續開發應用程式時,請繼續參閱本指南和 附錄 。