一些专为企业设计的应用包含名为受管理的 IT 管理员可远程配置的配置文件。例如,应用可能 可以选择只在设备连接到 Wi-Fi 时同步数据。正在提供 IT 管理员能够指定托管配置并将其应用到 设备是所有解决方案集的一项要求。 您可以通过以下两种方式在 EMM 控制台中为托管配置提供支持:
- 创建自己的界面并通过
managedConfiguration
应用设置 ApplicationPolicy。 - 将受管配置 iframe 添加到您的控制台(说明详细说明)
并通过
managedConfigurationTemplate
在以下位置应用设置: ApplicationPolicy
受管配置 iframe 是一个嵌入式界面,IT 管理员可以使用 保存、修改和删除应用的受管配置设置。您可以 例如,在应用的详细信息中显示按钮(或类似界面元素),或 设置页面。
IT 管理员可通过 iframe 执行的操作
<ph type="x-smartling-placeholder">![MCC iframe](https://developers-dot-devsite-v2-prod.appspot.com/static/android/work/play/emm-api/images/mcm_iframe.png?authuser=9&hl=zh-cn)
设置并保存配置文件
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
。要应用
配置文件更改为政策,请在以下位置指定 mcmId
:
managedConfigurationTemplate
。
了解选择/取消选择行为
受管配置 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
]