支持托管配置

一些专为企业设计的应用包含名为受管理的 IT 管理员可远程配置的配置文件。例如,应用可能 可以选择只在设备连接到 Wi-Fi 时同步数据。正在提供 IT 管理员能够指定托管配置并将其应用到 设备是所有解决方案集的一项要求。 您可以通过以下两种方式在 EMM 控制台中为托管配置提供支持:

  • 创建自己的界面并通过 managedConfiguration 应用设置 ApplicationPolicy
  • 将受管配置 iframe 添加到您的控制台(说明详细说明) 并通过 managedConfigurationTemplate 在以下位置应用设置: ApplicationPolicy


受管配置 iframe 是一个嵌入式界面,IT 管理员可以使用 保存、修改和删除应用的受管配置设置。您可以 例如,在应用的详细信息中显示按钮(或类似界面元素),或 设置页面。

IT 管理员可通过 iframe 执行的操作

<ph type="x-smartling-placeholder">
</ph> MCC iframe <ph type="x-smartling-placeholder">
</ph> 图 1.适用于 Gmail 的受管配置 iframe 示例。

设置并保存配置文件

iframe 会检索并显示 指定应用。IT 管理员可以在 iframe 中设置配置并保存 用作配置文件每当 IT 管理员保存新内容时 配置文件时,iframe 会返回一个名为 mcmId 的唯一标识符。 这样,IT 管理员可以为同一项 应用。

修改配置文件

iframe 能够显示已保存的配置文件。IT 管理员可以 更新个人资料中的设置并保存更改。

删除配置文件

IT 管理员可以从 iframe 中删除配置文件。此功能 默认处于停用状态

将 iframe 添加到您的控制台

生成网络令牌

使用enterprises.webTokens.create 以生成用于标识企业的网络令牌,并将 iframeFeature 设置为 MANAGED_CONFIGURATIONS。您必须将返回的令牌以及其他 参数。

呈现 iframe

以下示例展示了如何呈现受管配置 iframe:

<script src="https://apis.google.com/js/api.js"></script>
<div id="container" style="width: 1000px; height: 1000px"></div>
<script>
  gapi.load('gapi.iframes', function() {
    var options = {
      'url': 'https://play.google.com/managed/mcm?token=web_token&packageName=app_package_name',
      'where': document.getElementById('container'),
      'attributes': { style: 'height:1000px', scrolling: 'yes'}
    }

    var iframe = gapi.iframes.getContext().openChild(options);
  });
</script>

网址参数

下表列出了 iframe 网址的所有可用参数。

参数必填说明
token Enterprises.createWebToken 返回的令牌。
packageName 应用的商品 ID。例如: com.google.android.gm
mcmId 受管配置文件的 ID。
canDelete 如果为 TRUE,则会在 iframe 中启用允许 IT 权限的按钮 管理员删除受管配置资料。如果 FALSE(默认值),按钮处于停用状态。
locale 格式正确 BCP 47 language 标记,用于将 iframe 中的内容本地化。如果不是 则默认值为 en_US

iframe 事件

您还应该在集成过程中处理以下事件。

事件说明
onconfigupdated 用户更新现有的受管配置资料或创建新的托管配置文件 一个。这将返回一个对象,其中包含:
{
  "mcmId": The ID of the managed configurations profile.
  "name": The name of the updated or newly created managed configurations profile.
}
onconfigdeleted 用户删除现有的受管配置资料。此操作会返回 包含以下内容的对象:
{
  "mcmId": The ID of the managed configurations profile.
}

以下示例展示了如何监听 onconfigupdated

iframe.register('onconfigupdated', function(event) {
  console.log(event);
}, gapi.iframes.CROSS_ORIGIN_IFRAMES_FILTER);

对应用的受管配置架构的更新

如果开发者更新了应用的受管配置架构,则已保存 系统会自动更新配置文件例如,如果开发者 移除某个选项,则该选项将从所有现有配置中移除 应用的配置文件如果开发者添加了一个选项, 选项(由开发者定义)将添加到所有现有配置 应用的配置文件

将配置文件应用于政策

每个配置文件都会保存为唯一的 mcmId。要应用 配置文件更改为政策,请在以下位置指定 mcmIdmanagedConfigurationTemplate


了解选择/取消选择行为

受管配置 iframe 现在允许 IT 管理员明确取消选择 在不需要托管配置时应用限制。这个 与之前的行为不同,可能会对哪些限制 会发送到您的应用。

以下部分概述了托管配置 iframe 的行为方式, 新的取消选择模式以及开发者在 托管配置

对应用限制使用默认值

如果应用限制类型为 bool选择integer多选字符串 提供了默认值,那么系统会将该默认值作为 管理员保存托管配置时应用限制的值, 应用限制的所有更改。

例如,使用以下应用限制架构:

"restrictions": [{
    "key": "bool_key",
    "restrictionType": "bool",
    "defaultValue": {
        "type": "bool",
        "valueBool": false
    }
}]

发送到设备的应用限制将:

"restrictions": [{
    "key": "bool_key",
    "restrictionType": "bool",
    "value": {
        "type": "bool",
        "valueBool": false
    }
}]

不针对应用限制使用默认值

如果应用限制类型为 bool选择integer多选字符串 未提供默认值,那么这些应用限制将不会被 当管理员保存受管配置而未应用任何更改时,会包含在内 应用限制

例如,使用以下应用限制架构:

"restrictions": [{
    "key": "bool_key",
    "restrictionType": "bool"
    // defaultValue absent.
}]

发送到设备的应用限制将:

"restrictions": [
    // Empty
]

在架构中使用内容包

本部分适用于套装 应用限制:

在 app bundle 应用限制中,至少有一个子级应用限制具有默认值

如果软件包中包含 应用限制,至少要有一个类型为 bool 的子应用限制; 选择integer多选字符串 提供了默认值,那么系统会将该默认值作为 应用限制的值,系统会排除没有默认值的应用 管理员保存受管配置而不对其应用任何更改时触发 应用限制。

"restrictions": [{
    "key": "bundle_key",
    "restrictionType": "bundle",
    "nestedRestriction": [{
            "key": "bool_key_1",
            "restrictionType": "bool",
            "defaultValue": {
                "type": "bool",
                "valueBool": false
            }
        },
        {
            "key": "bool_key_2",
            "restrictionType": "bool"
            // defaultValue absent.
        }
    ]
}]

发送到设备的应用限制将:

"restrictions": [{
    "key": "bundle_key",
    "restrictionType": "bundle",
    "nestedRestriction": [{
            "key": "bool_key_1",
            "restrictionType": "bool",
            "value": {
                "type": "bool",
                "valueBool": false
            }
        },
        // The bool_key_2 child app restriction is not included.
    ]
}]

所有没有默认值的子级应用限制

如果软件包中包含 应用限制:带有类型的所有子级应用限制 bool选择integer多选字符串 未提供默认值,软件包 当管理员保存受管配置时,将不会包含应用限制 而无需对该应用限制应用任何更改。

例如,使用以下应用限制架构:

"restrictions": [{
    "key": "bundle_key",
    "restrictionType": "bundle",
    "nestedRestriction": [{
            "key": "bool_key_1",
            "restrictionType": "bool",
            // defaultValue absent.
        },
        {
            "key": "bool_key_2",
            "restrictionType": "bool"
            // defaultValue absent.
        }
    ]
}]

发送到设备的应用限制将:

"restrictions": [
    // Empty
]

在架构中使用 bundle_array

本部分适用于 bundle_arraybundle_array 应用限制。如果子级应用限制类型为 ,则不相关 bool选择integer多选字符串 具有默认值。

例如,使用以下应用限制架构:

"restrictions": [{
    "key": "bundle_array_key",
    "restrictionType": "bundleArray",
    "nestedRestriction": [{
        "key": "bundle_key",
        "restrictionType": "bundle",
        "nestedRestriction": [{
            "key": "bool_key",
            "restrictionType": "bool",
            "defaultValue": {
                "type": "bool",
                "valueBool": true
            }
        }]
    }]
}]

在 bundle_array 应用限制中至少有一个软件包组

如果至少有一个软件包 则会导致 bundle_array 当管理员保存受管配置时,应用限制将包含。

发送到设备的应用限制将:

"restrictions": [{
    "key": "bundle_array_key",
    "restrictionType": "bundleArray",
    "nestedRestriction": [{
        "key": "bundle_key",
        "restrictionType": "bundle",
        "nestedRestriction": [{
            "key": "bool_key",
            "restrictionType": "bool",
            "value": {
                "type": "bool",
                "valueBool": true
            }
        }]
    }]
}]

如果保存一个限制或捆绑包组,请所有限制/捆绑包 在整个 bundle_array 内,系统将按照以下优先级进行设置:

  • 管理员选择的值
  • 为该软件包/限制列出的默认值。
  • iFrame 中显示的值(如果没有默认值)

bundle_array 应用限制中没有软件包组

bundle_array 当管理员保存受管配置时,将不会包含应用限制 而不添加套装 。发送到设备的应用限制将:

"restrictions": [
    // Empty
]