Tarefas de gerenciamento comuns

Os EMMs podem implementar várias tarefas de gerenciamento típicas nas soluções corporativas para Android, como as tarefas mostradas neste guia. O exemplo de código usa a biblioteca de cliente da API Google Play EMM para Java®.

Procurar usuários e obter detalhes do usuário

Muitas das APIs de EMM do Google Play exigem um userId (além de um enterpriseId) para realizar algumas tarefas associadas ao usuário, como instalar um app, ter direitos e fazer o licenciamento. Algumas chamadas exigem um objeto de usuário.

Se uma organização usar contas do Google Play gerenciado, você vai manter um mapeamento entre os endereços de e-mail e os IDs dos usuários dessas contas. Com as Contas do Google, você usa o UsersListResponse.

Procurar usuários

Este exemplo de código recebe IDs de usuário associados às Contas do Google. e não a organizações que usam contas do Google Play gerenciado.

Este exemplo pressupõe que você importou os modelos User e UsersListResponse para seu código. Para acessar uma conta de usuário específica, receba o userId transmitindo o enterpriseId e o e-mail para UsersListResponse.

public UsersListResponse list(String enterpriseId, String email) throws
   IOException {
    return androidEnterprise
        .users()
        .list(enterpriseId, email)
        .execute();
}

Receber detalhes do usuário

Quando você tiver o userId, poderá extrair outros detalhes. Consulte Users.Get.

public User get(String enterpriseId, String userId) throws IOException {
    return androidEnterprise
        .users()
        .get(enterpriseId, userId)
        .execute();
}

Conceder acesso a apps para um usuário

Use as APIs de EMM do Google Play para controlar quais apps um usuário pode acessar na Google Play Store gerenciada. O acesso a um app inclui a capacidade de pesquisar, visualizar, instalar e atualizar o app. Existem três níveis diferentes de acesso disponíveis:

  • Somente apps permitidos:o usuário só tem acesso a apps específicos.
  • Todos os apps aprovados:o usuário tem acesso a todos os apps aprovados para a empresa.
  • Todos os apps:o usuário tem acesso a todos os apps disponíveis publicamente na Google Play Store.

Permitir que um usuário acesse apenas apps específicos

O exemplo abaixo mostra como conceder a um usuário acesso a um conjunto específico de apps da Google Play Store gerenciada. O processo inclui as seguintes etapas:

  • Colete uma lista de productIds (apps) que são aprovados para o usuário (productSet).
  • Para especificar que o usuário só pode acessar apps da lista especificada, defina o valor da string productSetBehavior como "whitelist".
  • Aplique a lista de productIds e a configuração de comportamento ao conjunto de produtos disponível do usuário usando setAvailableProductSet.
public ProductSet setProductSet(String enterpriseId, String userId,
    List<String> productIds) throws IOException {
  ProductSet productSet = new ProductSet();
  productSet.setProductId(productIds);
  productSet.setProductSetBehavior("whitelist");

  return androidEnterprise
      .users()
      .setAvailableProductSet(enterpriseId, userId, productSet)
      .execute();
}

Permitir que um usuário acesse todos os apps aprovados

O exemplo abaixo mostra como conceder a um usuário acesso a qualquer app aprovado para a empresa na Google Play Store gerenciada. O processo inclui as seguintes etapas:

  • Para especificar que o usuário pode acessar todos os apps aprovados para a empresa, defina o valor da string productSetBehavior como "allApproved".
  • Aplique essa configuração ao usuário que utiliza setAvailableProductSet.
public ProductSet setUserIncludeApprovedApps(String enterpriseId, String userId)
    throws IOException {
  ProductSet productSet = new ProductSet();
  productSet.setProductSetBehavior("allApproved");

  return androidEnterprise
      .users()
      .setAvailableProductSet(enterpriseId, userId, productSet)
      .execute();
}

Observação:quando productSetBehavior estiver definido como "allApproved", não será necessário especificar nenhum productIds para o productSet.

Permitir que um usuário acesse todos os apps

O exemplo abaixo mostra como conceder a um usuário a capacidade de acessar qualquer app disponível na Google Play Store pública na Google Play Store gerenciada. Os usuários com acesso a todos os apps só veem o layout da loja da empresa quando abrem o Google Play gerenciado, mas podem encontrar outros apps por meio de pesquisa.

Alguns usuários confiáveis, como administradores de TI, podem exigir esse nível de acesso maior para testar e avaliar apps antes de aprová-los para a empresa. O processo de concessão de acesso a todos os apps a um usuário inclui as seguintes etapas:

  • Especifique que o usuário pode acessar todos os apps na Google Play Store definindo o valor da string productSetBehavior como "includeAll".
  • Aplique essa configuração ao usuário que utiliza setAvailableProductSet.
public ProductSet setUserIncludeAllApps(String enterpriseId, String userId)
    throws IOException {
  ProductSet productSet = new ProductSet();
  productSet.setProductSetBehavior("includeAll");

  return androidEnterprise
      .users()
      .setAvailableProductSet(enterpriseId, userId, productSet)
      .execute();
}

Observação:quando productSetBehavior estiver definido como "includeAll", não será necessário especificar nenhum productIds para o productSet.

Criar um layout de loja

Depois de conceder aos usuários acesso aos apps, agrupe os apps em clusters para exibição na vitrine do Google Play gerenciado.

Você pode criar um layout de loja personalizado exclusivo para cada um dos seus clientes usando as APIs Storelayoutpages e Storelayoutclusters. Um layout típico consiste em um conjunto de páginas, e cada uma pode conter clusters de aplicativos. É possível colocar aplicativos relacionados no mesmo cluster. Consulte Criar layouts de loja personalizados para ver mais detalhes e um exemplo de código.

Receber as permissões de um app

Para adicionar um app a um layout de loja personalizado (ou instalar um app silenciosamente no dispositivo do usuário) e mostrar o app para que o usuário possa selecioná-lo, o administrador precisa aceitar permissões desse app para toda a organização. Os administradores podem aceitar permissões e marcar apps como aprovados para distribuição no Google Play Console. Consulte a visão geral do Google Play gerenciado.

Recomendamos incorporar o iframe de permissões ao console de EMM. Isso significa que o usuário não precisa navegar separadamente para o Google Play Console gerenciado. Use Products.getApprovalUrl para conseguir o URL do iframe.

public String getApprovalUrl(String enterpriseId, String productId)
    throws IOException {
  return androidEnterprise
      .products()
      .generateApprovalUrl(enterpriseId, productId)
      .execute()
      .getUrl();
}

Use Products.approve para aceitar essas permissões.

public void approveProduct(String enterpriseId,
    String productId,
    String approvalUrl) throws IOException {
  ProductsApproveRequest productsApproveRequest =
      new ProductsApproveRequest()
          .setApprovalUrlInfo(
              new ApprovalUrlInfo().setApprovalUrl(approvalUrl));
  androidEnterprise
      .products()
      .approve(enterpriseId, productId, productsApproveRequest)
      .execute();
  }

Acessar os dispositivos de um usuário

Para realizar ações específicas do dispositivo, você precisa identificar os dispositivos associados a um usuário. Este exemplo retorna a lista de dispositivos para um determinado userID usando DevicesListResponse.

public DevicesListResponse list(String enterpriseId, String userId) throws
   IOException {

    return androidEnterprise
        .devices()
        .list(enterpriseId, userId)
        .execute();
}

Se o usuário concordou com os Termos de Serviço apresentados quando tentou acessar o Google Play gerenciado pela primeira vez, a resposta incluirá dispositivos não gerenciados (dispositivos com o tipo de gerenciamento unmanagedProfile).

Acessar e definir o estado de um dispositivo

Esta tarefa de gerenciamento é válida apenas para organizações que usam Contas do Google. Ele não se aplica a organizações que usam contas do Google Play gerenciado.

Quando a Conta do Google gerenciada do usuário é ativada em um dispositivo gerenciado, o acesso aos serviços do Google é ativado (ou desativado) com base em:

Se a aplicação de EMM estiver desativada, o estado do dispositivo será ignorado, e a conta vai receber acesso aos Serviços do Google sempre que for ativada em um dispositivo Android. Se a aplicação de EMM estiver ativada, mas o estado do dispositivo não, os usuários não poderão instalar aplicativos do Google Play, e as APIs de EMM do Google Play não poderão instalar apps de forma silenciosa para o usuário no dispositivo.

Este exemplo mostra como conferir o estado de um determinado dispositivo, especificado transmitindo enterpriseId, userId e deviceId.

As operações getState() e setState() funcionam apenas para dispositivos com um managementType de managedDevice ou managedProfile (no recurso Devices). Dispositivos com uma managementType de unmanagedProfile não podem ser controlados com essas APIs.

public DeviceState getState(String enterpriseId, String userId, String
   deviceId) throws IOException {

    return androidEnterprise
        .devices()
        .getState(enterpriseId, userId, deviceId)
        .execute();
}

Ative ou desative os Serviços do Google para a conta em um dispositivo definindo a string AccountState como a constante apropriada.

public DeviceState setState(String enterpriseId, String userId, String
   deviceId, String accountState) throws IOException {

    DeviceState deviceState = new DeviceState();
    deviceState.setAccountState(accountState);

    return androidEnterprise
        .devices()
        .setState(enterpriseId, userId, deviceId, deviceState)
        .execute();
}

Instalar por push um app em um dispositivo

Os administradores podem instalar aplicativos silenciosamente. A interação do usuário não é necessária. Esse exemplo usa Installs.Update para instalar silenciosamente um app (identificado por productId) em um dispositivo (identificado por deviceId).

public Install update(String enterpriseId, String userId, String
   deviceId, String productId) throws IOException {

    return androidEnterprise
        .installs()
        .update(enterpriseId, userId, deviceId, productId,
           new Install())
        .execute();
}

Se o app já existir no dispositivo e uma versão atualizada estiver disponível, ele vai ser atualizado para a nova versão.

Pesquisar e instalar apps na lista de aprovados

Os administradores criam e gerenciam uma lista de apps aprovados disponíveis para os usuários no Google Play gerenciado. Os usuários de dispositivos BYOD com perfis de trabalho e de dispositivos corporativos, em que todo o dispositivo é gerenciado pela organização, só podem fazer o download de apps desta lista aprovada.

Você pode personalizar o console de EMM para incluir uma caixa de pesquisa para que os administradores possam pesquisar apenas os apps aprovados. A função de pesquisa aceita os mesmos parâmetros de uma função de pesquisa padrão do Google Play gerenciado, mas só busca apps na lista de apps aprovados.

Por exemplo, se o administrador quiser fazer a instalação por push de um app na lista de apps aprovados para dispositivos da empresa, ele vai poder usar essa função de pesquisa no console de EMM para encontrar o app.

Na consulta, você pode especificar um número máximo de produtos que o resultado precisa conter, como setMaxResults(10L), apenas o suficiente para preencher a tela. O valor padrão é 100, que também é o máximo que pode ser retornado de uma vez. Quando o resultado contém um token de paginação, há mais resultados que podem ser recuperados com a transmissão desse token.

Este exemplo mostra como conferir os 10 primeiros resultados de uma pesquisa por apps de produtividade. Consulte os Products.List.

public List searchProducts(String enterpriseId) throws IOException {
  ProductsListResponse executeResult =
      androidEnterprise
          .products()
          .list(enterpriseId)
          .setMaxResults(10L)
          .setQuery("productivity")
          .execute();
  return executeResult.getProduct();
}

Se o resultado da pesquisa contiver um token de paginação, isso significa que a pesquisa gerou mais de setMaxResults resultados, ou mais de 10 neste exemplo. Para recuperar mais resultados, refaça a pesquisa e inclua o token de paginação na solicitação. Este exemplo mostra os próximos 10 resultados.

public ProductsListResponse continueSearch(
    String enterpriseId, ProductsListResponse previousResponse) throws IOException {
  ProductsListResponse nextResults =
      androidEnterprise
          .products()
          .list(enterpriseId)
          .setMaxResults(10L)
          .setToken(previousResponse.getTokenPagination().getNextPageToken())
          .setQuery("productivity")
          .execute();
  return nextResults;
}