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

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 для ProductSet.

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

В приведенном ниже примере показано, как предоставить пользователю в управляемом магазине 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 для ProductSet.

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

Предоставив пользователям доступ к приложениям, сгруппируйте приложения в кластеры для отображения на витрине управляемого магазина 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();
  }

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

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

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 отключено, состояние устройства игнорируется, и учетной записи предоставляется доступ к службам 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;
}