Alguns apps projetados para empresas incluem definições integradas chamadas configurações gerenciadas que os administradores de TI podem definir remotamente. Por exemplo, um app pode ter a opção de sincronizar dados apenas quando um dispositivo estiver conectado ao Wi-Fi. Fornecer aos administradores de TI a capacidade de especificar configurações gerenciadas e aplicá-las a dispositivos é um requisito para todos os conjuntos de soluções. Há duas maneiras de oferecer suporte a configurações gerenciadas no console de EMM:
- Crie sua própria interface e aplique as configurações com
managedConfiguration
em ApplicationPolicy. - Adicione o iframe de configurações gerenciadas ao console (instruções detalhadas abaixo) e aplique as configurações via
managedConfigurationTemplate
em ApplicationPolicy
O iframe de configurações gerenciadas é uma interface incorporável que permite que os administradores de TI salvem, editem e excluam as configurações gerenciadas de um app. É possível, por exemplo, exibir um botão (ou elemento de interface semelhante) na página de detalhes ou de configurações de um app que abre o iframe.
Ações disponíveis para administradores de TI no iframe
![iframe mcm](https://developers.google.cn/static/android/work/play/emm-api/images/mcm_iframe.png?authuser=6&hl=pt)
Definir e salvar perfis de configuração
O iframe recupera e mostra o esquema de configurações gerenciadas para um
app especificado. No iframe, um administrador de TI pode definir configurações e salvá-las
como um perfil de configuração. Sempre que um administrador de TI salva um novo
perfil de configuração, o iframe retorna um identificador exclusivo chamado mcmId
.
Dessa forma, os administradores de TI podem criar vários perfis para o mesmo app.
Editar perfis de configuração
O iframe pode exibir perfis de configuração salvos. Os administradores de TI podem atualizar as configurações em um perfil e salvar as alterações.
Excluir perfis de configuração
Os administradores de TI podem excluir perfis de configuração do iframe. Esse recurso fica desativado por padrão.
Adicionar o iframe ao seu console
Gerar um token da Web
Use enterprises.webTokens.create
para gerar um token da Web que identifique a empresa e defina iframeFeature
como
MANAGED_CONFIGURATIONS
. É necessário incluir o token retornado, junto com outros
parâmetros, ao renderizar o iframe no console.
Renderizar o iframe
Confira um exemplo de como renderizar o iframe de configurações gerenciadas:
<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>
Parâmetros de URL
A tabela abaixo lista todos os parâmetros disponíveis para o URL de iframe.
Parâmetro | Obrigatório | Descrição |
---|---|---|
token |
Sim | O token retornado de Enterprises.createWebToken . |
packageName |
Sim | O ID do produto do app. Por exemplo, com.google.android.gm . |
mcmId |
Não | O ID de um perfil de configurações gerenciadas. |
canDelete |
Não | Se TRUE, ativa um botão no iframe que permite que os administradores de TI excluam o perfil de configurações gerenciadas. Se FALSE (valor padrão), o botão será desativado. |
locale |
Não | Uma tag de idioma BCP 47 bem formada que é usada para localizar o conteúdo no iframe. Se não for especificado, o valor padrão será en_US. |
Eventos de iframe
Você também precisa processar os eventos a seguir como parte da integração.
Evento | Descrição |
---|---|
onconfigupdated |
O usuário atualiza um perfil de configurações gerenciadas ou cria
um novo. Isso retorna um objeto contendo:
{ "mcmId": The ID of the managed configurations profile. "name": The name of the updated or newly created managed configurations profile. } |
onconfigdeleted |
O usuário exclui um perfil de configurações gerenciadas. Isso retorna um objeto contendo:{ "mcmId": The ID of the managed configurations profile. } |
O exemplo abaixo mostra como ouvir onconfigupdated
, por exemplo:
iframe.register('onconfigupdated', function(event) {
console.log(event);
}, gapi.iframes.CROSS_ORIGIN_IFRAMES_FILTER);
Atualizações no esquema de configurações gerenciadas de um app
Se o desenvolvedor atualizar o esquema de configuração gerenciada de um app, os perfis de configuração salvos serão atualizados automaticamente. Por exemplo, se o desenvolvedor remover uma opção, ela será removida de todos os perfis de configuração existentes do app. Se o desenvolvedor adicionar uma opção, o valor padrão dela (definido pelo desenvolvedor) será adicionado a todos os perfis de configuração existentes do app.
Aplicar perfis de configuração à política
Cada perfil de configuração é salvo como um mcmId
exclusivo. Para aplicar um
perfil de configuração a uma política, especifique mcmId
em
managedConfigurationTemplate
.
Entender o comportamento de marcar/desmarcar
O iframe de configurações gerenciadas agora permite que os administradores de TI desmarquem explicitamente as restrições de apps de uma configuração gerenciada quando não precisarem delas. Essa é uma mudança em relação ao comportamento anterior e pode afetar as restrições enviadas ao app com base na seleção do administrador.
A seção abaixo descreve como o iframe de configurações gerenciadas se comporta com esse novo padrão de desmarcar e o que os desenvolvedores podem esperar que sejam enviados como parte da configuração gerenciada.
Usar o valor padrão para uma restrição de app
Se as restrições de app com tipo bool, choice, integer, múltipla seleção ou string forem fornecidas com um valor padrão, ele será aplicado como o valor da restrição de app quando os administradores salvarem a configuração gerenciada sem aplicar nenhuma mudança nessa restrição.
Por exemplo, com o seguinte esquema de restrição de apps:
"restrictions": [{
"key": "bool_key",
"restrictionType": "bool",
"defaultValue": {
"type": "bool",
"valueBool": false
}
}]
As restrições de apps enviadas para o dispositivo serão:
"restrictions": [{
"key": "bool_key",
"restrictionType": "bool",
"value": {
"type": "bool",
"valueBool": false
}
}]
Sem usar valores padrão para restrições de apps
Se as restrições de app com o tipo bool, choice, integer, múltipla seleção ou string não forem fornecidas com um valor padrão, essas restrições não serão incluídas quando os administradores salvarem a configuração gerenciada sem aplicar nenhuma mudança nessa restrição.
Por exemplo, com o seguinte esquema de restrição de apps:
"restrictions": [{
"key": "bool_key",
"restrictionType": "bool"
// defaultValue absent.
}]
As restrições de apps enviadas para o dispositivo serão:
"restrictions": [
// Empty
]
Como usar pacotes no esquema
Esta seção se aplica a restrições de apps de pacote:
Ter pelo menos uma restrição de app filho com um valor padrão em uma restrição de app em pacote
Se, na restrição de app de pacote, pelo menos uma das restrições de apps filhos com tipo bool, choice, número inteiro, múltipla seleção ou string for fornecida com um valor padrão, o valor padrão será aplicado como o valor da restrição do app, e aqueles sem valores padrão serão excluídos quando os administradores salvarem a configuração gerenciada sem aplicar nenhuma mudança a essa restrição do app.
"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.
}
]
}]
As restrições de apps enviadas para o dispositivo serão:
"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.
]
}]
Todas as restrições de apps filhos sem valores padrão
Se dentro da restrição de app de pacote todas as restrições de apps filhos com tipo bool, choice, número inteiro, múltipla seleção ou string não forem fornecidas com um valor padrão, a restrição de app do pacote não será incluída quando os administradores salvarem a configuração gerenciada sem aplicar nenhuma mudança à restrição do app.
Por exemplo, com o seguinte esquema de restrição de apps:
"restrictions": [{
"key": "bundle_key",
"restrictionType": "bundle",
"nestedRestriction": [{
"key": "bool_key_1",
"restrictionType": "bool",
// defaultValue absent.
},
{
"key": "bool_key_2",
"restrictionType": "bool"
// defaultValue absent.
}
]
}]
As restrições de apps enviadas para o dispositivo serão:
"restrictions": [
// Empty
]
Como usar bundle_array no esquema
Esta seção se aplica a restrições de app bundle_array. Não vai ser relevante se as restrições do app filho com tipo bool, choice, número inteiro, seleção múltipla ou string tiverem valores padrão.
Por exemplo, com o seguinte esquema de restrição de apps:
"restrictions": [{
"key": "bundle_array_key",
"restrictionType": "bundleArray",
"nestedRestriction": [{
"key": "bundle_key",
"restrictionType": "bundle",
"nestedRestriction": [{
"key": "bool_key",
"restrictionType": "bool",
"defaultValue": {
"type": "bool",
"valueBool": true
}
}]
}]
}]
Ter pelo menos um grupo de pacotes na restrição do app bundle_array
Se pelo menos um grupo de pacotes for definido, a restrição de aplicativo bundle_array será incluída quando os administradores salvarem a configuração gerenciada.
As restrições de apps enviadas para o dispositivo serão:
"restrictions": [{
"key": "bundle_array_key",
"restrictionType": "bundleArray",
"nestedRestriction": [{
"key": "bundle_key",
"restrictionType": "bundle",
"nestedRestriction": [{
"key": "bool_key",
"restrictionType": "bool",
"value": {
"type": "bool",
"valueBool": true
}
}]
}]
}]
Se uma restrição ou grupo de pacotes for salvo, todos os pacotes/restrições em todo o bundle_array
serão definidos com a seguinte precedência:
- o valor escolhido pelo administrador
- o valor padrão listado para esse pacote/restrição.
- o valor exibido no iFrame se não houver valor padrão
Nenhum grupo de pacotes na restrição de app bundle_array
A restrição de app bundle_array não será incluída quando os administradores salvarem a configuração gerenciada sem adicionar um grupo de pacotes. As restrições de apps enviadas para o dispositivo serão:
"restrictions": [
// Empty
]