共用方式為


Intune App SDK for iOS - 應用程式參與功能

iOS 版 Microsoft Intune App SDK 允許你將Intune 應用程式保護政策 (也稱為 APP 或 MAM 政策) 整合到你的原生 iOS 應用程式中。 Intune 管理的應用程式是指與 Intune 應用程式 SDK 整合的應用程式。 當 Intune 主動管理應用程式時,Intune 管理員可以輕鬆部署應用程式保護政策到您的 Intune 管理應用程式。

注意事項

本指南分為數個不同階段。 先從《 規劃整合》開始。

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

賽段目標

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

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

此 SDK 整合流程試圖減少開發者需撰寫的應用程式專屬程式碼量。 成功完成SDK整合的前幾個階段後,你的應用程式現在可以強制執行大部分的應用程式保護政策設定,例如檔案加密、複製/貼上限制、截圖阻擋及資料傳輸限制。

不過,有些設定需要應用程式專用的程式碼才能正確執行;這些稱為應用程式參與功能。 通常,SDK 沒有足夠的上下文來自動執行這些設定,因此依賴開發者適當地呼叫 SDK API。

應用程式參與功能不一定是可有可無的。 根據你應用程式現有的功能,這些功能可能是必需的。

本指南的後續階段將介紹幾項重要的應用程式參與功能:

本指南其餘部分將介紹剩餘的應用程式參與功能:

  • 實作允許帳號
  • 實作檔案加密需求
  • 實作另存為(save-as)與開源(open-from)控制
  • 透過 UIActivityViewController 分享資料
  • 為您的 iOS 應用程式啟用 APP/MAM 應用程式設定) (目標設定
  • 遙測
  • Siri 意圖
  • 應用程式剪輯
  • 列印
  • 通知
  • 建置後腳本

用 API 自訂你的應用程式行為

Intune App SDK 有多個 API,你可以調用來取得部署在該應用程式上的 Intune 應用程式保護政策資訊。 你可以利用這些資料來自訂應用程式的行為。 下表提供一些你使用的 Intune 重要類別資訊。

類別 描述
IntuneMAMPolicyManager.h IntuneMAMPolicyManager 類別會揭露部署在該應用程式上的 Intune 應用程式保護政策。 值得注意的是,它公開了對 啟用多重身份有用的 API。
IntuneMAMPolicy.h IntuneMAMPolicy 類別會暴露一些適用於應用程式的 MAM 政策設定。 這些政策設定大多是公開的,讓應用程式可以自訂使用者介面。 大多數政策設定是由 SDK 強制執行,而非應用程式。 不過,有一些例外狀況。 應用程式開發者應檢視此標頭中的註解,以判斷哪些 API 適用於其應用程式的情境。
IntuneMAMFileProtectionManager.h IntuneMAMFileProtectionManager 類別會公開應用程式可用來明確保護檔案與目錄的 API,並根據所提供的身份。 身份可由 Intune 管理或非管理,SDK 會套用適當的 MAM 政策。 使用這門課是可選的。
IntuneMAMDataProtectionManager.h IntuneMAMDataProtectionManager 類別會揭露應用程式可用來保護資料緩衝區的 API,前提是給定已提供身份。 身份可以由 Intune 管理或非管理,SDK 會適當地套用加密。

實作允許帳號

Intune 允許 IT 管理員指定使用者可以登入哪些帳號。 應用程式可以查詢 Intune App SDK 指定的允許帳號清單,然後確保只有被允許的帳號登入裝置。

要查詢允許的帳號,應用程式應該會檢查該屬性。allowedAccountsIntuneMAMEnrollmentManager 屬性 allowedAccounts 要麼是包含允許帳戶的陣列,要麼是 nil。 如果財產為零,則未指定允許的帳戶。 支援 MSAL/OneAuth 的應用程式應該在實IntuneMAMEnrollmentManager例上使用該allowedAccountIds屬性來查詢 Entra 物件 ID。

應用程式也能透過觀察IntuneMAMAllowedAccountsDidChangeNotification通知來回應屬性的allowedAccounts變化。 每當房產價值變動時 allowedAccounts ,通知就會被張貼。

使用 API 以設定允許帳號時,需遵守以下要求:

  • 身份比較必須對 UPN 和 OID 不區分大小寫。
  • 身份比較必須同時支援 UPN 與 OID。
  • 應用程式必須有日誌記錄,以診斷管理員指定的帳號與使用者輸入帳號之間的任何不符。

實作檔案加密需求

isFileEncryptionRequiredIntuneMAMPolicy.h API 會在 IT 管理員要求應用程式對儲存到磁碟的檔案使用 Intune 加密時通知應用程式。 如果 isFileEncryptionRequired 為真,則應用程式有責任確保應用程式儲存到磁碟的檔案都透過 、 IntuneMAMFileProtectionManager.hIntuneMAMFDataProtectionManager.h和 中的 API IntuneMAMFile.h加密。

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

實作另存為(save-as)與開源(open-from)控制

Intune 允許 IT 管理員選擇受管理應用程式可以儲存或開啟資料的儲存位置。 應用程式可透過 isSaveToAllowedForLocation:withAccountId: API 查詢 Intune MAM SDK 允許的儲存儲存位置,該 API 定義於 IntuneMAMPolicy.h。 應用程式也可以透過 API 查詢 SDK 允許的開放儲存位置 isOpenFromAllowedForLocation:withAccountId: ,API 也定義於 IntuneMAMPolicy.h

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

注意事項

自 MAM SDK v15.1.0 起,內部行為已有所變更。

  • nil 帳戶將不再被視為 LocalDrive/LocalStorage 位置的當前帳戶。 轉帳 nil 帳戶會被視為非管理帳戶。 因為應用程式可以控制如何管理沙盒儲存,身份可以且應該與這些地點綁定。
  • nil單一身份應用程式的帳號將不再被視為當前帳號。 在單一身份應用程式中輸入 nil 帳號,現在會被視為與多身份應用程式相同的處理方式。 如果您正在開發單一身份應用程式,請使用 IntuneMAMPolicy「」 primaryUser 來指代受管理的活期帳戶, nil 若未管理則使用「活期帳戶」。

處理存檔情境

在將資料移至新的雲端儲存或本地位置之前,應用程式必須先向 isSaveToAllowedForLocation:withAccountId: API 確認 IT 管理員是否允許資料傳輸。 此方法在物件 IntuneMAMPolicy 上被呼叫。 資料被編輯並儲存在原地,不需要用這個 API 檢查。

注意事項

IntuneMAMPolicy 物件應代表被儲存資料擁有者的政策。 要取得 IntuneMAMPolicy 特定恆等式的物件,呼叫 IntuneMAMPolicyManager的方法 policyForAccountId: 。 如果擁有者是無身份的非管理帳戶, nil 則可轉入 policyForAccountId:。 即使儲存的資料不是組織資料, isSaveToAllowedForLocation:withAccountId: 仍應被調用。 擁有目的地位置的帳號可能仍有限制未受管理資料進入的政策。

isSaveToAllowedForLocation:withAccountId: 方法包含兩個參數。 第一個參數是定義於 IntuneMAMPolicy.h的 enum 值IntuneMAMSaveLocation。 第二個論點是擁有該地點的身份的UPN。 如果擁有者不明, nil 也可以改用。

支援的存檔位置

Intune MAM SDK 支援以下定義的IntuneMAMPolicy.h儲存地點:

  • IntuneMAMSaveLocationOneDriveForBusiness- 此地點代表商務用 OneDrive 地點。 與 OneDrive 帳號相關的身份應該作為第二個參數傳入。
  • IntuneMAMSaveLocationSharePoint- 此地點代表 SharePoint 線上及 Microsoft Entra 混合現代認證 SharePoint 本地地點。 與 SharePoint 帳號相關的身份應該作為第二個參數傳入。
  • IntuneMAMSaveLocationLocalDrive - 此位置代表只有應用程式能存取的應用程式沙盒儲存空間。 此位置 不應 用於檔案選擇器儲存或透過共享擴充功能儲存為檔案。 如果一個身份可以與應用沙盒儲存關聯,則應作為第二個參數傳遞。 如果沒有身份認同, nil 就應該轉交。 例如,一個應用程式可能會為不同帳號使用獨立的沙盒儲存容器。 在這種情況下,擁有被存取容器的帳號應該作為第二個參數。
  • IntuneMAMSaveLocationCameraRoll - 此地點代表 iOS 照片庫。 因為沒有與 iOS 照片庫綁定的帳號,當使用這個位置時,應該只 nil 當第二個參數傳遞。
  • IntuneMAMSaveLocationAccountDocument - 此地點代表任何先前未列出且可綁定於管理帳戶的組織地點。 與該地點相關的組織帳號應作為第二個參數。 例如,將照片上傳到綁定於組織帳號的 LOB 雲端服務。
  • IntuneMAMSaveLocationOther - 此地點代表任何非組織性、先前未列出或未知地點。 如果帳號與該地點相關聯,則應作為第二個參數傳送。 否則, nil 應該改用
存檔位置的特殊考量

IntuneMAMSaveLocationLocalDrive 位置僅用於應用程式沙盒儲存,且這些儲存空間只能由應用程式存取。 檢查檔案是否能透過檔案選擇器或其他能在 Files 應用程式IntuneMAMSaveLocationOther中存取資料的方式儲存到 iOS 裝置儲存,應該使用。

如果目的地沒列出 IntuneMAMSaveLocationAccountDocument ,就應該用 Or IntuneMAMSaveLocationOther 或。 如果該地點包含透過管理帳號存取的組織資料, (應該使用LOB雲端服務來儲存組織資料) IntuneMAMSaveLocationAccountDocument 。 如果地點不包含組織資料,則應該使用該 IntuneMAMSaveLocationOther 地點。

處理開放式情境

在從新的雲端儲存或本地地點匯入資料之前,應用程式必須先向 isOpenFromAllowedForLocation:withAccountId: API 確認 IT 管理員是否允許資料傳輸。 此方法在物件 IntuneMAMPolicy 上被呼叫。 在原地開啟的資料不需要用這個 API 檢查。

注意事項

物件 IntuneMAMPolicy 應代表接收資料的身份的政策。 要取得 IntuneMAMPolicy 特定恆等式的物件,呼叫 IntuneMAMPolicyManager的方法 policyForAccountId: 。 若接收帳戶為無身份的未管理帳戶, nil 則可轉入 policyForAccountId:。 即使接收的資料不是組織資料, isOpenFromAllowedForLocation:withAccountId: 仍應被調用。 擁有資料的帳戶可能仍有政策限制外傳資料的目的地。

isOpenFromAllowedForLocation:withAccountId: 方法包含兩個參數。 第一個參數是定義於 IntuneMAMPolicy.h的 enum 值IntuneMAMOpenLocation。 第二個論點是擁有該地點的身份的UPN。 如果擁有者不明, nil 也可以改用。

支援的開放地點

Intune MAM SDK 支援以下定義於 U.D.A.LIntuneMAMPolicy.h.(的開放地點):

  • IntuneMAMOpenLocationOneDriveForBusiness- 此地點代表商務用 OneDrive 地點。 與 OneDrive 帳號相關的身份應該作為第二個參數傳入。
  • IntuneMAMOpenLocationSharePoint- 此地點代表 SharePoint 線上及 Microsoft Entra 混合現代認證 SharePoint 本地地點。 與 SharePoint 帳號相關的身份應該作為第二個參數傳入。
  • IntuneMAMOpenLocationCamera - 此位置 代表相機新拍攝的影像。 因為 iOS 攝影機沒有相關聯帳號,當使用這個位置時,應該只 nil 當第二個參數傳遞。 要從 iOS 照片庫開啟資料,請使用 IntuneMAMOpenLocationPhotos
  • IntuneMAMOpenLocationPhotos - 此位置 代表 iOS 照片庫中的現有影像。 因為沒有與 iOS 照片庫綁定的帳號,當使用這個位置時,應該只 nil 當第二個參數傳遞。 若要直接從 iOS 相機開啟影像,請使用 IntuneMAMOpenLocationCamera
  • IntuneMAMOpenLocationLocalStorage - 此位置代表只有應用程式能存取的應用程式沙盒儲存空間。 此位置 不應 用於從檔案選擇器開啟檔案或處理來自 openURL 的進站檔案。 如果一個身份可以與應用沙盒儲存關聯,則應作為第二個參數傳遞。 如果沒有身份認同, nil 就應該轉交。 例如,一個應用程式可能會為不同帳號使用獨立的沙盒儲存容器。 在這種情況下,擁有被存取容器的帳號應該作為第二個參數。
  • IntuneMAMOpenLocationAccountDocument - 此地點代表任何先前未列出且可綁定於管理帳戶的組織地點。 與該地點相關的組織帳號應作為第二個參數。 例如,從組織的 LOB 雲端服務下載與該組織帳號綁定的照片。
  • IntuneMAMOpenLocationOther - 此地點代表任何非組織性地點、先前未列出或未知地點。 如果帳號與該地點相關聯,則應作為第二個參數傳送。 否則, nil 應該改用
開放地點的特殊考量

IntuneMAMOpenLocationLocalStorage 位置僅用於應用程式可存取的沙盒儲存空間。 檢查檔案是否能透過檔案選擇器或其他同時在 Files app IntuneMAMOpenLocationOther 存取的方式從 iOS 裝置儲存開啟,應該使用。

如果目的地沒列出 IntuneMAMOpenLocationAccountDocument ,就應該用 Or IntuneMAMOpenLocationOther 或。 如果該地點包含透過管理帳號存取的組織資料。 例如,應該使用用於儲存組織資料 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 物件的帳號中。

分享封鎖警示

isSaveToAllowedForLocation:withAccountId:isOpenFromAllowedForLocation:withAccountId:呼叫或 API 並找到時,可以用 UI 輔助功能來阻擋儲存/開啟動作。 如果應用程式想通知使用者該動作被封鎖,它可以呼叫 showSharingBlockedMessage 中定義的 IntuneMAMUIHelper.h API,呈現帶有通用訊息的警示檢視。

透過 UIActivityViewController 分享資料

從 8.0.2 版本開始,Intune App SDK 可以篩選UIActivityViewController動作,使得只有 Intune 管理的分享位置可供選擇。 此行為將由應用程式資料傳輸政策控制。

「複製到」動作

當透過 UIActivityViewControllerUIDocumentInteractionController分享文件時,iOS 會為每個支援開啟該文件的應用程式顯示「複製到」動作。 應用程式透過 CFBundleDocumentTypes Info.plist 中的設定宣告他們支援的文件類型。 若政策禁止與未管理應用程式分享,此類分享將不再可用。 作為替代方案,使用者必須在應用程式中新增非 UI Action 擴充功能,並將其連結到 Intune 應用程式 SDK。 Action 擴充功能只是個存根。 SDK 會實作檔案分享的行為。 請依照以下步驟操作:

  1. 你的應用程式必須至少在 Info.plist CFBundleURLTypes 下定義一個 schemeURL,並且與其 -intunemam 對應的 Config 一同設定。 例如:

    <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. 請依照蘋果開發者文件描述,提供擴充功能的範本圖示。 另外,也可以使用 IntuneMAMConfigurator 工具從應用程式.app目錄中產生這些影像。 若要執行這項作業,請執行:

    IntuneMAMConfigurator -generateOpenInIcons /path/to/app.app -o /path/to/output/directory
    
  6. 在擴充功能的 Info.plist 中,加入一個名為 OpenInActionExtension YES 的布林設定。

  7. 設定 支援NSExtensionActivationRule單一檔案及應用程式前綴com.microsoft.intune.mam中所有類型CFBundleDocumentTypes。 例如,若應用程式支援 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
    

更新現有的分享與行動擴充

如果你的應用程式已經包含 Share 或 Action 擴充功能,那麼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 類型。

使用者介面應該長什麼樣子

舊介面:

資料分享 - iOS 舊的分享介面

全新使用者介面:

資料分享 - iOS 新分享介面

為您的 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 目標設定介面。 欲了解更多資訊,請參閱 「接收應用程式保護政策」。

  • 請包含 IntuneMAMAppConfigManager.h 在你應用程式的原始檔案中。

  • 打電話 [[IntuneMAMAppConfigManager instance] appConfigForAccountId:] 取得應用程式設定物件。

  • 呼叫物件上的 IntuneMAMAppConfig 相應選擇器。 例如,如果你的應用程式鍵是字串,你會想使用 stringValueForKeyallStringsForKey。 詳見 IntuneMAMAppConfig.h 回傳值與錯誤條件的說明。

欲了解更多關於圖形 API 功能的資訊,請參閱 圖形 API 參考文獻

欲了解更多如何在 iOS 中建立 MAM 目標應用程式設定政策的資訊,請參閱《如何使用 iOS / iPadOS 的 Microsoft Intune 應用程式設定政策》中關於 MAM 目標應用程式設定的章節。

遙測

預設情況下,iOS 版 Intune App SDK 會收集以下類型的事件遙測資料:

  • 應用程式啟動:幫助Microsoft Intune了解依管理類型 (MAM 含 MDM、無 MDM 註冊的 MAM 等管理類型) 的應用使用情況。

  • 註冊通話:協助 Microsoft Intune 了解客戶端發起的註冊通話的成功率及其他績效指標。

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

注意事項

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

Siri 意圖

如果您的應用程式與 Siri Intents 整合或進行 Siri Intent 捐贈,請務必閱讀留IntuneMAMPolicy.hareSiriIntentsAllowed,了解如何支援此情境。

注意事項

在 iOS 16 及以上版本中,新增了一套用於建立 Swift 應用程式意圖的系統框架。 實作 App Intent 的應用程式應先檢查 areSiriIntentsAllowed 使用者在 IntuneMAMPolicy 物件上的屬性。

應用程式剪輯

如果您的應用程式包含應用程式剪輯目標,請務必確認該片段中沒有顯示任何受管理資料。 應用程式片段應被視為非管理位置。 目前不支援 SDK 與 App Clips 的整合。

列印

如果你的應用程式實作列印功能,並在自訂選單上提供自訂列印動作,務必利用 UIPrintInteractionController.isPrintingAvailable() 它來判斷是否應該將列印動作加入自訂選單。

螢幕擷取遮蔽

對於已更新至 v19.7.6(Xcode 15)及更新版本(Xcode 16)及更新至 v20.2.1 或更新的應用程式,若你設定 Send Org data to other apps 的值不是「所有應用程式」,螢幕截圖封鎖將會被套用。 如果你想讓 iOS 裝置允許螢幕錄影,可以設定應用程式設定的設定為「com.microsoft.intune.mam.screencapturecontrol = Disabled」。

通知

如果你的應用程式收到通知,請務必閱讀留IntuneMAMPolicy.hnotificationPolicy,了解如何支援此情境。 建議應用程式註冊於 IntuneMAMPolicyDidChangeNotificationIntuneMAMPolicyManager.h,並透過鑰匙圈將此數值傳達給它們 UNNotificationServiceExtension

Safari 網頁擴充功能

如果你的應用程式有 Safari 網頁擴充功能,且支援擴充功能與父應用程式之間的資料傳輸,在某些情況下,應用程式可能需要支援封鎖資料。 要阻擋資料,在父應用程式中呼叫 isAppSharingAllowed API IntuneMAMPolicy.h,然後封鎖網頁擴充功能。

建置後腳本

IntuneMAMFrameworkPatcher 命令列工具不再需要作為應用程式建置流程的最後一步執行。 不過,這個工具作為 Intune App SDK for iOS 的一部分,可以在 GitHub 上取得。

重要事項

自 Intune MAM SDK 17.7.1 版本起,此步驟不再必要。 IntuneMAMFrameworkPatcher 命令列工具已不再需要執行。

指令列使用

IntuneMAMFrameworkPatcher -i /path/to/directory_or_binary [-resign] [-verbose]

參數

  • ir, : v此參數允許您選擇安裝、移除或驗證 Intune MAM Framework Patcher 以進行應用程式建置過程。
  • 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 開始」。

退出標準

驗證存檔/開啟限制

如果你沒有 實作另存為(save-as)和開啟(open-from)控制,請跳過。

重新熟悉所有應用程式可以將資料儲存到雲端儲存或本地位置,以及從雲端儲存或本地儲存處存取資料的情境。

為了簡化起見,這些測試假設你的應用程式只支援從應用程式內單一位置儲存至商務用 OneDrive 的資料。 不過,你必須驗證每一個組合:每個支援的儲存位置都與應用程式允許儲存資料的地點相符,以及每個支援的開放位置與應用程式允許開啟資料的每個位置相符。

測試時,先安裝你的應用程式,整合到 SDK 裡,然後用受管帳號登入再開始測試。

此外:

  • 管理帳戶的政策設定為:
    • 「將組織資料傳送到其他應用程式」到「政策管理應用程式」。
    • 「從其他應用程式接收資料」到「政策管理應用程式」。
案例 前提條件 步驟
存檔至,完全允許 「儲存組織資料副本」政策設定為「允許」 - 導航到應用程式可將資料儲存到商務用 OneDrive 的位置。
- 嘗試將文件儲存到 商務用 OneDrive,並儲存到登入你應用程式的同一個受管理帳號。
- 確認存檔是否允許。
存檔至,免於豁免 - 「儲存組織資料副本」政策,設定為「封鎖」
- 「允許使用者將複製品儲存至特定服務」政策,僅設為「商務用 OneDrive」
- 導航到應用程式可將資料儲存到商務用 OneDrive 的位置。
- 嘗試將文件儲存到 商務用 OneDrive,並儲存到登入你應用程式的同一個受管理帳號。
- 確認存檔是否允許。
- 如果你的應用程式允許,嘗試將檔案儲存到其他雲端儲存地點並確認它是否被封鎖。
儲存到,已被封鎖 「儲存組織資料副本」政策設定為「封鎖」 - 導航到應用程式可將資料儲存到商務用 OneDrive 的位置。
- 嘗試將文件儲存到 商務用 OneDrive,並儲存到登入你應用程式的同一個受管理帳號。
- 確認存檔已被封鎖。
- 如果你的應用程式允許,嘗試將檔案儲存到其他雲端儲存地點並確認它是否被封鎖。
從完全允許的狀態開啟 「Open data into Org 文件」政策設定為「允許」 - 導航到您的應用程式可從商務用 OneDrive 開啟資料的位置。
- 嘗試從同一個管理帳號開啟 Windows 商務用 OneDrive 的文件,並登入你的應用程式儲存空間。
- 確認開放是否允許。
已開除,免於此 - 「Open data into Org 文件」政策設定為「封鎖」
- 「允許使用者從特定服務開啟資料」政策,僅設為「商務用 OneDrive」
- 導航到您的應用程式可從商務用 OneDrive 開啟資料的位置。
- 嘗試從同一個管理帳號開啟 Windows 商務用 OneDrive 的文件,並登入你的應用程式儲存空間。
- 確認開放是否允許。
- 如果你的應用程式允許,嘗試從不同的雲端儲存地點開啟另一個檔案並確認該檔案是否被封鎖。
開啟,已封鎖 「Open data into Org 文件」政策設定為「封鎖」 - 導航到您的應用程式可從商務用 OneDrive 開啟資料的位置。
- 嘗試從同一個管理帳號開啟 Windows 商務用 OneDrive 的文件,並登入你的應用程式儲存空間。
- 確認開口被封鎖。
- 如果你的應用程式允許,嘗試從不同的雲端儲存地點開啟另一個檔案並確認該檔案是否被封鎖。

驗證「複製到」動作

如果你沒有實作 「複製到」動作,請跳過。

為了簡化起見,這些測試假設你的應用程式只支援將資料複製到 Microsoft Office 應用程式,如 Microsoft Word、Excel 等。然而,你必須驗證每一個組合:每個支援的複製來源位置,與應用程式允許複製資料的每個位置一致。

測試時,先安裝你的應用程式,整合到 SDK 裡,然後用受管帳號登入再開始測試。

此外:

  • 從「複製到」動作,Microsoft Word 的動作擴充功能完成了所有整合步驟,並成功建置並執行應用程式。
  • 管理帳戶的政策設定為:
    • 「將組織資料傳送到其他應用程式」到「政策管理應用程式」。
案例 前提條件 步驟
選擇豁免應用程式,無 「將組織資料傳送到其他應用程式」政策設定為「政策管理應用程式」 - 導航到應用程式可將資料複製到 Microsoft Word 的位置,並啟動該資料的分享選項。
- 確認你看到的不是「複製到 Word」,而是「在 Word 中開啟」。
- 點擊「在 Word 開啟」並確認文件已複製並成功瀏覽,前提是 Word 也用同一管理帳號登入。

驗證列印動作

如果你還沒實作 列印,可以跳過。

測試前,先安裝你的應用程式,整合到 SDK 裡,然後用受管理帳號登入再開始測試。

此外:

  • 列印 開始的所有整合步驟都完成了,並成功建置並執行了應用程式。
  • 你的應用程式已經實作了警示/行動項目來處理當 APP IT 管理員不允許列印時的案件。在這個測試中,假設你的應用程式會在列印被阻擋時向終端使用者發出警示。
案例 步驟
列印組織資料,區塊 - 導向應用程式可查看資料的地點,並啟動該資料的分享選項。
- 按下「列印」。
- 確認區塊警報出現且不允許列印。
列印組織資料,允許 - 導向應用程式可查看資料的地點,並啟動該資料的分享選項。
- 按下「列印」。
- 確認「列印」檢視顯示,您可以選擇印表機並成功完成操作。

驗證接收應用程式設定

如果你沒有 啟用 iOS 應用程式的目標應用程式設定,請跳過。

Intune 負責將應用程式設定政策值傳送給你的應用程式;之後,應用程式則負責利用這些值在應用程式內改變行為或使用者介面。 全面的端到端測試應該涵蓋這兩個部分。

為了驗證 Intune 是否正確執行應用程式設定政策:

  1. 設定一個針對你的應用程式並部署到測試帳號的應用程式配置政策。
  2. 用你的測試帳號登入你的應用程式。
  3. 在應用程式中瀏覽,練習每條呼叫 IntuneMAMAppConfigManagerappConfigForIdentity程式碼路徑。
    • 記錄呼叫 appConfigForIdentity 的結果是驗證哪些設定被送達的簡單方法。 不過,由於管理員可以輸入任何應用程式設定資料,請小心不要記錄任何私人使用者資料。
  4. 請參見 「驗證已套用的應用程式設定政策」。

因為應用程式設定是針對特定應用程式的,只有你知道如何驗證應用程式在每個設定設定中應該如何改變行為或使用者介面。

測試時,請考慮以下幾點:

  • 透過建立不同的測試應用程式配置政策,確保所有情境都涵蓋,並針對應用程式支援的每個值建立。
  • 透過建立多個測試應用程式設定政策,為每個設定不同值,來驗證應用程式的衝突解決邏輯。

後續步驟

如果你依照本指南操作並完成上述所有退出條件,恭你,你的應用程式現在已完全整合 Intune App SDK,並能執行應用程式保護政策! 請參考其他重要的應用程式參與功能,如 第五階段:多重身份第六階段:應用程式保護條件存取支援 ,以及 第七階段:網頁檢視功能 ,將這些功能整合進你的應用程式中。

應用程式防護現在已成為你應用程式的核心情境。 在你持續開發應用程式時,請持續參考本指南和 附錄