Distribusi App Center – Pembaruan Unity In-app
Penting
Visual Studio App Center dijadwalkan untuk dihentikan pada 31 Maret 2025. Meskipun Anda dapat terus menggunakan Visual Studio App Center hingga sepenuhnya dihentikan, ada beberapa alternatif yang direkomendasikan yang dapat Anda pertimbangkan untuk bermigrasi.
Pelajari selengkapnya tentang garis waktu dukungan dan alternatif.
Distribusi App Center memungkinkan pengguna/penguji Anda 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.
Catatan
Jika Anda menjalankan pengujian UI otomatis, pembaruan dalam aplikasi yang diaktifkan akan memblokir pengujian UI otomatis Anda karena akan mencoba mengautentikasi terhadap backend App Center. Sebaiknya nonaktifkan pembaruan dalam aplikasi untuk pengujian UI Anda.
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 untuk mengimpor paket Distribusi App Center. Namanya harus dalam format AppCenterDistribute-v{version}.unitypackage
.
Catatan
Android 10 atau lebih tinggi memiliki batasan aktivitas peluncuran dari latar belakang. Silakan lihat artikel tentang pembatasan memulai aktivitas dari latar belakang.
Catatan
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.
Catatan
Dimulai dengan Android 11, ACTION_MANAGE_OVERLAY_PERMISSION
niat selalu membawa pengguna ke layar Pengaturan tingkat atas, di mana pengguna dapat memberikan atau mencabut SYSTEM_ALERT_WINDOW
izin untuk aplikasi. Silakan lihat artikel tentang pembaruan izin di Android 11.
Google Play menganggap kode pembaruan dalam aplikasi sebagai perilaku berbahaya meskipun tidak digunakan saat runtime. Hapus kode ini sebelum mengirimkan aplikasi 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 dalam aplikasi, hapus centang pada kotak centang Gunakan Distribusi di bawah bagian Distribusikan pada objek game dengan AppCenterBehavior terlampir.
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 trek 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 anggotanya. Jika pengguna berada di trek publik, itu berarti mereka akan mendapatkan rilis terbaru dari grup distribusi publik apa pun.
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 Distribusikan jika sebelumnya 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 bawah bagian Distribusikan pada objek game dengan AppCenterBehavior terpasang.
Kemudian Anda dapat menggunakan CheckForUpdate
API yang dijelaskan di bagian berikut.
Distribute.CheckForUpdate();
Ini mengirimkan permintaan ke App Center dan menampilkan dialog pembaruan jika ada rilis baru yang tersedia.
Catatan
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).
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 tercermin dalam dialog di file sumber daya aplikasi Anda sendiri.
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 hilangnya 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 salah satu 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.
Dalam kasus ketika SDK memeriksa pembaruan dan tidak menemukan pembaruan apa pun yang tersedia lebih baru dari yang saat ini digunakan, NoReleaseAvailable
panggilan balik dipanggil. 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 Distribusi App Center 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 untuk melakukan panggilan API lain (seperti IsEnabledAsync
) konsisten.
Status ini bertahan di penyimpanan perangkat di seluruh peluncuran aplikasi.
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.
Secara default pembaruan dalam aplikasi hanya diaktifkan untuk build rilis.
Untuk mengaktifkan pembaruan dalam aplikasi untuk build debug di Android dan iOS, centang kotak centang Aktifkan Distribusikan di Debug di bawah bagian Distribusikan pada objek game dengan AppCenterBehavior terpasang.
Di Unity, build yang dapat di-debug adalah build dengan opsi Build pengembangan yang dicentang.
Catatan
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 Distribusi akan ditutup.
Catatan
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:
- Fitur ini hanya berfungsi dengan build RILIS (secara default) yang didistribusikan menggunakan layanan Distribusi App Center . Ini tidak akan berfungsi jika fitur Akses Terpandu iOS diaktifkan.
- Setelah mengintegrasikan SDK, buat versi rilis aplikasi Anda, dan unggah ke App Center. Pengguna dalam grup distribusi diberi tahu tentang rilis baru melalui email.
- Ketika setiap pengguna membuka tautan dalam email mereka, aplikasi akan diinstal di perangkat mereka. Penting bahwa mereka menggunakan tautan email untuk diinstal - 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.
- 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.
- Rilis baru aplikasi menunjukkan dialog pembaruan dalam aplikasi yang meminta pengguna untuk memperbarui aplikasi Anda jika:
- iOS:
- nilai
CFBundleShortVersionString
atau yang lebih tinggi - nilai
CFBundleShortVersionString
yang sama tetapi nilai yang lebih tinggi dariCFBundleVersion
. - versinya sama tetapi pengidentifikasi unik build berbeda.
- nilai
- Android:
- nilai
versionCode
atau yang lebih tinggi - nilai yang sama tetapi
versionCode
nilai yang berbeda dariversionName
.
- nilai
- iOS:
Tip
Jika Anda mengunggah .apk/.ipa yang sama untuk kedua kalinya, dialog TIDAK AKAN muncul sebagai 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.
Anda harus mengunggah build rilis (yang menggunakan modul Distribusikan SDK App Center) ke Portal App Center untuk menguji pembaruan dalam aplikasi, meningkatkan nomor versi setiap saat.
- Buat aplikasi Anda di Portal App Center jika Anda belum melakukannya.
- Buat grup distribusi baru dan beri nama.
- Tambahkan diri Anda sendiri (atau semua orang yang ingin Anda sertakan pada pengujian fitur pembaruan dalam aplikasi). Gunakan alamat email baru atau buang untuk langkah ini, yang belum digunakan dengan aplikasi ini. Ini memastikan bahwa pengalaman Anda dekat dengan pengalaman penguji nyata Anda.
- Buat build baru aplikasi Anda yang menyertakan Distribusi App Center 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 . - Klik tombol Distribusikan rilis baru di portal dan unggah build aplikasi Anda.
- Setelah pengunggahan selesai, klik Berikutnya dan pilih Grup distribusi yang sebelumnya Anda buat sebagai Tujuan distribusi aplikasi tersebut.
- Tinjau Distribusi dan distribusikan build ke grup pengujian dalam aplikasi Anda.
- 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.
- Benjolan versi aplikasi Anda (
CFBundleShortVersionString
atauCFBundleVersion
untuk iOS,versionCode
untuk Android). - 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.
Tip
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.