適用於 iOS 的 Intune App SDK - 應用程式參與功能

iOS 版 Microsoft Intune App SDK 可讓您將Intune應用程式保護原則 (也稱為 APP 或 MAM 原則) 納入原生 iOS 應用程式。 Intune 管理的應用程式是與 Intune App SDK 整合的應用程式。 當 Intune 主動管理應用程式時,Intune 系統管理員可以輕鬆地將應用程式保護原則部署到 Intune 管理的應用程式。

注意事項

本指南分為幾個不同的階段。 首先檢閱規劃整合。

第四階段:應用程式參與功能

階段目標

  • 了解 Intune App SDK 提供的各種應用程式參與功能。
  • 整合與您的應用程式和使用者相關的應用程式參與功能。
  • 測試這些功能的整合。

什麼是「應用程式參與功能」?

此 SDK 整合程式會嘗試將開發人員需要撰寫的應用程式特定程式碼量降至最低。 通過成功完成 SDK 整合的前幾個階段,您的應用程式現在可以強制執行大部分的應用程式保護原則設定,例如檔案加密、複製/貼上限制、螢幕擷取畫面封鎖和資料傳輸限制。

不過,有些設定需要特定於應用程式的程式碼才能正確執行;這些稱為應用程式參與功能。 通常,SDK 沒有足夠的關於應用程式程式碼或使用者案例的內容來自動強制執行這些設定,因此需要開發人員適當地呼叫 SDK API。

應用程式參與功能不一定是選用的。 視應用程式的現有功能而定,您可能需要這些功能。

本指南的下一階段將描述幾個重要的應用程式參與功能:

本指南的其餘部分將說明一組剩餘的應用程式參與功能:

  • 實作允許的帳戶
  • 實作檔案加密 必要
  • 實作另存新檔和開啟來源控制項
  • 透過 UIActivityViewController 分享資料
  • 為您的 iOS 應用程式啟用目標設定 (APP/MAM 應用程式設定)
  • 遙測
  • Siri 意圖
  • App 輕巧
  • 列印
  • 通知
  • 後建置指令碼

使用 API 自訂應用程式行為

Intune 應用程式 SDK 有數個 API 可供呼叫,以取得部署至應用程式的 Intune 應用程式保護原則相關資訊。 您可以使用此資料來自訂應用程式的行為。 下表提供一些您使用之基本 Intune 類別的相關資訊。

類別 描述
IntuneMAMPolicyManager.h IntuneMAMPolicyManager 類別公開部署至應用程式的 Intune 應用程式保護原則。 值得注意的是,它公開了對 啟用多重身分識別很有用的 API。
IntuneMAMPolicy.h IntuneMAMPolicy 類別公開一些適用於應用程式的 MAM 原則設定。 大部分的原則設定都會公開,讓應用程式可以自訂其 UI。 大部分的原則設定是由 SDK 強制執行,而非應用程式。 不過,有一些例外狀況。 應用程式開發人員應該檢閱此標頭中的註解,以判斷哪些 API 適用於其應用程式的案例。
IntuneMAMFileProtectionManager.h IntuneMAMFileProtectionManager 類別會公開 API,應用程式可用來根據提供的身分識別明確地保護檔案和目錄。 身分識別可以由 Intune 管理,也可以由非受控管理,且 SDK 會套用適當的 MAM 原則。 使用這個類別是選擇性的。
IntuneMAMDataProtectionManager.h IntuneMAMDataProtectionManager 類別會公開 API,應用程式可用來保護指定所提供身分識別的資料緩衝區。 身分識別可以由 Intune 管理,也可以由非管理,且 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 加密時,中定義的 API 會IntuneMAMPolicy.h通知應用程式。 如果isFileEncryptionRequired為 true,則應用程式有責任確保應用程式儲存至磁碟的任何檔案都使用 、 IntuneMAMFileProtectionManager.hIntuneMAMFDataProtectionManager.h中的 API IntuneMAMFile.h進行加密。

應用程式可以透過觀察中IntuneMAMFDataProtectionManager.h定義的IntuneMAMDataProtectionDidChangeNotification通知來回應此原則中的變更。

實作另存新檔和開啟來源控制項

Intune 可讓 IT 系統管理員選取受管理應用程式可以儲存資料或開啟資料的儲存位置。 應用程式可以使用 API 查詢 Intune MAM SDK 以取得允許的儲存儲存位置isSaveToAllowedForLocation:withAccountId:IntuneMAMPolicy.h如 。 應用程式也可以使用 isOpenFromAllowedForLocation:withAccountId: API 查詢 SDK 以取得允許的開啟儲存位置,也定義於 IntuneMAMPolicy.h

此外,應用程式可以查詢 canReceiveSharedItemProvider: API 來驗證是否允許來自共用擴充功能的傳入資料, IntuneMAMPolicy.h如 。 應用程式也可以查詢 API, canReceiveSharedFile: 以驗證來自 openURL 呼叫的傳入檔案,也定義於 IntuneMAMPolicy.h

注意事項

已變更自 MAM SDK v15.1.0 起的內部行為。

  • nil對於 LocalDrive/LocalStorage 位置,帳戶將不再被視為目前帳戶。 傳入 nil 帳戶會被視為非受管帳戶。 由於應用程式可以控制其處理沙箱儲存空間的方式,因此身分識別可以而且應該與這些位置相關聯。
  • nil對於單一身分識別應用程式,帳戶將不再被視為目前帳戶。 在單一身分應用程式中傳入 nil 帳戶的處理方式現在會與傳入多身分識別應用程式完全相同。 如果您正在開發單一身分識別應用程式,請使用 IntuneMAMPolicy's primaryUser 來參照當前帳戶(如果託管 nil ),如果非託管則參照當前帳戶。

處理儲存至案例

在將資料移至新的雲端儲存空間或本機位置之前,應用程式必須先檢查 API, isSaveToAllowedForLocation:withAccountId: 以瞭解 IT 系統管理員是否允許資料傳輸。 這個方法是在物件上 IntuneMAMPolicy 呼叫的。 不需要使用此 API 檢查就地編輯和儲存的資料。

注意事項

IntuneMAMPolicy物件應代表所儲存資料擁有者的原則。 若要取得 IntuneMAMPolicy 特定身分的物件,請呼叫 IntuneMAMPolicyManager的方法 policyForAccountId: 。 如果擁有者是沒有身分識別的未受管理帳戶, nil 則可以將 傳遞至 policyForAccountId:。 即使儲存的資料不是組織資料, isSaveToAllowedForLocation:withAccountId: 仍應調用。 擁有目的地位置的帳戶可能仍具有限制傳入非受管理資料的原則。

這個 isSaveToAllowedForLocation:withAccountId: 方法有兩個引數。 第一個引數是 中IntuneMAMPolicy.h所定義類型的IntuneMAMSaveLocation列舉值。 第二個引數是擁有位置之身分識別的 UPN。 如果擁有者未知, nil 可以改為使用。

支援的儲存位置

Intune MAM SDK 支援下列中定義IntuneMAMPolicy.h的儲存位置:

  • IntuneMAMSaveLocationOneDriveForBusiness- 此位置代表商務用 OneDrive 位置。 與 OneDrive 帳戶相關聯的身分識別應作為第二個引數傳入。
  • IntuneMAMSaveLocationSharePoint- 此位置同時代表 SharePoint Online 和 Microsoft Entra 混合式新式驗證 SharePoint 內部部署位置。 與 SharePoint 帳戶相關聯的身分識別應作為第二個引數傳入。
  • IntuneMAMSaveLocationLocalDrive - 此位置代表只能由應用程式存取的應用程式沙箱儲存空間。 這個位置 應用於透過檔案選擇器儲存,或透過共用延伸模組儲存到檔案。 如果身分識別可以與應用程式沙箱儲存體相關聯,則應將其作為第二個引數傳入。 如果沒有身分識別, nil 則應該改為傳遞。 例如,應用程式可能會針對不同的帳戶使用個別的應用程式沙箱儲存容器。 在此情況下,應該使用擁有所存取容器的帳戶作為第二個引數。
  • IntuneMAMSaveLocationCameraRoll - 此位置代表 iOS 照片庫。 因為沒有與 iOS 相片庫相關聯的帳戶,所以只有在使用此位置時,才 nil 應該傳遞為第二個引數。
  • IntuneMAMSaveLocationAccountDocument - 此位置代表先前未列出且可繫結至受管理帳戶的任何組織位置。 與位置相關聯的組織帳戶應作為第二個引數傳入。 例如,將相片上傳至與組織帳戶繫結的組織 LOB 雲端服務。
  • IntuneMAMSaveLocationOther - 此位置代表任何非組織、先前未列出或任何未知位置。 如果帳戶與位置相關聯,則應以第二個引數的形式傳入。 否則, nil 應改為使用 。
儲存位置的特殊考量

IntuneMAMSaveLocationLocalDrive 位置只能用於只能由應用程式存取的應用程式沙箱儲存空間。 為了檢查是否可以透過檔案選擇器或可以在 Files 應用程式IntuneMAMSaveLocationOther中存取資料的其他方法將檔案儲存到 iOS 裝置儲存。

如果未列出目的地位置,則要使用 IntuneMAMSaveLocationAccountDocumentIntuneMAMSaveLocationOther 應該使用。 如果位置包含使用受管理帳戶存取的組織資料, (即。應該使用用於儲存組織資料) IntuneMAMSaveLocationAccountDocument 的 LOB 雲端服務。 如果位置未包含組織資料,則應使用該 IntuneMAMSaveLocationOther 位置。

處理開啟案例

從新的雲端儲存空間或本機位置匯入資料之前,應用程式必須先檢查 API, isOpenFromAllowedForLocation:withAccountId: 以瞭解 IT 系統管理員是否允許資料傳輸。 這個方法是在物件上 IntuneMAMPolicy 呼叫的。 就地開啟的資料不需要使用此 API 進行檢查。

注意事項

IntuneMAMPolicy物件應代表接收資料之身分識別的原則。 若要取得 IntuneMAMPolicy 特定身分的物件,請呼叫 IntuneMAMPolicyManager的方法 policyForAccountId: 。 如果接收帳戶是沒有身分識別的未受管理帳戶, 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 的傳入檔案。 如果身分識別可以與應用程式沙箱儲存體相關聯,則應將其作為第二個引數傳入。 如果沒有身分識別, nil 則應該改為傳遞。 例如,應用程式可能會針對不同的帳戶使用個別的應用程式沙箱儲存容器。 在此情況下,應該使用擁有所存取容器的帳戶作為第二個引數。
  • IntuneMAMOpenLocationAccountDocument - 此位置代表先前未列出且可繫結至受管理帳戶的任何組織位置。 與位置相關聯的組織帳戶應作為第二個引數傳入。 例如,從繫結至組織帳戶的組織 LOB 雲端服務下載相片。
  • IntuneMAMOpenLocationOther - 此位置代表任何非組織位置、先前未列出或任何未知位置。 如果帳戶與位置相關聯,則應以第二個引數的形式傳入。 否則, nil 應改為使用 。
開放位置的特殊考量

IntuneMAMOpenLocationLocalStorage 位置應該只用於應用程式可存取的應用程式沙箱儲存空間。 為了檢查是否可以透過檔案選擇器或其他一些方法從 iOS 裝置儲存打開檔案,IntuneMAMOpenLocationOther其中資料也可以在 Files 應用程式中存取。

如果未列出目的地位置,則要使用 IntuneMAMOpenLocationAccountDocumentIntuneMAMOpenLocationOther 應該使用。 如果位置包含使用受管理帳戶存取的組織資料。 例如,應該使用用於儲存組織資料 IntuneMAMOpenLocationAccountDocument 的 LOB 雲端服務。 如果位置未包含組織資料,則應使用該 IntuneMAMSaveLocationOther 位置。

處理傳入的 NSItemProviders 和 Files

若要處理從共用延伸模組接收的 NSItemProviders, IntuneMAMPolicy可以使用 的方法 canReceiveSharedItemProvider: ,而不是 isOpenFromAllowedForLocation:withAccountId:canReceiveSharedItemProvider:此方法會採用 NSItemProvider,並傳回 IT 系統管理員是否允許在物件帳戶中IntuneMAMPolicy開啟它。 呼叫這個方法之前,必須先載入該項目。 例如,呼叫 loadItemForTypeIdentifier:options:completionHandler。 您也可以從傳遞至 NSItemProvider 載入呼叫的完成處理常式呼叫這個方法。

對於處理傳入檔案, IntuneMAMPolicy可以使用 的方法 canReceiveSharedFile: 代替 isOpenFromAllowedForLocation:withAccountId:。 此方法採用 canReceiveSharedFile: NSString 路徑,並傳回 IT 系統管理員是否允許在物件帳戶中 IntuneMAMPolicy 開啟它。

共用封鎖警示

當呼叫 OR isOpenFromAllowedForLocation:withAccountId: API 並isSaveToAllowedForLocation:withAccountId:發現封鎖儲存/開啟動作時,可以使用 UI 協助程式函式。 如果應用程式想要通知使用者動作已遭封鎖,它可以呼叫中IntuneMAMUIHelper.h定義的 showSharingBlockedMessage API,以一般訊息呈現警示檢視。

透過 UIActivityViewController 分享資料

從版本 8.0.2 開始,Intune App SDK 可以篩選UIActivityViewController動作,以便僅選擇 Intune 受控共用位置。 此行為將由應用程式資料傳輸原則控制。

'Copy To' 動作

透過 和 UIDocumentInteractionController共用UIActivityViewController文件時,iOS 會針對每個支援開啟要共用的文件的應用程式顯示「複製到」動作。 應用程式透過其 Info.plist 中的設定來 CFBundleDocumentTypes 宣告其支援的文件類型。 如果原則禁止共用至未受管理的應用程式,則無法再使用這種類型的共用。 若要取代,使用者必須將非 UI 動作擴充功能新增到其應用程式,並將其連結至 Intune App SDK。 Action 擴充功能只是一個存根。 SDK 將實現檔案共用行為。 請依照下列步驟執行:

  1. 您的應用程式必須在其 Info.plist CFBundleURLTypes 下定義至少一個 schemeURL 及其 -intunemam 對應項目。 例如:

    <key>CFBundleURLSchemes</key>
    <array>
        <string>launch-com.contoso.myapp</string>
          <string>launch-com.contoso.myapp-intunemam</string>
    </array>
    
  2. 您的應用程式和動作擴充功能必須至少共用一個應用程式群組,而且應用程式群組必須列在應用程式和擴充功能的 IntuneMAMSettings 字典下的陣列下 AppGroupIdentifiers

  3. 您的應用程式和動作擴充功能都必須具有鑰匙圈共用功能,並共用 com.microsoft.intune.mam 鑰匙圈群組。

  4. 將動作擴充功能命名為 “Open in”,後面接著應用程式名稱。 視需要當地語系化 Info.plist。

  5. 提供擴充功能的範本圖示,如 Apple 開發人員文件所述。 或者,您可以使用 IntuneMAMConfigurator 工具從應用程式.app目錄產生這些影像。 若要執行這項作業,請執行:

    IntuneMAMConfigurator -generateOpenInIcons /path/to/app.app -o /path/to/output/directory
    
  6. 在擴充功能之 Info.plist 中的 IntuneMAMSettings 底下,新增以值 YES 命名的布林值設定 OpenInActionExtension

  7. 將 設定為 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:

共用資料 - iOS 舊版共用 UI

新的使用者介面:

共用資料 - iOS 新的共用 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 提供類別,可存取從這些主控台擷取的資料。 下列項目為必要條件:

  • 在存取 MAM 目標設定 UI 之前,必須先向 Intune MAM 服務註冊應用程式。 如需詳細資訊,請參閱 接收應用程式防護原則

  • IntuneMAMAppConfigManager.h包含在您應用程式的來源檔案中。

  • 呼叫 [[IntuneMAMAppConfigManager instance] appConfigForAccountId:] 以取得 App Config 物件。

  • 在物件上 IntuneMAMAppConfig 呼叫適當的選取器。 例如,如果您的應用程式索引鍵是字串,您會想要使用 stringValueForKey OR allStringsForKey。 請參閱 IntuneMAMAppConfig.h 傳回值和錯誤條件的詳細說明。

如需 圖形 API 功能的詳細資訊,請參閱 圖形 API 參考

如需如何在 iOS 中建立 MAM 目標應用程式設定原則的詳細資訊,請參閱如何使用適用於 iOS/iPadOS 的 Microsoft Intune 應用程式設定原則中的 MAM 目標應用程式設定一節。

遙測

根據預設,適用於 iOS 的 Intune App SDK 會收集下列類型事件的遙測:

  • 應用程式啟動:協助Microsoft Intune依管理類型了解啟用 MAM 的應用程式使用方式 (具有 MDM 的 MAM、不包含 MDM 註冊的 MAM 等等) 。

  • 註冊通話: 協助 Microsoft Intune 瞭解從用戶端起始的註冊通話的成功率和其他效能計量。

  • Intune 動作:為了協助診斷問題並確保 Intune 功能,我們會收集 Intune SDK 動作的相關資訊。

注意事項

如果您選擇不從行動應用程式將 Intune App SDK 遙測資料傳送至 Microsoft Intune,您必須停用 Intune App SDK 遙測擷取。 在 IntuneMAMSettings 字典中將屬性 MAMTelemetryDisabled 設為 YES。

Siri 意圖

如果您的應用程式與 Siri 意圖整合或進行 Siri 意圖捐贈,請務必閱讀 中的areSiriIntentsAllowedIntuneMAMPolicy.h註解,以取得支援此案例的指示。

注意事項

在 iOS 16 及更新版本中,新的 App Intents 系統架構可用於建立 Swift App Intents。 實作應用程式意圖的應用程式應該先檢查 areSiriIntentsAllowed 使用者 IntuneMAMPolicy 物件上的屬性。

App 輕巧

如果您的應用程式包含輕巧應用程式目標,請務必確認輕巧應用程式中未顯示任何受管理資料。 該應用程式剪輯應視為未受管理的位置。 目前不支援將 SDK 整合到 App Locks 中。

列印

如果您的應用程式實作列印,並在自訂功能表上提供自訂列印動作,請務必利用來 UIPrintInteractionController.isPrintingAvailable() 判斷您是否應該將列印動作新增至自訂功能表。

螢幕擷取畫面封鎖

對於已更新至 SDK 的 Xcode 15 v19.7.6 或更新版本以及 Xcode 16 的 v20.2.1 或更新版本的應用程式,如果您已設定 Send Org data to other apps 為 [所有應用程式] 以外的值,將會套用螢幕擷取封鎖。 如果您想要允許 iOS 裝置的螢幕擷取,可以設定應用程式設定原則設定「com.microsoft.intune.mam.screencapturecontrol = 停用」。

通知

如果您的應用程式收到通知,請務必閱讀 中的IntuneMAMPolicy.h註解notificationPolicy,以取得支援此案例的指示。 建議應用程式註冊中所述IntuneMAMPolicyManager.hIntuneMAMPolicyDidChangeNotification應用程式,並透過鑰匙圈將此值傳達給其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, , rv此參數可讓您選擇安裝、移除或驗證應用程式建置程序的 Intune MAM 架構修補程式。
  • 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 整合,並在開始測試之前使用託管帳戶登入。

此外:

  • 已完成從 列印 的所有整合步驟,並成功建置並執行應用程式。
  • 您的應用程式已經實作警示/動作項目,以處理應用程式 IT 系統管理員不允許列印的情況。在此測試中,假設您的應用程式會在列印遭到封鎖時提示使用者警示。
案例 步驟
列印組織資料、封鎖 - 導航到您的應用程序可以查看數據的位置並啟動該數據的共享選項。
- 按“打印”。
- 確認出現封鎖警示且不允許列印。
列印組織資料,允許 - 導航到您的應用程序可以查看數據的位置並啟動該數據的共享選項。
- 按“打印”。
- 確認出現「列印」視圖,您可以選擇印表機並成功完成操作。

驗證接收中的應用程式設定

如果沒有,請略過 為您的 iOS 應用程式啟用目標應用程式設定

Intune 負責傳遞應用程式設定原則值至您的應用程式;之後,您的應用程式就會負責使用這些值來變更應用程式內的行為或 UI。 徹底的端到端測試應涵蓋這兩個組件。

若要驗證 Intune 是否正確傳遞應用程式設定原則:

  1. 設定應用程式設定原則,以您的應用程式為目標,並部署到您的測試帳戶。
  2. 使用您的測試帳戶登入您的應用程式。
  3. 瀏覽您的應用程式以練習呼叫 IntuneMAMAppConfigManagerappConfigForIdentity每個程式碼路徑。
    • 記錄呼叫 appConfigForIdentity 結果是驗證傳遞哪些設定的一種簡單方法。 不過,由於系統管理員可以輸入任何用於應用程式組態設定的資料,因此請小心不要記錄任何私人使用者資料。
  4. 請參閱 驗證套用的應用程式設定原則

由於應用程式設定是特定應用程式,只有您知道如何驗證應用程式應該如何變更每個應用程式設定的行為或 UI。

測試時,請考慮下列事項:

  • 透過為您的應用程式支援的每個值建立不同的測試應用程式設定原則,確保涵蓋所有案例。
  • 建立多個測試應用程式設定原則,每個設定都有不同的值,藉此驗證應用程式的衝突解決邏輯。

後續步驟

如果您依序遵循本指南,並已完成上述所有結束準則,恭喜,您的應用程式現在已與 Intune App SDK 完全整合,並可以強制執行應用程式保護原則! 請查看其他重要的應用程式參與功能,例如 階段 5:多重身分識別階段 6:應用程式保護條件式存取支援階段 7:Web 檢視功能 ,以將這些功能整合到您的應用程式中。

應用程式防護現在是應用程式的核心案例。 在繼續開發應用程式時,請繼續參閱本指南和 附錄