Типичные задачи управления

EMM могут реализовать ряд типичных задач управления в своих корпоративных решениях для Android, таких как задачи, показанные в этом руководстве. В примере кода используется клиентская библиотека Google Play EMM API для Java®.

Поиск пользователей и получение сведений о пользователе

Многим API EMM Google Play требуется userId (в дополнение к enterpriseId ) для выполнения некоторых связанных с пользователем задач, таких как установка приложения, получение прав и лицензирование. Для некоторых вызовов требуется пользовательский объект.

Если организация использует управляемые учетные записи Google Play, вы поддерживаете сопоставление между адресами электронной почты пользователей и идентификаторами пользователей для этих учетных записей. В учетных записях Google вы используете UsersListResponse .

Поиск пользователей

Этот пример кода получает идентификаторы пользователей, связанные с учетными записями Google. Это не относится к организациям, использующим управляемые учетные записи Google Play.

В этом примере предполагается, что вы импортировали модели User и UsersListResponse в свой код. Чтобы получить конкретную учетную запись пользователя, получите ее userId пользователя, передав идентификатор enterpriseId и адрес электронной почты в UsersListResponse .

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

Получить информацию о пользователе

Когда у вас есть userId , вы можете получить другие данные. См. Users.Get .

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

Предоставьте пользователю доступ к приложениям

Вы можете использовать API Google Play EMM, чтобы контролировать, к каким приложениям пользователь может получить доступ из управляемого магазина Google Play. Доступ к приложению включает в себя возможность поиска, просмотра, установки и обновления. Доступны три различных уровня доступа:

  • Только разрешенные приложения: пользователь имеет доступ только к определенным приложениям.
  • Все утвержденные приложения: пользователь имеет доступ ко всем приложениям, утвержденным для предприятия.
  • Все приложения: у пользователя есть доступ ко всем общедоступным приложениям в магазине Google Play.

Предоставьте пользователю доступ только к определенным приложениям

В приведенном ниже примере показано, как предоставить пользователю доступ к определенному набору приложений из управляемого магазина Google Play. Процесс включает следующие шаги:

  • Соберите список productIds (приложений), утвержденных для пользователя (productSet).
  • Укажите, что пользователь может получать доступ только к приложениям из данного списка, задав для строки productSetBehavior значение "whitelist" .
  • Примените список productIds и параметр поведения к доступному пользователю набору продуктов с помощью 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();
}

Предоставьте пользователю доступ ко всем одобренным приложениям

В приведенном ниже примере показано, как предоставить пользователю доступ к любому приложению, одобренному для предприятия, из управляемого магазина Google Play. Процесс включает следующие шаги:

  • Укажите, что пользователь может получить доступ ко всем приложениям, утвержденным для предприятия, задав для строки productSetBehavior значение "allApproved" .
  • Примените этот параметр к пользователю с помощью 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();
}

Примечание. Если productSetBehavior установлено значение "allApproved" , вам не нужно указывать идентификаторы продуктов для productIds .

Предоставьте пользователю доступ ко всем приложениям

В приведенном ниже примере показано, как предоставить пользователю возможность в управляемом магазине Google Play получать доступ к любому приложению, доступному в общедоступном магазине Google Play. Пользователи с доступом ко всем приложениям по-прежнему видят макет магазина для своего предприятия только при открытии управляемого Google Play, но могут найти дополнительные приложения с помощью поиска.

Некоторым доверенным пользователям, например ИТ-администраторам, может потребоваться более высокий уровень доступа для тестирования и оценки приложений перед их утверждением для предприятия. Процесс предоставления пользователю доступа ко всем приложениям включает следующие шаги:

  • Укажите, что пользователь может получить доступ ко всем приложениям в магазине Google Play, задав для строки productSetBehavior значение "includeAll" .
  • Примените этот параметр к пользователю с помощью 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();
}

Примечание. Если productSetBehavior установлено значение "includeAll" , вам не нужно указывать идентификаторы продуктов для productIds .

Создать макет магазина

Предоставив пользователям доступ к приложениям, сгруппируйте приложения в кластеры для отображения в управляемом магазине Google Play.

Вы можете создать уникальный индивидуальный макет магазина для каждого из ваших клиентов, используя API Storelayoutpages и Storelayoutclusters . Типичный макет состоит из набора страниц, каждая из которых может содержать кластеры приложений. Вы можете поместить связанные приложения в один и тот же кластер. Дополнительные сведения и пример кода см. в разделе Создание пользовательских макетов магазина .

Получить разрешения приложения

Чтобы добавить приложение в настраиваемый макет магазина (или автоматически установить приложение на устройство пользователя) и отобразить приложение, чтобы пользователь мог его выбрать, администратор должен принять разрешения для этого приложения для всей организации. Администраторы могут принимать разрешения для приложений и помечать приложения как одобренные для распространения в управляемой консоли Google Play (см. обзор управляемого Google Play ).

Мы рекомендуем встроить iframe разрешений в вашу консоль EMM. Это означает, что пользователю не нужно отдельно переходить к управляемой консоли Google Play. Используйте Products.getApprovalUrl , чтобы получить URL-адрес iframe.

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

Используйте Products.approve , чтобы принять эти разрешения.

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

Получить устройства пользователя

Чтобы выполнять действия для конкретных устройств, вам необходимо идентифицировать устройства, связанные с пользователем. В этом примере возвращается список устройств для заданного идентификатора пользователя DevicesListResponse userID

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

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

Если пользователь согласился с Условиями использования, представленными при первой попытке доступа к управляемому Google Play, ответ включает неуправляемые устройства (устройства с типом управления unmanagedProfile ).

Получить и установить состояние устройства

Эта задача управления применима только к организациям, использующим учетные записи Google. Это не относится к организациям, использующим управляемые аккаунты Google Play .

Когда управляемый аккаунт Google пользователя активируется на управляемом устройстве, доступ к службам Google включается (или отключается) на основе:

  • Состояние устройства.
  • Применил ли администратор домена политики EMM (путем настройки Принудительно применять политики EMM на устройствах Android в консоли администратора Google).

Если принудительное использование EMM отключено, состояние устройства игнорируется, а аккаунту предоставляется доступ к службам Google всякий раз, когда он активируется на устройстве Android. Если принудительное использование EMM включено, но состояние устройства отключено, пользователи не могут устанавливать приложения из Google Play, а API EMM Google Play не могут автоматически устанавливать приложения для этого пользователя на устройство.

В этом примере показано, как получить состояние данного устройства (заданного путем передачи enterpriseId , userId и deviceId ).

getState() и setState() работают только для устройств с managementType managedDevice или managedProfile (в ресурсе Devices ). Устройства с managementType unmanagedProfile не могут управляться с помощью этих API.

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

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

Включите или отключите службы Google для учетной записи на устройстве, задав для строки AccountState соответствующую константу.

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

Принудительная установка приложения на устройство

Администраторы могут автоматически устанавливать приложения. Взаимодействие с пользователем не требуется. В этом примере используется Installs.Update для автоматической установки приложения (идентифицированного productId ) на устройство (идентифицированное 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();
}

Если приложение уже существует на устройстве и доступна обновленная версия, оно будет обновлено до новой версии.

Поиск и получение приложений из списка одобренных приложений

Администраторы создают и управляют списком одобренных приложений, которые доступны их пользователям в управляемом Google Play. Пользователи устройств BYOD с рабочими профилями и пользователи корпоративных устройств, где все устройство находится под управлением организации, могут загружать приложения только из этого утвержденного списка.

Вы можете настроить консоль EMM, включив в нее поле поиска, чтобы администраторы могли искать приложения только в списке одобренных приложений. Функция поиска принимает те же параметры, что и стандартная управляемая функция поиска Google Play, но ищет приложения только в списке одобренных приложений.

Например, если администратор хочет принудительно установить приложение из списка утвержденных приложений на устройства своего предприятия, он может использовать эту функцию поиска в консоли EMM, чтобы найти приложение.

В своем запросе вы можете указать максимальное количество продуктов, которое должен содержать ваш результат, например setMaxResults(10L) , достаточное для заполнения экрана. Значение по умолчанию — 100, что также является максимальным значением, которое может быть возвращено за один раз. Когда результат содержит токен разбивки на страницы, вы можете получить больше результатов, передав токен разбиения на страницы.

В этом примере показано, как получить первые 10 результатов поиска приложений для повышения производительности. См. Products.List .

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

Если результат поиска содержит токен разбивки на страницы, поиск дал больше результатов, чем setMaxResults , или более 10 в этом примере. Чтобы получить больше результатов, повторите поиск и включите в запрос токен разбиения на страницы. Этот пример получает следующие 10 результатов.

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