App Center Distribute – Pembaruan Dalam Aplikasi Unity

Penting

Visual Studio App Center dihentikan pada 31 Maret 2025, kecuali untuk fitur Analitik dan Diagnostik, yang akan terus didukung hingga 30 Juni 2026. Pelajari lebih lanjut.

Distribusi App Center memungkinkan pengguna/penguji menginstal versi baru aplikasi setelah Anda mendistribusikannya melalui App Center. Setelah diaktifkan, SDK menyajikan dialog pembaruan kepada pengguna untuk mengunduh atau menunda penginstalan pembaruan terbaru. Setelah mereka memilih untuk memperbarui, SDK akan mulai memperbarui aplikasi Anda.

Penting

SDK Distribusi untuk Unity tidak mendukung UWP. Instruksi di halaman ini hanya mencakup Android dan iOS.

Peringatan

Google Play menganggap kode pembaruan dalam aplikasi sebagai perilaku berbahaya meskipun tidak digunakan saat runtime. Hapus kode ini seperti yang diarahkan di bagian ini sebelum mengirimkan aplikasi Anda ke Google Play. Kegagalan untuk tidak menghapus kode pembaruan dalam aplikasi dapat menyebabkan ketidakpatuhan dan penghapusan aplikasi dari Google Play.

Nota

Jika Anda menjalankan pengujian UI otomatis, pembaruan dalam aplikasi yang diaktifkan akan memblokir pengujian UI otomatis Anda karena mereka akan mencoba mengautentikasi terhadap backend App Center. Sebaiknya nonaktifkan pembaruan dalam aplikasi untuk pengujian UI Anda.

Menambahkan pembaruan dalam aplikasi ke aplikasi Anda

Tambahkan modul Distribusi App Center

App Center SDK dirancang dengan pendekatan modular – pengembang hanya perlu mengintegrasikan modul layanan yang mereka minati.

Ikuti dokumen memulai Unity jika Anda belum menyiapkan dan memulai SDK di aplikasi Anda. Pastikan paket Distribusi App Center telah diimpor. Namanya harus dalam format AppCenterDistribute-v{version}.unitypackage.

Nota

Android 10 atau yang lebih tinggi memiliki batasan pada aktivitas peluncuran dari latar belakang. Silakan lihat artikel tentang pembatasan memulai aktivitas dari latar belakang.

Nota

Aplikasi yang berjalan di Android 10 (edisi Go) tidak dapat menerima izin SYSTEM_ALERT_WINDOW . Silakan lihat artikel tentang SYSTEM_ALERT_WINDOW di perangkat Go.

Nota

Dimulai dengan Android 11, ACTION_MANAGE_OVERLAY_PERMISSION intent selalu membawa pengguna ke layar Pengaturan utama, di mana pengguna dapat memberikan atau mencabut SYSTEM_ALERT_WINDOW perizinan untuk aplikasi. Silakan lihat artikel tentang pembaruan izin di Android 11.

Menghapus pembaruan dalam aplikasi untuk build Google Play

Google Play menganggap kode pembaruan dalam aplikasi sebagai perilaku berbahaya meskipun tidak digunakan saat runtime. Hapus kode ini sebelum mengirimkan aplikasi Anda ke Google Play. Kegagalan untuk tidak menghapus kode pembaruan dalam aplikasi dapat menyebabkan ketidakpatuhan dan penghapusan aplikasi dari Google Play. Untuk menghapus kode asli pembaruan di dalam aplikasi, hapus centang pada kotak Gunakan Distribute di bawah bagian Distribute pada objek game dengan AppCenterBehavior terpasang.

Menggunakan grup distribusi privat

Secara default, Distribusikan menggunakan grup distribusi publik. Jika Anda ingin menggunakan grup distribusi privat, Anda harus mengubah UpdateTrack ke Privat. Untuk melakukan ini, pilih Privat di menu dropdown Perbarui Trek di bawah bagian Distribusikan pada objek game dengan AppCenterBehavior terpasang.

Saat menggunakan trek privat, jendela browser akan terbuka untuk mengautentikasi pengguna. Semua pemeriksaan pembaruan berikutnya akan mendapatkan rilis terbaru di jalur privat.

Jika pengguna berada di trek privat, itu berarti bahwa setelah autentikasi berhasil, mereka akan mendapatkan rilis terbaru dari grup distribusi privat tempat mereka menjadi anggota. Jika pengguna berada di trek publik, itu berarti mereka akan mendapatkan rilis terbaru dari grup distribusi publik apa pun.

Nonaktifkan Pemeriksaan Otomatis untuk Pembaruan

Secara default, SDK secara otomatis memeriksa rilis baru:

  • Ketika aplikasi dimulai.
  • Ketika aplikasi masuk ke latar belakang kemudian di latar depan lagi.
  • Saat mengaktifkan modul Distribusi jika sebelumnya telah dinonaktifkan.

Jika Anda ingin memeriksa rilis baru secara manual, Anda dapat menonaktifkan pemeriksaan otomatis untuk pembaruan.

Untuk melakukan ini, hapus centang kotak Centang Otomatis untuk Pembaruan di bagian Distribusikan pada objek game dengan AppCenterBehavior terpasang.

Kemudian Anda dapat menggunakan CheckForUpdate API yang dijelaskan di bagian berikut.

Periksa Pembaruan Secara Manual

Distribute.CheckForUpdate();

Ini mengirimkan permintaan ke App Center dan menampilkan dialog pembaruan jika ada rilis baru yang tersedia.

Nota

Pemeriksaan manual untuk panggilan pembaruan berfungsi bahkan ketika pembaruan otomatis diaktifkan. Pemeriksaan manual untuk pembaruan diabaikan jika pemeriksaan lain sudah dilakukan. Pemeriksaan manual untuk pembaruan tidak akan diproses jika pengguna telah menunda pembaruan (kecuali versi terbaru adalah pembaruan wajib).

Menyesuaikan atau melokalisasi dialog pembaruan dalam aplikasi

1. Menyesuaikan atau melokalisasi teks

Anda dapat menyediakan string sumber daya Anda sendiri jika Anda ingin melokalisasi teks yang ditampilkan dalam dialog pembaruan. Lihat file string untuk iOS dalam file sumber daya iOS ini dan untuk Android dalam file sumber daya Android ini. Gunakan nama/kunci string yang sama dan tentukan nilai yang dilokalkan untuk direfleksikan dalam dialog dalam file sumber daya aplikasi Anda sendiri.

2. Sesuaikan dialog pembaruan

Anda dapat menyesuaikan tampilan dialog pembaruan default dengan menerapkan ReleaseAvailable panggilan balik.

Peringatan

Anda perlu mendaftarkan panggilan balik dalam Awake metode MonoBehaviour di adegan pertama yang dimuat aplikasi Anda untuk menghindari kehilangan pemanggilan panggilan balik rilis.

// In this example, OnReleaseAvailable is a method name in same class
Distribute.ReleaseAvailable = OnReleaseAvailable;

Berikut adalah implementasi panggilan balik yang menggantikan dialog SDK dengan logika kustom:

bool OnReleaseAvailable(ReleaseDetails releaseDetails)
{
    // Look at releaseDetails public properties to get version information, release notes text or release notes URL
    string versionName = releaseDetails.ShortVersion;
    string versionCodeOrBuildNumber = releaseDetails.Version;
    string releaseNotes = releaseDetails.ReleaseNotes;
    Uri releaseNotesUrl = releaseDetails.ReleaseNotesUrl;

    // (Do something with the values if you want)

    // On mandatory update, user can't postpone
    if (releaseDetails.MandatoryUpdate)
    {
        // Force user to update (you should probably show some custom UI here)
        Distribute.NotifyUpdateAction(UpdateAction.Update);
    }
    else
    {
        // Allow user to update or postpone (you should probably show some custom UI here)
        // "GetUserUpdateAction()" isn't part of the SDK; it just represents a way of getting user response.
        // This blocks the thread while awaiting the user's response! This example shouldn't be used literally
        UpdateAction updateAction = GetUserUpdateAction();
        Distribute.NotifyUpdateAction(updateAction);
    }
    // Return true if you're using your own UI to get user response, false otherwise
    return true;
}

Catatan implementasi untuk Android:

Seperti yang ditunjukkan dalam contoh, Anda harus memanggil baik Distribute.NotifyUpdateAction(UpdateAction.UPDATE); atau Distribute.NotifyUpdateAction(UpdateAction.POSTPONE); jika panggilan balik Anda mengembalikan true.

Jika Anda tidak memanggil NotifyUpdateAction, panggilan balik akan berulang pada setiap perubahan aktivitas.

Panggilan balik dapat dipanggil lagi dengan rilis yang sama jika aktivitas berubah sebelum tindakan pengguna diberi tahu ke SDK.

Perilaku ini diperlukan untuk mencakup skenario berikut:

  • Aplikasi Anda dikirim ke latar belakang (seperti menekan HOME) lalu dilanjutkan dalam aktivitas yang berbeda.
  • Aktivitas Anda dicakup oleh yang lain tanpa meninggalkan aplikasi (seperti mengklik beberapa pemberitahuan).
  • Skenario serupa dengan yang di atas.

Dalam hal ini, aktivitas yang menghosting dialog mungkin diganti tanpa interaksi pengguna. Jadi SDK memanggil pendengar lagi sehingga Anda dapat memulihkan dialog kustom.

3. Jalankan kode jika tidak ada pembaruan yang ditemukan

Dalam kasus ketika SDK memeriksa pembaruan dan tidak menemukan pembaruan lebih baru dari yang saat ini digunakan, NoReleaseAvailable panggilan balik dijalankan. Ini memungkinkan Anda untuk menjalankan kode kustom dalam skenario tersebut. Anda perlu mendaftarkan panggilan balik sebelum memanggil AppCenter.Start seperti yang ditunjukkan dalam contoh berikut:

// In this example OnNoReleaseAvailable is a method name in same class
Distribute.NoReleaseAvailable = OnNoReleaseAvailable;
AppCenter.Start(...);
void OnNoReleaseAvailable()
{
    AppCenterLog.Info(LogTag, "No release available callback invoked.");
}

## Enable or disable App Center Distribute at runtime

You can enable and disable App Center Distribute at runtime. If you disable it, the SDK won't provide any in-app update functionality but you can still use the Distribute service in the App Center portal.

To disable the Distribute service, use the following code:

```csharp
Distribute.SetEnabledAsync(false);

Untuk mengaktifkan App Center Distribute lagi, gunakan API yang sama tetapi teruskan true sebagai parameter.

Distribute.SetEnabledAsync(true);

API ini asinkron, Anda dapat membaca lebih lanjut di panduan API Asinkron App Center kami.

Anda tidak perlu menunggu panggilan ini agar panggilan API lain (seperti IsEnabledAsync) konsisten.

Status ini bertahan di penyimpanan perangkat di seluruh peluncuran aplikasi.

Periksa apakah Distribusi App Center diaktifkan

Anda juga dapat memeriksa apakah App Center Distribute diaktifkan:

Distribute.IsEnabledAsync();

API ini asinkron, Anda dapat membaca lebih lanjut di panduan API Asinkron App Center kami.

Mengaktifkan pembaruan dalam aplikasi untuk versi debug

Secara default, pembaruan dalam aplikasi hanya diaktifkan untuk build rilis.

Untuk mengaktifkan pembaruan dalam aplikasi untuk build debug di Android dan iOS, centang kotak Aktifkan Distribusi dalam Debug di bagian Distribusi pada objek game dengan AppCenterBehavior yang terpasang.

Perilaku App Center

Di Unity, build yang dapat di-debug adalah build dengan opsi Build pengembangan yang dicentang.

Lakukan pembersihan tepat sebelum aplikasi ditutup untuk pembaruan

Nota

Panggilan balik ini hanya berfungsi di iOS.

Daftarkan panggilan balik seperti yang ditunjukkan dalam contoh berikut:

// In this example, OnWillExitApp is a method name in same class
Distribute.WillExitApp = OnWillExitApp;
void OnWillExitApp()
{
    // Perform clean up here
}

Dengan itu, OnWillExitApp() akan dipanggil ketika Distribute akan ditutup.

Cara kerja pembaruan dalam aplikasi

Nota

Agar pembaruan dalam aplikasi berfungsi, build aplikasi harus diunduh dari tautan. Ini tidak akan berfungsi jika diinstal dari IDE atau secara manual.

Fitur pembaruan dalam aplikasi berfungsi sebagai berikut:

  1. Fitur ini hanya berfungsi dengan versi RILIS (secara default) yang didistribusikan menggunakan layanan App Center Distribute. Ini tidak akan berfungsi jika fitur Akses Terpandu iOS diaktifkan.
  2. Setelah mengintegrasikan SDK, buat versi rilis aplikasi Anda, dan unggah ke App Center. Pengguna dalam grup distribusi diberi tahu tentang rilis baru melalui email.
  3. Ketika setiap pengguna membuka tautan di email mereka, aplikasi akan diinstal di perangkat mereka. Penting bahwa mereka menggunakan tautan email untuk menginstal - kami tidak mendukung pemuatan samping. Ketika aplikasi diunduh dari tautan, SDK menyimpan informasi penting dari cookie untuk memeriksa pembaruan nanti, jika tidak, SDK tidak memiliki informasi utama tersebut.
  4. Jika aplikasi mengatur trek ke privat, browser akan terbuka untuk mengautentikasi pengguna dan mengaktifkan pembaruan dalam aplikasi. Browser tidak akan terbuka lagi selama informasi autentikasi tetap valid bahkan ketika beralih kembali ke trek publik dan kembali ke privat lagi nanti. Jika autentikasi browser berhasil, pengguna dialihkan kembali ke aplikasi secara otomatis. Jika trek bersifat publik (yang merupakan default), langkah berikutnya terjadi secara langsung.
  5. Rilis baru aplikasi menunjukkan dialog pembaruan dalam aplikasi yang meminta pengguna untuk memperbarui aplikasi Anda jika:
    • Ios:
      • nilai CFBundleShortVersionString atau yang lebih tinggi
      • nilai yang sama untuk CFBundleShortVersionString, tetapi nilai yang lebih tinggi untuk CFBundleVersion.
      • versinya sama tetapi pengidentifikasi unik build berbeda.
    • Android:
      • nilai versionCode atau yang lebih tinggi
      • nilai yang sama dari versionCode tetapi nilai yang berbeda dari versionName.

Petunjuk / Saran

Jika Anda mengunggah .apk/.ipa yang sama untuk kedua kalinya, dialog TIDAK akan muncul karena biner identik. Di iOS, jika Anda mengunggah build baru dengan properti versi yang sama, build tersebut akan menampilkan dialog pembaruan. Alasan untuk ini adalah bahwa itu adalah biner yang berbeda. Di Android, biner dianggap sama jika kedua properti versi sama.

Bagaimana cara menguji pembaruan dalam aplikasi?

Anda harus mengunggah build rilis (yang menggunakan modul Distribusi App Center SDK) ke Portal App Center untuk menguji pembaruan dalam aplikasi, meningkatkan nomor versi setiap kali.

  1. Buat aplikasi Anda di Portal App Center jika Anda belum melakukannya.
  2. Buat grup distribusi baru dan beri nama.
  3. Tambahkan diri Anda sendiri (atau semua orang yang ingin Anda sertakan pada pengujian fitur pembaruan dalam aplikasi). Gunakan alamat email baru atau sementara untuk langkah ini, yang belum pernah digunakan dengan aplikasi ini. Ini memastikan bahwa pengalaman Anda dekat dengan pengalaman penguji nyata Anda.
  4. Buat build baru aplikasi Anda yang menyertakan App Center Distribute dan berisi logika penyiapan seperti yang dijelaskan di bawah ini. Jika grup bersifat privat, jangan lupa untuk mengatur trek pembaruan dalam aplikasi privat sebelum mulai menggunakan UpdateTrack properti .
  5. Klik tombol Distribusikan rilis baru di portal dan unggah build aplikasi Anda.
  6. Setelah unggahan selesai, klik Berikutnya dan pilih grup Distribusi yang sebelumnya Anda buat sebagai Tujuan distribusi aplikasi tersebut.
  7. Tinjau Distribusi dan distribusikan build ke grup pengujian dalam aplikasi Anda.
  8. Orang-orang dalam grup tersebut akan menerima undangan untuk menjadi penguji aplikasi. Setelah menerima undangan, mereka dapat mengunduh aplikasi dari Portal App Center dari perangkat seluler mereka. Setelah menginstal pembaruan dalam aplikasi, Anda siap untuk menguji pembaruan dalam aplikasi.
  9. Naikkan versi aplikasi Anda (CFBundleShortVersionString atau CFBundleVersion untuk iOS, versionCode untuk Android).
  10. Buat versi rilis aplikasi Anda dan unggah build baru seperti yang Anda lakukan di langkah sebelumnya. Distribusikan ke Grup Distribusi yang Anda buat sebelumnya. Anggota Grup Distribusi akan dimintai versi baru saat aplikasi dimulai lagi.

Petunjuk / Saran

Lihat informasi tentang cara menggunakan App Center Distribute untuk informasi lebih rinci tentang Grup Distribusi dll. Meskipun dimungkinkan untuk menggunakan App Center Distribute untuk mendistribusikan versi baru aplikasi Anda tanpa menambahkan kode apa pun, menambahkan App Center Distribute ke kode aplikasi Anda akan menghasilkan pengalaman yang lebih mulus bagi penguji dan pengguna Anda saat mereka mendapatkan pengalaman pembaruan dalam aplikasi.