Pelatihan
Jalur pembelajaran
Use advance techniques in canvas apps to perform custom updates and optimization - Training
Use advance techniques in canvas apps to perform custom updates and optimization
Browser ini sudah tidak didukung.
Mutakhirkan ke Microsoft Edge untuk memanfaatkan fitur, pembaruan keamanan, dan dukungan teknis terkini.
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.
App Center Distribute akan memungkinkan pengguna Anda menginstal versi baru aplikasi saat Anda mendistribusikannya melalui App Center. Dengan versi baru aplikasi yang tersedia, SDK akan menyajikan dialog pembaruan kepada pengguna untuk mengunduh atau menunda versi baru. Setelah mereka memilih untuk memperbarui, SDK akan mulai memperbarui aplikasi Anda.
Peringatan
Google Play menganggap kode pembaruan dalam aplikasi sebagai perilaku berbahaya meskipun tidak digunakan saat runtime. Gunakan varian SDK Distribusikan seperti yang diarahkan di bagian ini atau hapus sepenuhnya SDK Distribusi yang berisi kode pembaruan dalam aplikasi sebelum mengirimkan aplikasi Anda ke Google Play. Kegagalan untuk melakukannya 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 mereka akan mencoba mengautentikasi terhadap backend App Center. Kami menyarankan untuk tidak mengaktifkan App Center Distribute untuk pengujian UI Anda.
Ikuti bagian Memulai jika Anda belum menyiapkan dan memulai SDK di aplikasi Anda.
App Center SDK dirancang dengan pendekatan modular – pengembang hanya perlu mengintegrasikan modul layanan yang mereka minati.
Buka file build.gradle tingkat aplikasi proyek (app/build.gradle
) dan tambahkan baris berikut setelah apply plugin
.
dependencies {
def appCenterSdkVersion = '5.0.6'
implementation "com.microsoft.appcenter:appcenter-distribute:${appCenterSdkVersion}"
}
Catatan
Jika versi plugin Android Gradle Anda lebih rendah dari 3.0.0, Anda perlu mengganti implementasi dengan kompilasi.
Simpan file build.gradle Anda dan pastikan untuk memicu sinkronisasi Gradle di Android Studio.
DownloadManager digunakan untuk mengunduh pembaruan. App Center SDK memberlakukan TLS 1.2 untuk meningkatkan keamanan.
Untuk menggunakan App Center, pilih modul yang ingin Anda gunakan. Secara default tidak ada modul yang dimulai dan Anda harus secara eksplisit memanggil masing-masing modul saat memulai SDK.
Tambahkan kelas Distribusikan ke metode Anda AppCenter.start()
untuk memulai layanan Distribusi App Center.
AppCenter.start(getApplication(), "{Your App Secret}", Distribute.class);
AppCenter.start(application, "{Your App Secret}", Distribute::class.java)
Pastikan Anda telah mengganti {Your App Secret}
dalam sampel kode di atas dengan Rahasia Aplikasi Anda. Android Studio secara otomatis menyarankan pernyataan impor yang diperlukan setelah Anda menambahkan referensi ke kelas ke Distribute
start()
metode , tetapi jika Anda melihat kesalahan bahwa nama kelas tidak dikenali, tambahkan baris berikut ke pernyataan impor di kelas aktivitas Anda:
import com.microsoft.appcenter.AppCenter;
import com.microsoft.appcenter.distribute.Distribute;
import com.microsoft.appcenter.AppCenter
import com.microsoft.appcenter.distribute.Distribute
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. Gunakan varian SDK Distribusikan seperti yang diarahkan di bagian ini atau hapus sepenuhnya SDK Distribusi yang berisi kode pembaruan dalam aplikasi sebelum mengirimkan aplikasi Anda ke Google Play. Kegagalan untuk melakukannya dapat menyebabkan ketidakpatuhan dan penghapusan aplikasi dari Google Play. Untuk mempermudah, kami menyediakan versi App Center Distribute SDK dengan API yang di-stubbing, sehingga satu-satunya perubahan untuk Anda adalah pertukaran dependensi.
Buka file build.gradle tingkat aplikasi proyek (app/build.gradle
).
Konfigurasikan varian build dengan menambahkan ragam produk:
android {
flavorDimensions "distribute"
productFlavors {
appCenter {
dimension "distribute"
}
googlePlay {
dimension "distribute"
}
}
}
Ubah blok dependensi untuk mengonsumsi dependensi yang berbeda berdasarkan ragam produk:
dependencies {
def appCenterSdkVersion = "5.0.6"
appCenterImplementation "com.microsoft.appcenter:appcenter-distribute:${appCenterSdkVersion}"
googlePlayImplementation "com.microsoft.appcenter:appcenter-distribute-play:${appCenterSdkVersion}"
}
Simpan file build.gradle Anda dan pastikan untuk memicu sinkronisasi Gradle di Android Studio.
Anda dapat mengubah varian build di menu drop-down Build > Select Build Variant atau Build Variants di bilah jendela alat.
Anda dapat membaca selengkapnya tentang mengonfigurasi varian build dalam dokumentasi Android.
Secara default, Distribusikan menggunakan grup distribusi publik. Jika Ingin menggunakan grup distribusi privat, Anda harus mengaturnya secara eksplisit melalui setUpdateTrack
API.
Distribute.setUpdateTrack(UpdateTrack.PRIVATE);
Distribute.setUpdateTrack(UpdateTrack.PRIVATE)
Catatan
Nilai defaultnya adalah UpdateTrack.PUBLIC
. Metode ini hanya dapat dipanggil sebelum AppCenter.start
panggilan metode. Perubahan pada trek pembaruan tidak bertahan ketika proses aplikasi dimulai ulang, dan jadi jika metode tidak selalu dipanggil sebelum AppCenter.start
panggilan, itu akan menjadi publik, secara default.
Saat aplikasi berada di latar depan (setelah Distribute.setUpdateTrack(UpdateTrack.PRIVATE);
dan AppCenter.start
), jendela browser terbuka untuk mengautentikasi pengguna. Semua pemeriksaan pembaruan berikutnya akan mendapatkan rilis terbaru di trek privat.
Jika pengguna berada di trek privat, artinya setelah autentikasi berhasil, mereka akan mendapatkan rilis terbaru dari grup distribusi privat tempat mereka menjadi anggotanya. Jika pengguna berada di trek publik, artinya mereka akan mendapatkan rilis terbaru dari grup distribusi publik apa pun.
Secara default, SDK secara otomatis memeriksa rilis baru:
Jika Anda ingin memeriksa rilis baru secara manual, Anda dapat menonaktifkan pemeriksaan otomatis untuk pembaruan. Untuk melakukan ini, panggil metode berikut sebelum SDK dimulai:
Distribute.disableAutomaticCheckForUpdate();
Distribute.disableAutomaticCheckForUpdate()
Catatan
Metode ini harus dipanggil sebelum AppCenter.start
panggilan metode.
Kemudian Anda dapat menggunakan checkForUpdate
API, yang dijelaskan di bagian berikut.
Distribute.checkForUpdate();
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 dengan mudah menyediakan string sumber daya Anda sendiri jika Anda ingin mengubah atau melokalisasi teks yang ditampilkan dalam dialog pembaruan. Lihatlah file string dalam file sumber daya ini. Gunakan nama/kunci string yang sama dan tentukan nilai yang dilokalkan untuk direfleksikan dalam dialog dalam file sumber daya aplikasi Anda sendiri.
Anda dapat menyesuaikan tampilan dialog pembaruan default dengan mengimplementasikan DistributeListener
antarmuka. Anda perlu mendaftarkan pendengar sebelum memanggil AppCenter.start
seperti yang ditunjukkan dalam contoh berikut:
Distribute.setListener(new MyDistributeListener());
AppCenter.start(...);
Distribute.setListener(MyDistributeListener())
AppCenter.start(...)
Berikut adalah contoh implementasi pendengar yang menggantikan dialog SDK dengan yang kustom:
import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.net.Uri;
import com.microsoft.appcenter.distribute.Distribute;
import com.microsoft.appcenter.distribute.DistributeListener;
import com.microsoft.appcenter.distribute.ReleaseDetails;
import com.microsoft.appcenter.distribute.UpdateAction;
public class MyDistributeListener implements DistributeListener {
@Override
public boolean onReleaseAvailable(Activity activity, ReleaseDetails releaseDetails) {
// Look at releaseDetails public methods to get version information, release notes text or release notes URL
String versionName = releaseDetails.getShortVersion();
int versionCode = releaseDetails.getVersion();
String releaseNotes = releaseDetails.getReleaseNotes();
Uri releaseNotesUrl = releaseDetails.getReleaseNotesUrl();
// Build our own dialog title and message
AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(activity);
dialogBuilder.setTitle("Version " + versionName + " available!"); // you should use a string resource instead, this is just a simple example
dialogBuilder.setMessage(releaseNotes);
// Mimic default SDK buttons
dialogBuilder.setPositiveButton(com.microsoft.appcenter.distribute.R.string.appcenter_distribute_update_dialog_download, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// This method is used to tell the SDK what button was clicked
Distribute.notifyUpdateAction(UpdateAction.UPDATE);
}
});
// We can postpone the release only if the update isn't mandatory
if (!releaseDetails.isMandatoryUpdate()) {
dialogBuilder.setNegativeButton(com.microsoft.appcenter.distribute.R.string.appcenter_distribute_update_dialog_postpone, new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
// This method is used to tell the SDK what button was clicked
Distribute.notifyUpdateAction(UpdateAction.POSTPONE);
}
});
}
dialogBuilder.setCancelable(false); // if it's cancelable you should map cancel to postpone, but only for optional updates
dialogBuilder.create().show();
// Return true if you're using your own dialog, false otherwise
return true;
}
@Override
public void onNoReleaseAvailable(Activity activity) {
Toast.makeText(activity, activity.getString(R.string.no_updates_available), Toast.LENGTH_LONG).show();
}
}
import android.app.Activity
import android.app.AlertDialog
import com.microsoft.appcenter.distribute.Distribute
import com.microsoft.appcenter.distribute.DistributeListener
import com.microsoft.appcenter.distribute.ReleaseDetails
import com.microsoft.appcenter.distribute.UpdateAction
class MyDistributeListener : DistributeListener {
override fun onReleaseAvailable(activity: Activity, releaseDetails: ReleaseDetails): Boolean {
// Look at releaseDetails public methods to get version information, release notes text or release notes URL
val versionName = releaseDetails.shortVersion
val versionCode = releaseDetails.version
val releaseNotes = releaseDetails.releaseNotes
val releaseNotesUrl = releaseDetails.releaseNotesUrl
// Build our own dialog title and message
val dialogBuilder = AlertDialog.Builder(activity)
dialogBuilder.setTitle("Version $versionName available!") // you should use a string resource instead, this is just a simple example
dialogBuilder.setMessage(releaseNotes)
// Mimic default SDK buttons
dialogBuilder.setPositiveButton(
com.microsoft.appcenter.distribute.R.string.appcenter_distribute_update_dialog_download
) { dialog, which ->
// This method is used to tell the SDK what button was clicked
Distribute.notifyUpdateAction(UpdateAction.UPDATE)
}
// We can postpone the release only if the update isn't mandatory
if (!releaseDetails.isMandatoryUpdate) {
dialogBuilder.setNegativeButton(
com.microsoft.appcenter.distribute.R.string.appcenter_distribute_update_dialog_postpone
) { dialog, which ->
// This method is used to tell the SDK what button was clicked
Distribute.notifyUpdateAction(UpdateAction.POSTPONE)
}
}
dialogBuilder.setCancelable(false) // if it's cancelable you should map cancel to postpone, but only for optional updates
dialogBuilder.create().show()
// Return true if you're using your own dialog, false otherwise
return true
}
override fun onNoReleaseAvailable(activity: Activity) {
Toast.makeText(activity, activity.getString(R.string.no_updates_available), Toast.LENGTH_LONG).show()
}
}
Seperti yang ditunjukkan dalam contoh, Anda harus memanggil Distribute.notifyUpdateAction(UpdateAction.UPDATE);
atau Distribute.notifyUpdateAction(UpdateAction.POSTPONE);
jika pendengar Anda mengembalikan true
.
Jika Anda tidak memanggil notifyUpdateAction
, panggilan balik akan diulang pada setiap perubahan aktivitas.
Pendengar dapat dipanggil lagi dengan rilis yang sama jika aktivitas berubah sebelum tindakan pengguna diberi tahu ke SDK.
Perilaku ini diperlukan untuk mencakup skenario berikut:
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, onNoReleaseAvailable
panggilan balik antarmuka dari DistributeListener
dipanggil. Ini memungkinkan Anda untuk menjalankan kode kustom dalam skenario tersebut. Contoh di atas menunjukkan cara menampilkan pesan toast ketika tidak ada pembaruan yang ditemukan.
Anda dapat mengaktifkan dan menonaktifkan Distribusi App Center saat runtime. Jika Anda menonaktifkannya, SDK tidak akan menyediakan fungsionalitas pembaruan dalam aplikasi tetapi Anda masih dapat menggunakan layanan Distribusi di portal App Center.
Distribute.setEnabled(false);
Distribute.setEnabled(false)
Untuk mengaktifkan Distribusi App Center lagi, gunakan API yang sama tetapi teruskan true
sebagai parameter.
Distribute.setEnabled(true);
Distribute.setEnabled(true)
Status ini bertahan di penyimpanan perangkat di seluruh peluncuran aplikasi.
API ini asinkron, Anda dapat membaca lebih lanjut tentang itu di panduan API Asinkron App Center kami.
Catatan
Metode ini hanya boleh digunakan setelah Distribute
dimulai.
Anda juga dapat memeriksa apakah Distribusi App Center diaktifkan atau tidak:
Distribute.isEnabled();
Distribute.isEnabled()
API ini asinkron, Anda dapat membaca lebih lanjut tentang itu di panduan API Asinkron App Center kami.
Catatan
Metode ini hanya boleh digunakan setelah Distribute
dimulai, metode ini akan selalu kembali false
sebelum dimulai.
Secara default App Center memungkinkan pembaruan dalam aplikasi hanya untuk build rilis.
Untuk mengaktifkan pembaruan dalam aplikasi di build debug, panggil metode berikut sebelum AppCenter.start
:
Distribute.setEnabledForDebuggableBuild(true);
Distribute.setEnabledForDebuggableBuild(true)
Catatan
Metode ini hanya memengaruhi build debug, dan tidak berdampak pada build rilis.
Build debug berarti bahwa android:debuggable
bendera diatur ke true
(yang biasanya secara otomatis diatur oleh varian build debug gradle yang telah ditentukan sebelumnya). Jika tidak, ini adalah build rilis.
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 .
Setelah mengintegrasikan SDK, buat versi rilis aplikasi Anda dan unggah ke App Center, pengguna di grup distribusi tersebut akan diberi tahu untuk 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 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.
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:
versionCode
atau yang lebih tinggiversionCode
nilai yang berbeda dari versionName
.Tip
Jika Anda mengunggah APK yang sama untuk kedua kalinya, dialog TIDAK akan muncul karena versinya identik.
Anda perlu mengunggah build rilis (yang menggunakan modul Distribusi SDK App Center) ke Portal App Center untuk menguji pembaruan dalam aplikasi, meningkatkan nomor versi setiap saat.
versionCode
aplikasi Anda.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 saat mereka mendapatkan pengalaman pembaruan dalam aplikasi.
Pelatihan
Jalur pembelajaran
Use advance techniques in canvas apps to perform custom updates and optimization - Training
Use advance techniques in canvas apps to perform custom updates and optimization
Dokumentasi
Dokumentasi App Center SDK - Visual Studio App Center
Menggunakan SDK App Center
Mendistribusikan build melalui App Center - Visual Studio App Center
Mendistribusikan build yang telah selesai kepada pengguna
Mendistribusikan Aplikasi Anda dengan App Center - Visual Studio App Center
Cara mendistribusikan build aplikasi Android, iOS, macOS, dan UWP kepada pengguna akhir Anda di App Center.