Dystrybucja aplikacji

Interfejs Google Play EMM API obsługuje te metody dystrybucji aplikacji publicznych i prywatnych:

Ręczne instalowanie aplikacji ze zarządzanego Sklepu Google Play

Aplikacje, które użytkownik może zainstalować, możesz określić w ustawieniach policyDevice i ustawić je, wywołując funkcję Devices.update. Podczas konfigurowania nowego urządzenia musisz ustawić zasady przed dodaniem zarządzanego konta Google Play do urządzenia. W przeciwnym razie zasady nie będą stosowane przez krótki czas po dodaniu konta do urządzenia.

Zachowanie zarządzanego Sklepu Play jest określone przez wartość parametru policy.productAvailabilityPolicy:

  • all: dostępne są wszystkie publiczne aplikacje ze Sklepu Play.
  • whitelist: dostępne są tylko aplikacje wymienione w policy.productPolicy.

W obu przypadkach wszystkie aplikacje w policy.productPolicy są domyślnie dodawane do układu sklepu firmy. Gdy klikniesz whitelist, zobaczysz stronę główną zarządzanego Sklepu Play, a gdy klikniesz all, będziesz mieć dostęp do karty „Aplikacje służbowe”. Możesz umożliwić klientowi dostosowanie układu sklepu firmy przez umieszczenie w nim ramki iframe zarządzanego Sklepu Google Play (patrz Uporządkowanie aplikacji za pomocą ramki iframe zarządzanego Sklepu Google Play).

zdalne instalowanie aplikacji na urządzeniach użytkowników,

Aby zdalnie zainstalować (tzw. za pomocą push) aplikację na urządzeniu użytkownika, ustaw policy.productPolicy.autoInstallPolicy w ustawieniach policy Device. Podczas konfigurowania nowego urządzenia musisz ustawić zasady przed dodaniem zarządzanego konta Google Play do urządzenia. W przeciwnym razie zasady nie będą stosowane przez krótki czas po dodaniu konta do urządzenia.

Ustawienie autoInstallMode może mieć następujące wartości:

  • doNotAutoInstall: aplikacja nie jest instalowana automatycznie.
  • autoInstallOnce: aplikacja jest instalowana automatycznie raz. Jeśli użytkownik ją odinstaluje, nie zostanie ponownie zainstalowana.
  • forceAutoInstall: aplikacja jest instalowana automatycznie. Jeśli użytkownik ją odinstaluje, zostanie ponownie zainstalowana. Na urządzeniach zarządzanych DPC powinien blokować odinstalowywanie za pomocą DevicePolicyManager.setUninstallBlocked.

W przypadku niepowodzenia (utrata połączenia, brak miejsca na dane itp.) instalacje są automatycznie powtarzane, dopóki nie zakończą się sukcesem. W przypadku nieodwracalnych awarii stosuje się strategię ponownego próbowania z wzrastającym czasem oczekiwania, aby uniknąć marnowania baterii i danych.

Priorytet instalacji

Za pomocą ustawienia autoInstallPriority możesz wybrać kolejność instalacji. Wartość priorytetu musi być liczbą całkowitą bez znaku, a jej domyślna wartość to 0. Aplikacje będą instalowane w zwiększającej się kolejności priorytetów, co oznacza, że najpierw zostaną zainstalowane aplikacje o najniższej wartości priorytetu.

Instalowanie ograniczeń

Możesz ustawić ograniczenia dotyczące instalacji dla każdej aplikacji, określając autoInstallConstraint, co pozwoli Ci kontrolować wymagany stan urządzenia podczas instalacji:

  • czy urządzenie powinno być połączone z siecią Wi-Fi,
  • czy urządzenie powinno się ładować,
  • oraz czy urządzenie powinno być bezczynne (czy użytkownik nie używa go aktywnie).

Jeśli ograniczenia nie zostaną spełnione natychmiast, instalacje będą oczekiwały w kolejce do momentu spełnienia ograniczeń.

W przypadku autoInstallConstraint między polami obowiązuje reguła „I”. Na przykład w przypadku tej autoInstallConstraint aplikacja może zostać zainstalowana tylko wtedy, gdy urządzenie jest ładowane i połączone z siecią bez limitu (np. Wi-Fi):

"autoInstallConstraint": [
  "chargingStateConstraint" : "chargingRequired",
  "networkTypeConstraint" : "unmeteredNetwork"
]

Automatyczne instalowanie aplikacji na nowo skonfigurowanych urządzeniach

Interfejs EMM API Google Play wysyła powiadomienie NewDeviceEvent, gdy urządzenie jest po raz pierwszy przygotowywane. Aby automatycznie instalować aplikacje na nowo udostępnionych urządzeniach, czekaj na powiadomienia NewDeviceEvent. W przypadku każdego NewDeviceEvent pobierz wartości userIddeviceId, a potem wywołaj funkcję Devices.update, aby skonfigurować zasady dla tego urządzenia.

Aby dowiedzieć się, jak subskrybować powiadomienia EMM, przeczytaj artykuł Konfigurowanie powiadomień EMM.

Opinia na temat błędu podczas automatycznego instalowania aplikacji

Błędy związane z instalacją aplikacji są zgłaszane za pomocą opinii na temat aplikacji, a DPC może sprawdzać EnterprisePolicyStatus wiadomości wysyłane za pomocą KeyedAppStatesService.

Aby zdekodować dane zakodowane w formacie Base64, DPC musi wygenerować klasy na podstawie definicji proto EnterprisePolicyStatus. Instrukcje generowania prototypowych klas znajdziesz w dokumentacji Protocol Buffers.

Dzięki wygenerowanym klasom DPC może dekodować obiekt EnterprisePolicyStatus:

EnterprisePolicyStatus enterprisePolicyStatus = EnterprisePolicyStatus.parseFrom(
    BaseEncoding.base64().decode(base64EncodedString)
);

Zasady dotyczące urządzenia zawierają teraz nowe opcjonalne pole PolicyId. Podczas tworzenia lub aktualizowania zasad EMM może ustawić wartość PolicyId na dowolny ciąg znaków, aby zidentyfikować konkretną wersję Zasad na urządzeniu.

Jeśli jest dostępna, opinia o instalacji aplikacji będzie zawierać informacje o PolicyId, aby DPC mógł dopasować otrzymane błędy do konkretnych zasad.

EnterprisePolicyStatus

message EnterprisePolicyStatus {
  // Individual status for an app in the policy
  repeated ApplicationStatus app_status = 1;

  // Version of the policy for which this status applies.
  PolicyVersion version = 2;
}

ApplicationStatus

// Individual status for an app.
message ApplicationStatus {
  // The package name for the app.
  string package_name = 1;

  // The install status for the app. Only includes status for apps scheduled
  // to be auto-installed via the policy resource.
  AutoInstallStatus install_status = 2;
}

AutoInstallStatus

// Auto-install status for an app.
message AutoInstallStatus {
  // The error causing the install to fail if state is INSTALL_ERROR.
  EnterpriseAutoInstallError error = 1;

  // The current install state of the app.
  EnterpriseAutoInstallState state = 2;
}

PolicyVersion

// The version of the policy which these install states apply to.
message PolicyVersion {
  // A policy id which may be optionally set by the EMM.
  string policy_id = 1;
}

EnterpriseAutoInstallError

// Install errors resulting in failure to install an app.
enum EnterpriseAutoInstallError {
  // Catch-all for unrecognized enum values.
  ENTERPRISE_AUTO_INSTALL_ERROR_UNKNOWN = 0;

  // The app could not be found.
  ENTERPRISE_AUTO_INSTALL_ERROR_NOT_FOUND = 1;

  // The app is not available in the user's country.
  ENTERPRISE_AUTO_INSTALL_ERROR_UNAVAILABLE_COUNTRY = 2;

  // The app is not compatible with the device hardware.
  ENTERPRISE_AUTO_INSTALL_ERROR_NOT_COMPATIBLE_WITH_DEVICE = 3;

  // No license remained to grant ownership of the app, and the user did not
  // already own the app.
  ENTERPRISE_AUTO_INSTALL_ERROR_NO_LICENSES_REMAINING = 4;

  // Required permissions for the app have not been accepted.
  ENTERPRISE_AUTO_INSTALL_ERROR_MISSING_PERMISSION = 5;

  // The app is not available based on the enterprise availability policy.
  ENTERPRISE_AUTO_INSTALL_ERROR_NOT_APPROVED_OR_UNAVAILABLE = 6;

  // The app is not available to the user or device.
  ENTERPRISE_AUTO_INSTALL_ERROR_APP_UNAVAILABLE = 7;

  // Failed to grant license because the user already has ownership.
  ENTERPRISE_AUTO_INSTALL_ERROR_INCOMPATIBLE_OWNERSHIP = 8;

  // The admin has not accepted the terms of service.
  ENTERPRISE_AUTO_INSTALL_ERROR_TOS_NOT_ACCEPTED = 9;

  // The device does not have enough RAM.
  ENTERPRISE_AUTO_INSTALL_ERROR_INSUFFICIENT_RAM = 10;

  // The app is incompatible with the device carrier.
  ENTERPRISE_AUTO_INSTALL_ERROR_NOT_COMPATIBLE_WITH_DEVICE_CARRIER = 11;

  // The app is incompatible with the country or carrier.
  ENTERPRISE_AUTO_INSTALL_ERROR_NOT_COMPATIBLE_WITH_DEVICE_COUNTRY_OR_CARRIER = 12;

  // The app is incompatible with the safe search level.
  ENTERPRISE_AUTO_INSTALL_ERROR_NOT_COMPATIBLE_WITH_DEVICE_SAFE_SEARCH_LEVEL = 13;

  // The app could not be installed due to an installer error.
  ENTERPRISE_AUTO_INSTALL_ERROR_INSTALL_FAILED = 14;

  // The app could not be installed due to network errors.
  ENTERPRISE_AUTO_INSTALL_ERROR_NETWORK_FAILED = 15;

  // The device does not have enough storage.
  ENTERPRISE_AUTO_INSTALL_ERROR_INSUFFICIENT_STORAGE = 16;
}

EnterpriseAutoInstallState

// The current install state for an app.
enum EnterpriseAutoInstallState {
  // Catch-all for unrecognized enum values.
  INSTALL_STATE_UNKNOWN = 0;

  // The app has been received by Play but an install attempt has not completed
  // yet.
  INSTALL_STATE_PENDING = 1;

  // The latest install attempt failed and will be retried automatically.
  INSTALL_STATE_ERROR = 2;

  // The app has been installed.
  INSTALL_STATE_INSTALLED = 3;
}

Rozpowszechnianie aplikacji na potrzeby testów zamkniętych

Testy zamknięte umożliwiają deweloperom uzyskanie opinii o wczesnych wersjach aplikacji od zaufanych użytkowników. Deweloperzy mogą konfigurować testy zamknięte w Konsoli Google Play. Za pomocą interfejsu EMM API w Google Play możesz umożliwić administratorom IT dystrybucję zamkniętych wersji (zwanych też ścieżkami) aplikacji określonym użytkownikom. Twoi klienci biznesowi mogą używać tej funkcji nie tylko do testowania aplikacji innych firm, ale też prywatnych aplikacji opracowanych wewnętrznie.

Odpowiednie aplikacje

Zanim deweloper doda firmę do listy testerów zamkniętych aplikacji, aplikacja powinna spełniać te kryteria:

  • Wersja produkcyjna aplikacji została opublikowana w Google Play.
  • W Konsoli Google Play na stronie Ustawienia zaawansowane w aplikacji włączona jest opcja Zarządzana przez Google Play.
  • Wszystkie zamknięte wersje aplikacji spełniają wymagania dotyczące kodu wersji.

Dodawanie organizacji do testów zamkniętych

Deweloperzy aplikacji mogą dodawać przedsiębiorstwa do testów, które korzystają z metod zamkniętego testu alfa lub testu alfa przy użyciu Grup dyskusyjnych Google. Instrukcje znajdziesz w artykule Przygotowywanie testu otwartego, zamkniętego lub wewnętrznego. Deweloper musi podać identyfikator organizacji (nazywany też identyfikatorem przedsiębiorstwa) każdego uczestniczącego przedsiębiorstwa. Administratorzy IT mogą udostępnić identyfikator organizacji zewnętrznym deweloperom aplikacji, wykonując te czynności:

  1. Zaloguj się w zarządzanym Sklepie Google Play.
  2. Kliknij Ustawienia administracyjne.
  3. Z pola Informacje o organizacji skopiuj identyfikator i wyślij go do firmy deweloperskiej.

Dodatkowe wymagania dotyczące aplikacji prywatnych

W przypadku aplikacji prywatnych deweloper musi też dodać identyfikator organizacji każdej firmy uczestniczącej w programie na karcie Zarządzany Sklep Google Play na stronie Ustawienia zaawansowane aplikacji. Instrukcje znajdziesz w artykule Publikowanie aplikacji prywatnej.

Udostępnianie użytkownikom ścieżek zamkniętych

Aby pobrać listę utworów dostępnych dla firmy w przypadku określonej aplikacji, wywołaj funkcję Products.get. Lista appTracks[] zawarta w odpowiedzi zawiera ścieżki dostępne dla każdej aplikacji. appTracks[].trackAlias to czytelna dla użytkownika nazwa ścieżki, którą możesz wyświetlić w konsoli EMM, a appTracks[].trackId to identyfikator ścieżki czytelny dla maszyn.

Aby umożliwić użytkownikowi wyświetlanie ścieżki zamkniętej aplikacji, ustaw parametr policy.productPolicy[].trackIds[]Device policy. Jeśli na urządzeniu jest dostępnych kilka ścieżek, zostanie zainstalowana wersja z najwyższym kodem.

W określonych sytuacjach, np.:Products.get

  • Wersja aplikacji ścieżki zostaje przeniesiona na inną ścieżkę lub na ścieżkę produkcyjną.
  • Wersja produkcyjna jest aktualizowana z wersją wyższą niż ścieżka.
  • Deweloper zatrzymuje ścieżkę.

Monitorowanie płatnych licencji na aplikacje

W przypadku płatnych aplikacji obiekt Grouplicenses śledzi liczbę licencji należących do firmy i używanych licencji. Aby uzyskać szczegóły licencji na aplikację, zadzwoń pod numer Grouplicenses.get.

Zanim płatna aplikacja zostanie zainstalowana na urządzeniu, firma musi mieć licencję na tę aplikację. Jeśli licencja jest dostępna, aplikacja jest instalowana na urządzeniu, a następnie tworzony jest obiekt Entitlements. Obiekt Entitlements łączy licencję z użytkownikiem i obniża liczbę dostępnych licencji na aplikację. Jeśli nie ma dostępnych licencji, instalacja aplikacji się nie powiedzie i nie zostanie utworzony obiekt Entitlements.

Obiekty GrouplicensesEntitlements nie są używane przez aplikacje rozpowszechniane bezpłatnie.