Mendistribusikan aplikasi

Google Play EMM API mendukung metode distribusi berikut untuk aplikasi publik dan pribadi:

  • Pengguna dapat menginstal aplikasi secara manual dari Google Play Store terkelola.
  • Admin IT dapat menginstal aplikasi dari jarak jauh ke perangkat pengguna.

Menginstal aplikasi secara manual dari Managed Google Play Store

Anda dapat menentukan aplikasi yang tersedia untuk diinstal pengguna di policy Device dan menyetelnya dengan memanggil Devices.update. Saat menyediakan perangkat baru, Anda harus menetapkan kebijakan sebelum menambahkan Akun Google Play terkelola ke perangkat. Jika tidak, kebijakan tidak akan diterapkan selama jangka waktu singkat setelah menambahkan akun ke perangkat.

Perilaku Play Store terkelola ditentukan oleh nilai policy.productAvailabilityPolicy:

  • all: Semua aplikasi publik dari Play Store tersedia.
  • whitelist: Hanya aplikasi yang tercantum di policy.productPolicy yang tersedia.

Dalam kedua kasus tersebut, semua aplikasi di policy.productPolicy ditambahkan secara default ke tata letak Play Store perusahaan. Tata letak Play Store perusahaan adalah halaman beranda Play Store terkelola saat whitelist dipilih, dan dapat diakses di tab "Aplikasi Kerja" saat all dipilih. Anda dapat mengizinkan pelanggan untuk menyesuaikan tata letak Play Store perusahaan dengan menyematkan iframe Google Play terkelola (lihat Mengelola aplikasi dengan iframe Google Play terkelola).

Menginstal aplikasi ke perangkat pengguna dari jarak jauh

Untuk menginstal aplikasi (juga disebut penginstalan push) di perangkat pengguna dari jarak jauh, tetapkan policy.productPolicy.autoInstallPolicy di policy Device. Saat menyediakan perangkat baru, Anda harus menetapkan kebijakan sebelum menambahkan Akun Google Play terkelola ke perangkat. Jika tidak, kebijakan tidak akan diterapkan selama jangka waktu singkat setelah menambahkan akun ke perangkat.

autoInstallMode dapat disetel ke:

  • doNotAutoInstall: Aplikasi tidak diinstal secara otomatis.
  • autoInstallOnce: Aplikasi otomatis diinstal sekali, jika pengguna meng-uninstal aplikasi, aplikasi tidak akan diinstal lagi.
  • forceAutoInstall: Aplikasi diinstal secara otomatis, jika pengguna meng-uninstal aplikasi, aplikasi akan diinstal lagi. Di perangkat terkelola, DPC harus memblokir uninstal menggunakan DevicePolicyManager.setUninstallBlocked.

Jika terjadi kegagalan (kehilangan konektivitas, kekurangan penyimpanan, dll.), penginstalan akan dicoba ulang secara otomatis hingga berhasil. Strategi percobaan ulang backoff eksponensial diterapkan untuk menghindari pemborosan baterai dan data jika terjadi kegagalan yang tidak dapat dipulihkan.

Prioritas penginstalan

Anda dapat memilih urutan penginstalan dengan menetapkan autoInstallPriority. Prioritas harus berupa bilangan bulat tanpa tanda tangan dan nilai defaultnya adalah 0. Aplikasi akan diinstal dalam urutan atau prioritas yang meningkat, yang berarti aplikasi dengan nilai prioritas yang lebih rendah akan diinstal terlebih dahulu.

Menginstal batasan

Anda dapat menetapkan batasan penginstalan untuk setiap aplikasi dengan menetapkan autoInstallConstraint, yang memungkinkan Anda mengontrol status perangkat yang diperlukan selama penginstalan:

  • apakah perangkat harus terhubung ke jaringan Wi-Fi,
  • apakah perangkat harus diisi dayanya,
  • dan apakah perangkat harus dalam status tidak ada aktivitas (tidak digunakan secara aktif oleh pengguna).

Jika batasan tidak segera terpenuhi, penginstalan yang terpengaruh akan dimasukkan ke dalam antrean hingga batasan terpenuhi.

Di autoInstallConstraint, aturan AND diterapkan di antara kolom. Misalnya, dengan autoInstallConstraint berikut, perangkat harus diisi daya dan terhubung ke jaringan tanpa kuota (misalnya, Wi-Fi) agar aplikasi dapat diinstal:

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

Menginstal aplikasi secara otomatis di perangkat yang baru disediakan

Google Play EMM API mengirimkan notifikasi NewDeviceEvent saat perangkat disediakan untuk pertama kalinya. Untuk menginstal aplikasi secara otomatis ke perangkat yang baru disediakan, tangkap notifikasi NewDeviceEvent. Dari setiap NewDeviceEvent, ambil userId dan deviceId, lalu panggil Devices.update untuk menetapkan kebijakan untuk perangkat tersebut.

Untuk mempelajari cara berlangganan notifikasi EMM, lihat Menyiapkan notifikasi EMM.

Masukan error penginstalan otomatis aplikasi

Error yang terkait dengan penginstalan aplikasi dilaporkan melalui Masukan Aplikasi, dan DPC dapat memantau pesan EnterprisePolicyStatus yang dikirim melalui KeyedAppStatesService.

Untuk mendekode data yang dienkode Base64, DPC harus membuat class berdasarkan definisi proto EnterprisePolicyStatus. Lihat dokumentasi Buffering Protokol untuk mengetahui petunjuk tentang cara membuat class proto.

Dengan class yang dihasilkan, DPC dapat mendekode objek EnterprisePolicyStatus:

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

Kebijakan Perangkat kini menyertakan kolom opsional baru PolicyId. Saat membuat atau memperbarui kebijakan, EMM dapat menetapkan PolicyId ke nilai string apa pun untuk mengidentifikasi versi Kebijakan Perangkat tertentu.

Jika tersedia, masukan penginstalan aplikasi akan melaporkan PolicyId sehingga DTC dapat mencocokkan error yang diterima dengan kebijakan tertentu.

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

Mendistribusikan aplikasi untuk pengujian tertutup

Pengujian tertutup memungkinkan developer aplikasi mendapatkan masukan tentang versi awal aplikasi mereka dari pengguna tepercaya. Developer dapat menyiapkan pengujian tertutup di Konsol Google Play. Anda menggunakan Play EMM API untuk memungkinkan admin IT mendistribusikan versi tertutup (juga disebut jalur) aplikasi kepada pengguna tertentu. Pelanggan perusahaan Anda dapat menggunakan fitur ini tidak hanya untuk menguji aplikasi pihak ketiga, tetapi juga untuk menguji aplikasi pribadi yang dikembangkan secara internal.

Aplikasi yang memenuhi syarat

Sebelum developer menambahkan perusahaan ke daftar penguji tertutup aplikasi, aplikasi harus memenuhi kriteria berikut:

  • Versi produksi aplikasi dipublikasikan di Google Play.
  • Di Konsol Google Play, Managed Google Play diaktifkan di halaman Setelan Lanjutan aplikasi.
  • Setiap versi tertutup aplikasi memenuhi persyaratan kode versi.

Menambahkan perusahaan ke pengujian tertutup

Developer aplikasi dapat menambahkan perusahaan ke pengujian yang menggunakan metode Pengujian Alfa tertutup, atau Pengujian Alfa menggunakan Google Grup. Untuk petunjuknya, lihat panduan cara menyiapkan pengujian terbuka, tertutup, atau internal. Developer harus memasukkan ID organisasi (juga disebut sebagai ID perusahaan) dari setiap perusahaan yang berpartisipasi. Admin IT dapat memberikan ID organisasi mereka kepada developer aplikasi pihak ketiga dengan mengikuti langkah-langkah berikut:

  1. Login ke Google Play Store terkelola.
  2. Klik Setelan Admin.
  3. Salin string ID Organisasi dari kotak informasi Organisasi dan kirimkan kepada developer.

Persyaratan tambahan untuk aplikasi pribadi

Untuk aplikasi pribadi, developer juga perlu menambahkan ID organisasi dari setiap perusahaan yang berpartisipasi di tab Google Play Terkelola di halaman Setelan Lanjutan aplikasi. Untuk mengetahui petunjuknya, lihat Memublikasikan aplikasi pribadi.

Mendistribusikan jalur tertutup kepada pengguna

Untuk mengambil daftar jalur yang tersedia bagi perusahaan untuk aplikasi yang ditentukan, panggil Products.get. Daftar appTracks[] yang terdapat dalam respons mencakup jalur yang tersedia untuk setiap aplikasi. appTracks[].trackAlias adalah nama yang dapat dibaca pengguna untuk jalur yang dapat Anda tampilkan di konsol EMM, dan appTracks[].trackId adalah ID yang dapat dibaca mesin untuk jalur.

Untuk memberikan visibilitas pengguna ke jalur tertutup aplikasi, tetapkan policy.productPolicy[].trackIds[] di policy Device. Jika beberapa jalur tersedia untuk perangkat, versi yang tersedia dengan kode versi tertinggi akan diinstal.

trackIds akan otomatis dihapus dari panggilan Products.get dalam skenario tertentu seperti berikut:

  • Versi aplikasi jalur dipromosikan ke jalur lain atau ke produksi.
  • Versi produksi diupdate dengan versi yang lebih tinggi daripada jalur.
  • Developer menghentikan jalur.

Melacak lisensi aplikasi berbayar

Untuk aplikasi berbayar, objek Grouplicenses melacak jumlah lisensi yang dimiliki perusahaan dan jumlah lisensi yang digunakan. Anda dapat memanggil Grouplicenses.get untuk mendapatkan detail lisensi aplikasi.

Sebelum aplikasi berbayar dapat diinstal di perangkat, perusahaan harus memiliki lisensi yang tersedia untuk aplikasi. Jika lisensi tersedia, aplikasi akan diinstal di perangkat dan objek Entitlements akan dibuat. Objek Entitlements menautkan lisensi dengan pengguna dan mengurangi jumlah lisensi yang tersedia untuk aplikasi. Jika tidak ada lisensi yang tersedia, penginstalan aplikasi akan gagal dan tidak ada objek Entitlements yang dibuat.

Objek Grouplicenses dan Entitlements tidak digunakan oleh aplikasi yang didistribusikan tanpa biaya.