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

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

注意

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

阶段 4:应用参与功能

阶段目标

  • 了解 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 App SDK 以获取指定的允许帐户列表,然后确保仅允许的帐户登录到设备。

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

应用还可以通过观察IntuneMAMAllowedAccountsDidChangeNotification通知来对属性的allowedAccounts更改做出反应。 每当属性值发生更改时 allowedAccounts ,都会发布通知。

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

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

实现所需的文件加密

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

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

实现另存为和打开控件

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

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

注意

从 MAM SDK v15.1.0 开始,已对内部行为进行了更改。

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

处理保存到方案

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

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

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

处理打开人场景

在从新的云存储或本地位置导入数据之前,应用必须与 isOpenFromAllowedForLocation:withAccountId: API 检查,以了解 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 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其中数据也可以在 Files 应用程序中访问,应使用。

如果目标位置未列出,则要么应该使用目标位置。IntuneMAMOpenLocationAccountDocumentIntuneMAMOpenLocationOther 如果位置包含使用托管帐户访问的组织数据。 例如,应使用用于存储组织数据 IntuneMAMOpenLocationAccountDocument 的 LOB 云服务。 如果位置不包含组织数据,则应使用该 IntuneMAMSaveLocationOther 位置。

处理传入的 NSItemProviders and 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 应用 SDK 可以筛选UIActivityViewController操作,以便只有 Intune 托管共享位置可供选择。 此行为将由应用程序数据传输策略控制。

“复制到”操作

通过 UIActivityViewController and UIDocumentInteractionController共享文档时,iOS 会针对支持打开正在共享的文档的每个应用程序显示“复制到”操作。 应用程序通过其 Info.plist 中的设置声明 CFBundleDocumentTypes 它们支持的文档类型。 如果策略禁止与非托管应用程序共享,则此类共享将不再可用。 作为替代,用户必须将非 UI 操作扩展添加到其应用程序,并将其链接到 Intune 应用 SDK。 Action 扩展只是一个存根。 SDK 将实现文件共享行为。 请按照下列步骤操作:

  1. 应用程序必须在其 Info.plist CFBundleURLTypes-intunemam 及其对应项下至少定义一个 schemeURL。 例如:

    <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 应用 SDK 提供了一个类,用于访问从这些主机检索到的数据。 以下事项是先决条件:

  • 访问 MAM 目标配置 UI 之前,需要向 Intune MAM 服务注册应用。 有关详细信息,请参阅 接收应用保护策略

  • 包含在 IntuneMAMAppConfigManager.h 应用的源文件中。

  • 调用 [[IntuneMAMAppConfigManager instance] appConfigForAccountId:] 以获取应用配置对象。

  • 在对象上 IntuneMAMAppConfig 调用相应的选择器。 例如,如果应用程序的键是字符串,则需要使用 stringValueForKey OR allStringsForKey. 有关返回值和错误条件的详细说明,请参阅 IntuneMAMAppConfig.h

有关图形 API 功能的详细信息,请参阅图形 API 参考

有关如何在 iOS 中创建 MAM 目标应用配置策略的详细信息,请参阅如何使用适用于 iOS/iPadOS 的 Microsoft Intune 应用配置策略中有关 MAM 目标应用配置的部分。

遥测

默认情况下,适用于 iOS 的 Intune 应用 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 Intent。 实现应用意向的应用应首先检查areSiriIntentsAllowed用户 IntuneMAMPolicy 对象上的属性。

应用轻拍

如果您的 App 包含轻 App 目标,请务必验证轻 App 中未显示任何托管数据。 应用剪辑应被视为非托管位置。 当前不支持 SDK 集成到 App 轻映像中。

打印

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

屏幕捕获阻止

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

通知

如果应用收到通知,请务必阅读 的notificationPolicyIntuneMAMPolicy.h注释,以获取有关支持此方案的说明。 建议应用注册 IntuneMAMPolicyDidChangeNotification ,并通过 IntuneMAMPolicyManager.h密钥链将此值传达给其 UNNotificationServiceExtension

Safari Web 扩展

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

生成后脚本

IntuneMAMFrameworkPatcher 命令行工具不再需要作为应用程序生成过程的最后一步运行。 但是,此工具可作为 GitHub 上适用于 iOS 的 Intune 应用 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 应用 SDK 入门

退出条件

验证保存到 / 从限制中打开

跳过:未 实现另存为和打开控件

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

为简单起见,这些测试将假定你的应用仅支持从应用内的单个位置保存到 OneDrive for Business 并从 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. 浏览应用以练习调用 IntuneMAMAppConfigManagerappConfigForIdentity每个代码路径。
    • 记录调用 appConfigForIdentity 结果是验证传递哪些设置的简单方法。 但是,由于管理员可以为应用配置设置输入任何数据,因此请注意不要记录任何私人用户数据。
  4. 请参阅 验证应用的应用配置策略

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

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

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

后续步骤

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

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