Tareas de administración típicas

Los EMM pueden implementar una variedad de tareas de administración típicas en sus soluciones empresariales para Android, como las tareas que se muestran en esta guía. El código de muestra usa la biblioteca cliente de la API de EMM de Google Play para Java®.

Cómo buscar usuarios y obtener sus detalles

Muchas de las APIs de EMM de Google Play requieren un userId (además de un enterpriseId) para realizar algunas tareas asociadas con el usuario, como instalar una app, obtener derechos y licencias. Algunas llamadas requieren un objeto de usuario.

Si una organización usa Cuentas de Google Play administradas, debes mantener una asignación entre las direcciones de correo electrónico de los usuarios y los IDs de usuario de esas cuentas. Con Cuentas de Google, usas UsersListResponse.

Buscar usuarios

Esta muestra de código obtiene los IDs de usuario asociados con Cuentas de Google. No se aplica a las organizaciones que usan cuentas de Google Play administrado.

En este ejemplo, se supone que importaste los modelos User y UsersListResponse a tu código. Para obtener una cuenta de usuario específica, obtén su userId pasando el enterpriseId y el correo electrónico a UsersListResponse.

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

Obtén detalles del usuario

Una vez que tengas el userId, podrás recuperar otros detalles. Consulta Users.Get.

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

Otorga a un usuario acceso a las apps

Puedes usar las APIs de EMM de Google Play para controlar a qué apps puede acceder un usuario desde Google Play Store administrado. El acceso a una app incluye la posibilidad de buscarla, verla, instalarla y actualizarla. Existen tres niveles de acceso diferentes disponibles:

  • Solo apps permitidas: El usuario solo tiene acceso a apps específicas.
  • Todas las apps aprobadas: El usuario tiene acceso a todas las apps aprobadas para la empresa.
  • Todas las apps: El usuario tiene acceso a todas las apps que están disponibles públicamente en Google Play Store.

Otorga a un usuario acceso solo a apps específicas

En el siguiente ejemplo, se muestra cómo otorgar a un usuario acceso a un conjunto específico de apps desde Google Play Store administrado. El proceso incluye los siguientes pasos:

  • Recopila una lista de productIds (apps) que estén aprobadas para el usuario (productSet).
  • Para especificar que el usuario solo puede acceder a las apps de la lista determinada, establece el valor de la cadena productSetBehavior en "whitelist".
  • Aplica la lista de productIds y la configuración de comportamiento al conjunto de productos disponible del usuario mediante 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();
}

Otorga a un usuario acceso a todas las apps aprobadas

En el siguiente ejemplo, se muestra cómo otorgar a un usuario acceso a cualquier app que esté aprobada para la empresa desde Google Play Store administrado. El proceso incluye los siguientes pasos:

  • Para especificar que el usuario puede acceder a todas las apps aprobadas para la empresa, establece el valor de la cadena productSetBehavior en "allApproved".
  • Aplica esta configuración al usuario mediante 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();
}

Nota: Cuando productSetBehavior se configura como "allApproved", no necesitas especificar ningún productIds para productSet.

Otorga a un usuario acceso a todas las apps

En el siguiente ejemplo, se muestra cómo otorgar a un usuario la capacidad de Google Play Store administrado de acceder a cualquier app que esté disponible en la versión pública de Google Play Store. Los usuarios con acceso a todas las apps solo verán el diseño de la tienda de su empresa cuando abran Google Play administrado, pero podrán encontrar apps adicionales a través de la búsqueda.

Es posible que algunos usuarios de confianza, como los administradores de TI, requieran este mayor nivel de acceso para probar y evaluar apps antes de aprobarlas para la empresa. El proceso para otorgar a un usuario acceso a todas las apps incluye los siguientes pasos:

  • Para especificar que el usuario puede acceder a todas las apps de Google Play Store, establece el valor de la cadena productSetBehavior en "includeAll".
  • Aplica esta configuración al usuario mediante 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();
}

Nota: Cuando productSetBehavior se configura como "includeAll", no necesitas especificar ningún productIds para productSet.

Cómo crear un diseño para la tienda

Después de otorgarles a los usuarios acceso a las apps, agrúpalas en clústeres para mostrarlas en la vidriera administrada de Google Play Store.

Puedes crear un diseño de tienda personalizado y único para cada uno de tus clientes usando las APIs de Storelayoutpages y Storelayoutclusters. Un diseño típico consiste en un conjunto de páginas, y cada una puede contener clústeres de aplicaciones. Puedes colocar las apps relacionadas en el mismo clúster. Consulta Cómo crear diseños personalizados de Play Store para obtener detalles y ejemplos de código.

Cómo obtener los permisos de una app

Para agregar una app a un diseño personalizado de Play Store (o instalar una app de forma silenciosa en el dispositivo de un usuario) y mostrar la app de manera que el usuario pueda seleccionarla, el administrador debe aceptar los permisos para esa app para toda la organización. Los administradores pueden aceptar permisos de apps y marcarlas como aprobadas para su distribución en Google Play Console administrado (consulta la descripción general de Google Play administrado).

Te recomendamos que incorpores el iframe de permisos en tu consola de EMM. Esto significa que el usuario no tiene que navegar por separado a Google Play Console administrado. Usa Products.getApprovalUrl para obtener la URL del iframe.

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

Usa Products.approve para aceptar esos permisos.

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();
  }

Obtén los dispositivos de un usuario

Para realizar acciones específicas de los dispositivos, debes identificar los dispositivos asociados con un usuario. En este ejemplo, se muestra la lista de dispositivos de un userID determinado mediante DevicesListResponse.

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

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

Si el usuario aceptó las Condiciones del Servicio que se presentaron cuando intentó acceder a Google Play administrado por primera vez, la respuesta incluirá dispositivos no administrados (dispositivos con el tipo de administración unmanagedProfile).

Cómo obtener y establecer el estado de un dispositivo

Esta tarea de administración solo se aplica a las organizaciones que usan Cuentas de Google. No se aplica a las organizaciones que usan cuentas de Google Play administradas.

Cuando se activa la Cuenta de Google administrada del usuario en un dispositivo administrado, se habilita (o inhabilita) el acceso a los servicios de Google en función de lo siguiente:

Si la aplicación forzosa de EMM está inhabilitada, se ignora el estado del dispositivo y se otorga a la cuenta acceso a los servicios de Google cada vez que se activa en un dispositivo Android. Si la aplicación forzosa de EMM está habilitada, pero el estado del dispositivo no lo está, los usuarios no pueden instalar aplicaciones desde Google Play, y las APIs de EMM de Google Play no pueden instalar apps de forma silenciosa para ese usuario en el dispositivo.

En este ejemplo, se muestra cómo obtener el estado de un dispositivo determinado (especificado pasando enterpriseId, userId y deviceId).

Las operaciones getState() y setState() solo funcionan para dispositivos con un managementType de managedDevice o managedProfile (en el recurso Devices). Los dispositivos con un managementType de unmanagedProfile no se pueden controlar con estas APIs.

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

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

Configura la cadena AccountState en la constante correspondiente a fin de habilitar o inhabilitar los servicios de Google para la cuenta en un dispositivo.

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();
}

Instala de manera push una app en un dispositivo

Los administradores pueden instalar aplicaciones de forma silenciosa. No se requiere la interacción del usuario. En este ejemplo, se usa Installs.Update para instalar de manera silenciosa una app (identificada por productId) en un 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();
}

Si la app ya existe en el dispositivo y hay una versión actualizada disponible, se actualiza a la nueva versión.

Busca y obtén apps de la lista de solicitudes aprobadas.

Los administradores crean y administran una lista de apps aprobadas que están disponibles para sus usuarios en Google Play administrado. Los usuarios de dispositivos BYOD con perfiles de trabajo y los de dispositivos empresariales en los que la organización administra todo el dispositivo solo pueden descargar apps de esta lista aprobada.

Puedes personalizar tu consola de EMM para que incluya un cuadro de búsqueda para que los administradores solo puedan buscar apps en la lista de apps aprobadas. La función de búsqueda acepta los mismos parámetros que una función de búsqueda estándar de Google Play administrado, pero solo busca apps de la lista de apps aprobadas.

Por ejemplo, si el administrador desea enviar la instalación de una app de la lista de apps aprobadas a dispositivos de su empresa, puede usar esta función de búsqueda en la consola de EMM para encontrarla.

En tu consulta, puedes especificar una cantidad máxima de productos que debe contener el resultado, como setMaxResults(10L), solo lo suficiente para llenar la pantalla. El valor predeterminado es 100, que también es el máximo que se puede mostrar a la vez. Cuando el resultado contiene un token de paginación, hay más resultados que puedes recuperar si pasas el token de paginación.

En este ejemplo, se muestra cómo obtener los primeros 10 resultados de una búsqueda de apps de productividad. Consulta los Products.List.

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

Si el resultado de la búsqueda contiene un token de paginación, significa que la búsqueda generó más de setMaxResults resultados (o, en este ejemplo, más de 10). Para recuperar más resultados, vuelve a realizar la búsqueda y, luego, incluye el token de paginación en la solicitud. En este ejemplo, se obtienen los siguientes 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;
}