Suporte para configurações gerenciadas

Alguns aplicativos desenvolvidos para empresas têm configurações integradas chamadas de gerenciamento personalizadas que os administradores de TI podem definir remotamente. Por exemplo, um app pode têm a opção de sincronizar dados apenas quando um dispositivo está conectado ao Wi-Fi. Fornecer Os administradores de TI podem especificar e aplicar configurações gerenciadas a de dispositivos é um requisito para todos os conjuntos de soluções. Há duas formas de oferecer suporte às configurações gerenciadas no console de EMM:

  • Crie sua própria interface e aplique as configurações com managedConfiguration ao ApplicationPolicy.
  • Adicione o iframe de configurações gerenciadas ao console (instruções detalhadas abaixo) e aplique as configurações usando managedConfigurationTemplate no ApplicationPolicy


O iframe de configurações gerenciadas é uma interface incorporável que permite aos administradores de TI salvar, editar e excluir as configurações gerenciadas de um app. É possível, por exemplo, exibir um botão (ou um elemento semelhante de IU) nos detalhes de um aplicativo ou página de configurações que abre o iframe.

Ações disponíveis no iframe para administradores de TI

iframe do mcm
Figura 1. Exemplo de iframe de configurações gerenciadas para o Gmail.

Definir e salvar perfis de configuração

O iframe recupera e exibe o esquema de configurações gerenciadas para um app especificado. No iframe, um administrador de TI pode definir configurações e economizar 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 com o nome mcmId. Isso permite que os administradores de TI criem 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 desativada por padrão.

Adicionar o iframe ao seu console

Gerar um token da Web

Usar enterprises.webTokens.create para gerar um token da Web que identifique a empresa e defina iframeFeature como MANAGED_CONFIGURATIONS. Você deve incluir o token retornado, junto com outros ao renderizar o iframe no seu 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âmetroObrigatórioDescriçã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 gerenciado.
canDelete Não Se for TRUE, ativa um botão no iframe que permite que o departamento de TI excluam o perfil de configurações gerenciadas. Se FALSE (valor padrão), o botão será desativado.
locale Não Um modelo bem formado BCP 47 language usada para localizar o conteúdo no iframe. Caso contrário especificado, o valor padrão será en_US.

Eventos de iframe

Processe também os eventos a seguir como parte da sua integração.

EventoDescrição
onconfigupdated O usuário atualiza um perfil de configurações gerenciadas ou cria um novo um. 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.
}

A amostra abaixo mostra como detectar 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, de configuração do Terraform são atualizados automaticamente. Por exemplo, se o desenvolvedor remover uma opção, ela será removida de todas as configurações atuais de perfil para o app. Se o desenvolvedor adicionar uma opção, o valor padrão do atributo (definida pelo desenvolvedor) será adicionada a todas as configurações atuais de perfil para o app.

Aplicar perfis de configuração à política

Cada perfil de configuração é salvo como um mcmId exclusivo. Para aplicar uma perfil de configuração a uma política, especifique mcmId em managedConfigurationTemplate.


Como entender o comportamento de marcar/desmarcar

O iframe de configurações gerenciadas agora permite que os administradores de TI desmarquem explicitamente a seleção as restrições de apps de uma configuração gerenciada quando não forem necessárias. Isso é uma mudança em relação ao comportamento anterior e pode afetar quais restrições são enviados ao seu app com base na seleção do administrador.

A seção abaixo descreve como o iframe de configurações gerenciadas se comporta esse novo padrão de cancelamento de seleção e o que os desenvolvedores podem esperar receber como parte a configuração gerenciada deles.

Usar o valor padrão para uma restrição de app

Se o app restringir com o tipo bool, faça o seguinte: escolha, número inteiro, seleção múltipla ou string forem fornecidos com um valor padrão, ele será aplicado conforme da restrição de apps quando os administradores salvam a configuração gerenciada sem e aplicar mudanças à restrição do app.

Por exemplo, com o seguinte esquema de restrição de app:

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

As restrições de apps enviadas ao 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 o app restringir com o tipo bool, faça o seguinte: escolha, número inteiro, seleção múltipla ou string não tiverem um valor padrão, essas restrições de aplicativo não serão incluído quando os administradores salvam a configuração gerenciada sem aplicar alterações. essa restrição de app.

Por exemplo, com o seguinte esquema de restrição de app:

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

As restrições de apps enviadas ao dispositivo serão:

"restrictions": [
    // Empty
]

Como usar pacotes no esquema

Esta seção se aplica a pacotes restrições de aplicativos:

Ter pelo menos uma restrição de app filho com um valor padrão em uma restrição de app do pacote

Se estiver dentro do pacote restrição de apps pelo menos uma das restrições de apps filhos com tipo bool, escolha, número inteiro, seleção múltipla ou string forem fornecidos com um valor padrão, ele será aplicado conforme o valor da restrição de app e aqueles sem valores padrão serão excluídos quando os administradores salvam a configuração gerenciada sem aplicar alterações a ela. restrição de apps.

"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 ao 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 estiver dentro do pacote restrição de app todas as restrições de apps filhos com tipo bool, escolha, número inteiro, seleção múltipla ou string não receber um valor padrão, o pacote a restrição de apps não será incluída quando os administradores salvarem a configuração gerenciada sem aplicar nenhuma mudança a essa restrição.

Por exemplo, com o seguinte esquema de restrição de app:

"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 ao dispositivo serão:

"restrictions": [
    // Empty
]

Como usar bundle_array no esquema

Esta seção se aplica a bundle_array. restrições de apps. Não será relevante se o app filho restringir o tipo bool; escolha, número inteiro, seleção múltipla ou string têm valores padrão.

Por exemplo, com o seguinte esquema de restrição de app:

"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 de app bundle_array

Se pelo menos um pacote de rede estiver definido, o argumento bundle_array restrição de apps será incluída quando os administradores salvarem a configuração gerenciada.

As restrições de apps enviadas ao 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 um grupo de pacotes for salvo, todas as restrições/pacotes em todo o bundle_array será definido pela 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 um valor padrão.
.

Nenhum grupo de pacotes na restrição do app bundle_array

bundle_array. a restrição de apps não será incluída quando os administradores salvarem a configuração gerenciada sem adicionar um pacote grupo. As restrições de apps enviadas ao dispositivo serão:

"restrictions": [
    // Empty
]