Intune适用于 iOS 的应用 SDK - 应用参与功能

Microsoft Intune App SDK for iOS 允许将Intune应用保护策略 (也称为应用或 MAM 策略) 合并到本机 iOS 应用中。 Intune托管的应用程序是与 Intune App SDK 集成的应用程序。 当Intune主动管理应用时,Intune管理员可以轻松地将应用保护策略部署到Intune托管的应用。

注意

本指南分为几个不同的阶段。 首先查看 规划集成

阶段 4:应用参与功能

阶段Goals

  • 了解 Intune 应用 SDK 提供的各种应用参与功能。
  • 集成与应用和用户相关的应用参与功能。
  • 测试这些功能的集成。

什么是“应用参与功能”?

此 SDK 集成过程尝试将开发人员需要编写的特定于应用的代码量降至最低。 通过成功完成 SDK 集成的前一阶段,你的应用现在可以强制实施大多数应用保护策略设置,例如文件加密、复制/粘贴限制、屏幕截图阻止和数据传输限制。

但是,有些设置需要应用特定的代码才能正确强制执行;这些称为应用参与功能。 通常,SDK 没有足够的有关应用程序代码或最终用户方案的上下文来自动强制实施这些设置,因此依赖于开发人员适当地调用 SDK API。

应用参与功能不一定是可选的。 根据应用的现有功能,可能需要这些功能。

本指南的下一阶段将介绍几个重要的应用参与功能:

本指南的其余部分介绍了剩余的应用参与功能集:

  • 实现允许的帐户
  • 实现所需的文件加密
  • 实现另存为和打开控件
  • 通过 UIActivityViewController 共享数据
  • 为 iOS 应用程序启用目标配置 (APP/MAM 应用配置)
  • 遥测
  • Siri 意向
  • 应用剪辑
  • 打印
  • 通知
  • 生成后脚本

使用 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应用 SDK 中查询指定的允许帐户列表,然后确保仅允许的帐户登录到设备。

若要查询允许的帐户,应用应检查 allowedAccounts 上的 IntuneMAMEnrollmentManager属性。 属性 allowedAccounts 是包含允许帐户的数组或 nil。 如果 属性为 nil,则未指定允许的帐户。 启用 MSAL/OneAuth 的应用程序应使用 allowedAccountIds 实例上的 IntuneMAMEnrollmentManager 属性来查询 Entra 对象 ID。

应用还可以通过观察通知来响应 属性的IntuneMAMAllowedAccountsDidChangeNotification更改allowedAccounts。 每当属性值发生更改时, allowedAccounts 将发布通知。

对允许的帐户使用 API 时,需要满足以下要求:

  • 标识比较对于 UPN 和 OID 必须不区分大小写。
  • 标识比较必须同时支持 UPN 和 OID。
  • 应用程序必须具有日志记录,以诊断管理员指定的帐户与用户输入的帐户之间的任何不匹配。

实现所需的文件加密

isFileEncryptionRequired当 IT 管理员要求应用程序对保存到磁盘的任何文件使用Intune加密时,中IntuneMAMPolicy.h定义的 API 会通知应用程序。 如果 isFileEncryptionRequired 为 true,则应用负责确保应用保存到磁盘的任何文件都使用 、 IntuneMAMFileProtectionManager.hIntuneMAMFDataProtectionManager.h中的 IntuneMAMFile.hAPI 进行加密。

应用可以通过观察 IntuneMAMDataProtectionDidChangeNotification 中定义的通知来响应此策略中的 IntuneMAMFDataProtectionManager.h更改。

实现另存为和打开控件

Intune允许 IT 管理员选择托管应用可以保存数据或从中打开数据的存储位置。 应用可以使用 中IntuneMAMPolicy.h定义的 API 查询Intune MAM SDK 中允许的保存到存储位置isSaveToAllowedForLocation:withAccountId:。 应用还可以使用 isOpenFromAllowedForLocation:withAccountId: API(也在 中 IntuneMAMPolicy.h定义)查询 SDK 中允许的从存储位置打开。

此外,应用可以通过查询 canReceiveSharedItemProvider:IntuneMAMPolicy.h定义的 API 来验证是否允许来自共享扩展的传入数据。 应用还可以查询 API, canReceiveSharedFile: 以验证来自 openURL 调用的传入文件(也在 中定义) IntuneMAMPolicy.h

注意

自 MAM SDK v15.1.0 起,对内部行为进行了更改。

  • 帐户 nil 将不再被视为 LocalDrive/LocalStorage 位置的当前帐户。 传入 nil 帐户会将其视为非托管帐户。 由于应用的 可以控制其处理沙盒存储的方式,因此标识可以且应该与这些位置相关联。
  • 帐户 nil 将不再被视为单一标识应用的当前帐户。 nil现在,在单标识应用中传入帐户的处理与传递到多标识应用中的帐户完全相同。 如果要开发单一标识应用,请使用 IntuneMAMPolicyprimaryUser 引用当前帐户(如果托管)和 nil 引用当前帐户(如果不受管理)。

处理保存到方案

在将数据移动到新的云存储或本地位置之前,应用必须与 API 检查isSaveToAllowedForLocation:withAccountId:,以了解 IT 管理员是否允许数据传输。 对 对象调用 IntuneMAMPolicy 此方法。 无需使用此 API 检查正在就地编辑和保存的数据。

注意

对象 IntuneMAMPolicy 应表示所保存数据的所有者的策略。 若要获取 IntuneMAMPolicy 特定标识的对象,请调用 IntuneMAMPolicyManagerpolicyForAccountId: 方法。 如果所有者是没有标识的非托管帐户, nil 则可以传递到 policyForAccountId:。 即使保存的数据不是组织数据, isSaveToAllowedForLocation:withAccountId: 仍应调用。 拥有目标位置的帐户可能仍具有限制传入非托管数据的策略。

方法 isSaveToAllowedForLocation:withAccountId: 采用两个参数。 第一个参数是在 中IntuneMAMPolicy.h定义的类型的IntuneMAMSaveLocation枚举值。 第二个参数是拥有位置的标识的 UPN。 如果所有者未知, nil 可以改用。

支持的保存位置

Intune MAM SDK 提供对 中IntuneMAMPolicy.h定义的以下保存位置的支持:

  • IntuneMAMSaveLocationOneDriveForBusiness- 此位置表示OneDrive for Business位置。 与 OneDrive 帐户关联的标识应作为第二个参数传入。
  • IntuneMAMSaveLocationSharePoint- 此位置表示 SharePoint online 和 Microsoft Entra 混合新式身份验证 SharePoint 本地位置。 与 SharePoint 帐户关联的标识应作为第二个参数传入。
  • IntuneMAMSaveLocationLocalDrive - 此位置表示只能由应用访问的应用沙盒存储。 不应使用此位置通过文件选取器保存或通过共享扩展保存到文件。 如果标识可以与应用沙盒存储相关联,则应将其作为第二个参数传入。 如果没有标识, nil 应改为传递。 例如,应用可能会对不同的帐户使用单独的应用沙盒存储容器。 在这种情况下,拥有所访问容器的帐户应用作第二个参数。
  • IntuneMAMSaveLocationCameraRoll - 此位置表示 iOS 照片库。 由于没有与 iOS 照片库关联的帐户,因此仅 nil 应在使用此位置时作为第二个参数传递。
  • IntuneMAMSaveLocationAccountDocument - 此位置表示之前未列出的可绑定到托管帐户的任何组织位置。 与位置关联的组织帐户应作为第二个参数传入。 例如,将照片上传到绑定到组织帐户的组织 LOB 云服务。
  • IntuneMAMSaveLocationOther - 此位置表示任何非组织、以前未列出的位置或任何未知位置。 如果帐户与位置相关联,则应将其作为第二个参数传入。 否则, nil 应改用 。
保存位置的特殊注意事项

IntuneMAMSaveLocationLocalDrive 位置应仅用于只能由应用访问的应用沙盒存储。 为了检查文件是否可以通过文件选取器或其他一些可在“文件”应用中访问数据的方法保存到 iOS 设备存储, IntuneMAMSaveLocationOther 应使用。

如果未列出目标位置, IntuneMAMSaveLocationAccountDocument 则应使用 或 IntuneMAMSaveLocationOther 。 如果位置包含使用托管帐户访问的组织数据, (即。应使用 LOB 云服务来存储组织数据) IntuneMAMSaveLocationAccountDocument 。 如果位置不包含组织数据,则应 IntuneMAMSaveLocationOther 使用该位置。

处理开放方案

在从新的云存储或本地位置导入数据之前,应用必须使用 API 检查isOpenFromAllowedForLocation:withAccountId:,以了解 IT 管理员是否允许数据传输。 对 对象调用 IntuneMAMPolicy 此方法。 无需使用此 API 检查就地打开的数据。

注意

对象 IntuneMAMPolicy 应表示接收数据的标识的策略。 若要获取 IntuneMAMPolicy 特定标识的对象,请调用 IntuneMAMPolicyManagerpolicyForAccountId: 方法。 如果接收帐户是没有标识的非托管帐户, nil 则可以传递到 policyForAccountId:。 即使接收的数据不是组织数据, isOpenFromAllowedForLocation:withAccountId: 仍应调用。 拥有数据的帐户可能仍具有限制传出数据传输目标的策略。

方法 isOpenFromAllowedForLocation:withAccountId: 采用两个参数。 第一个参数是在 中IntuneMAMPolicy.h定义的类型的IntuneMAMOpenLocation枚举值。 第二个参数是拥有位置的标识的 UPN。 如果所有者未知, nil 可以改用。

支持的开放位置

Intune MAM SDK 提供对 中IntuneMAMPolicy.h定义的以下开放位置的支持:

  • IntuneMAMOpenLocationOneDriveForBusiness- 此位置表示OneDrive for Business位置。 与 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 应使用 。

如果未列出目标位置, 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 帮助程序函数来阻止保存/打开操作。 如果应用想要通知用户操作已被阻止,它可以调用 showSharingBlockedMessageIntuneMAMUIHelper.h 定义的 API,以显示带有泛型消息的警报视图。

通过 UIActivityViewController 共享数据

从版本 8.0.2 开始,Intune App SDK 可以筛选UIActivityViewController操作,以便只能选择Intune托管共享位置。 此行为将由应用程序数据传输策略控制。

“复制到”操作

通过 UIActivityViewControllerUIDocumentInteractionController共享文档时,iOS 对支持打开正在共享的文档的每个应用程序显示“复制到”操作。 应用程序通过其 CFBundleDocumentTypes Info.plist 中的 设置声明它们支持的文档类型。 如果策略禁止与非托管应用程序共享,则这种类型的共享将不再可用。 作为替代方法,用户必须向其应用程序添加非 UI 操作扩展,并将其链接到 Intune 应用 SDK。 操作扩展只是存根。 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. 将操作扩展命名为“打开”,后跟应用程序名称。 根据需要本地化 Info.plist。

  5. 提供 Apple 开发人员文档中所述的扩展的模板图标。 或者,可以使用 IntuneMAMConfigurator 工具从应用程序.app目录生成这些映像。 为此,请运行:

    IntuneMAMConfigurator -generateOpenInIcons /path/to/app.app -o /path/to/output/directory
    
  6. 在扩展的 Info.plist 中的 IntuneMAMSettings 下,添加名为 OpenInActionExtension 值为 YES 的布尔设置。

  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

新 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:] 以获取应用配置对象。

  • IntuneMAMAppConfig 对象调用相应的选择器。 例如,如果应用程序的密钥是字符串,则需要使用 stringValueForKeyallStringsForKey。 有关返回值和错误条件的详细说明,请参阅 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应用 SDK 遥测数据发送到Microsoft Intune,则必须禁用Intune应用 SDK 遥测捕获。 在 IntuneMAMSettings 字典中,将 属性 MAMTelemetryDisabled 设置为 YES。

Siri 意向

如果你的应用与 Siri 意向集成或进行 Siri 意向捐赠,请确保阅读 中的IntuneMAMPolicy.h注释areSiriIntentsAllowed,以获取有关支持此方案的说明。

注意

在 iOS 16 及更高版本中,新的应用意向系统框架可用于创建 Swift 应用意向。 实现应用意向的应用应首先在用户的 IntuneMAMPolicy 对象上检查 areSiriIntentsAllowed 属性。

应用剪辑

如果应用包含应用剪辑目标,请确保验证应用剪辑中未显示托管数据。 应用剪辑应被视为非托管位置。 目前不支持将 SDK 集成到应用剪辑中。

打印

如果应用实现打印并在自定义菜单上提供自定义打印操作,请务必利用 UIPrintInteractionController.isPrintingAvailable() 来确定是否应将打印操作添加到自定义菜单。

屏幕捕获阻止

对于已针对 SDK 的 Xcode 15 和 v20.2.1 或更高版本更新到 v19.7.6 或更高版本的应用,如果已配置为 Send Org data to other apps “所有应用”以外的值,则将应用屏幕捕获块。 如果希望允许 iOS 设备的屏幕捕获,可以配置应用配置策略设置“com.microsoft.intune.mam.screencapturecontrol = 禁用”。

通知

如果你的应用收到通知,请确保阅读 中的IntuneMAMPolicy.h注释notificationPolicy,以获取有关支持此方案的说明。 建议应用注册 IntuneMAMPolicyDidChangeNotification 中所述,IntuneMAMPolicyManager.h并通过密钥链将此值传达给它们UNNotificationServiceExtension

Safari Web 扩展

如果你的应用具有 Safari Web 扩展,并且支持在扩展和父应用程序之间发送数据,在某些情况下,应用程序可能需要支持阻止数据。 若要阻止数据,请在父应用程序中调用 isAppSharingAllowed 中的 IntuneMAMPolicy.hAPI,然后阻止 Web 扩展。

生成后脚本

IntuneMAMFrameworkPatcher 命令行工具不再作为应用程序生成过程的最后一步运行。 但是,此工具作为 GitHub 上适用于 iOS 的 Intune App SDK 的一部分提供。

重要

从 Intune MAM SDK 的 17.7.1 版本起,不再需要此步骤。 不再需要运行 IntuneMAMFrameworkPatcher 命令行工具。

命令行用法

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

参数

  • ir、、v:此参数允许你选择安装、删除或验证应用程序生成过程的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 应用 SDK 入门

退出条件

验证保存到/从限制打开

如果未 实现另存为和打开控件,请跳过。

重新熟悉应用可以将数据保存到云存储或本地位置以及从云存储或本地位置打开数据的每一种方案。

为简单起见,这些测试假定你的应用仅支持从应用中的单个位置保存到OneDrive for Business以及从中打开数据。 但是,你必须验证每个组合:针对应用允许保存数据的每个位置的每个受支持的保存位置,以及针对应用允许打开数据的每个位置的每个受支持的打开位置。

对于这些测试,请在开始测试之前安装应用,将其与 SDK 集成并使用托管帐户登录。

此外:

  • 将托管帐户的策略设置为:
    • “将组织数据发送到其他应用”到“策略托管应用”。
    • “从其他应用接收数据”到“策略托管应用”。
应用场景 前提 条件 步骤
保存到,完全允许 将“保存组织数据的副本”策略设置为“允许” - 导航到应用可以将数据保存到OneDrive for Business的位置。
- 尝试将文档保存到登录到应用的同一托管帐户OneDrive for Business。
- 确认是否允许保存。
保存到,豁免 - 将“保存组织数据的副本”策略设置为“阻止”
- “允许用户将副本保存到所选服务”策略设置为“仅OneDrive for Business”
- 导航到应用可以将数据保存到OneDrive for Business的位置。
- 尝试将文档保存到登录到应用的同一托管帐户OneDrive for Business。
- 确认是否允许保存。
- 如果应用允许,请尝试将文件保存到其他云存储位置,并确认它已被阻止。
保存到,已阻止 “保存组织数据的副本”策略设置为“阻止” - 导航到应用可以将数据保存到OneDrive for Business的位置。
- 尝试将文档保存到登录到应用的同一托管帐户OneDrive for Business。
- 确认已阻止保存。
- 如果应用允许,请尝试将文件保存到其他云存储位置,并确认它已被阻止。
打开自,完全允许 “将数据打开到组织文档中”策略设置为“允许” - 导航到应用可从OneDrive for Business打开数据的位置。
- 尝试从登录到应用存储的同一托管帐户OneDrive for Business打开文档。
- 确认是否允许打开。
打开自,已免除 - “将数据打开到组织文档中”策略设置为“阻止”
- “允许用户打开所选服务中的数据”策略设置为“仅OneDrive for Business”
- 导航到应用可从OneDrive for Business打开数据的位置。
- 尝试从登录到应用存储的同一托管帐户OneDrive for Business打开文档。
- 确认是否允许打开。
- 如果应用允许,请尝试从其他云存储位置打开另一个文件,并确认它已被阻止。
打开自,已阻止 设置为“阻止”的“向组织文档打开数据”策略 - 导航到应用可从OneDrive for Business打开数据的位置。
- 尝试从登录到应用存储的同一托管帐户OneDrive for Business打开文档。
- 确认打开已阻止。
- 如果应用允许,请尝试从其他云存储位置打开另一个文件,并确认它已被阻止。

验证“复制到”操作

如果未实现 “复制到”操作,请跳过。

为简单起见,这些测试假定你的应用仅支持将数据复制到 Microsoft Office 应用程序,例如 Microsoft Word、Excel 等。但是,必须验证每个组合:针对应用允许将数据复制到的每个位置的每个受支持的复制到位置。

对于这些测试,请在开始测试之前安装应用,将其与 SDK 集成并使用托管帐户登录。

此外:

  • 使用适用于 Microsoft 的操作扩展完成了“复制到”操作中的所有集成步骤,Word并成功生成和运行应用。
  • 将托管帐户的策略设置为:
    • “将组织数据发送到其他应用”到“策略托管应用”。
应用场景 前提 条件 步骤
选择要免除的应用,无 “将组织数据发送到其他应用”策略设置为“策略托管应用” - 导航到应用可以将数据复制到Microsoft Word的位置,并启动该数据的共享选项。
- 确认而不是看到“复制到Word”作为选项,你可以看到“在Word中打开”。
- 如果Word也使用同一托管帐户登录,请按“在 Word 中打开”并确认已成功复制和查看文档。

验证打印操作

如果未实现 打印,请跳过。

对于此测试,请安装应用,将其与 SDK 集成,并在开始测试之前使用托管帐户登录。

此外:

  • 成功完成了 打印 和生成并运行应用的所有集成步骤。
  • 应用已实现警报/操作项,以处理应用 IT 管理员不允许打印的情况。在此测试中,假设应用在打印被阻止时会提示最终用户发出警报。
应用场景 步骤
打印组织数据、块 - 导航到应用可以查看数据的位置,并启动该数据的共享选项。
- 按“打印”。
- 确认出现阻止警报且不允许打印。
打印组织数据,允许 - 导航到应用可以查看数据的位置,并启动该数据的共享选项。
- 按“打印”。
- 确认出现“打印”视图,你可以选择打印机并成功完成操作。

验证接收应用配置

如果未 为 iOS 应用程序启用目标应用配置,请跳过。

Intune负责将应用配置策略值传递到应用;之后,你的应用负责使用这些值来更改应用内的行为或 UI。 彻底的端到端测试应涵盖这两个组件。

若要验证Intune是否正确传递应用配置策略,请执行以下操作:

  1. 配置面向你的应用并部署到测试帐户的应用配置策略。
  2. 使用测试帐户登录到应用。
  3. 在应用中导航以练习调用 IntuneMAMAppConfigManager的每个 appConfigForIdentity代码路径。
    • 记录对 的调用 appConfigForIdentity 结果是验证传递了哪些设置的简单方法。 但是,由于管理员可以为应用配置设置输入任何数据,因此请注意不要记录任何专用用户数据。
  4. 请参阅 验证应用配置策略

由于应用配置特定于应用,因此只有你知道如何验证应用应如何更改每个应用配置设置的行为或 UI。

测试时,请考虑以下事项:

  • 使用应用支持的每个值创建不同的测试应用配置策略,确保涵盖所有方案。
  • 通过为每个设置创建具有不同值的多个测试应用配置策略来验证应用的冲突解决逻辑。

后续步骤

如果你按顺序遵循了本指南,并且已完成上述所有退出条件恭喜,你的应用现在已与 Intune 应用 SDK 完全集成,并且可以强制实施应用保护策略! 请检查其他重要的应用参与功能,例如阶段 5:多标识阶段 6:应用保护条件访问支持阶段 7:Web 视图功能,以将这些功能集成到应用中。

应用保护现在是应用的核心方案。 继续开发应用时,请继续参考本指南和 附录