Perilaku Update
Salin prompt setup yang berisi langkah install dan panduan markdown lengkap untuk plugin ini.
Saat merilis update ke aplikasi Capgo Anda, Anda pasti ingin pengguna segera menerimanya. Namun, Anda juga tidak ingin mengganggu pengalaman mereka dengan memaksa mereka menunggu download atau restart aplikasi di tengah sesi.
Perilaku update Capgo dirancang untuk menyeimbangkan antara pengiriman update yang cepat dan meminimalkan gangguan bagi pengguna Anda.
Alur Update Default
Bagian berjudul “Default Update Flow”Secara default, begini cara Capgo menangani update aplikasi:
-
Saat aplikasi masuk ke foreground, plugin Capgo akan mengecek apakah ada update baru. Selama aplikasi tetap terbuka, ia juga akan mengecek kembali melalui timer berulang yang dikontrol oleh
periodCheckDelay(default 10 menit). -
Jika pembaruan ditemukan, proses download akan berjalan di latar belakang sementara pengguna tetap menggunakan versi aplikasi saat ini.
-
Setelah download selesai, Capgo akan menunggu hingga pengguna memindahkan aplikasi ke background.
-
Saat pengguna membuka kembali aplikasi ke foreground, mereka akan menjalankan versi yang sudah di-update.
Flow ini memastikan pengguna selalu menjalankan versi terbaru aplikasi Anda, tanpa terganggu oleh prompt update atau dipaksa menunggu proses download.
Mengapa Pendekatan Ini?
Bagian berjudul “Mengapa Pendekatan Ini?”Menerapkan update saat background atau event kill memberikan beberapa manfaat utama bagi user experience:
-
User tidak terganggu oleh prompt update atau dipaksa menunggu download di tengah sesi.
-
Update diterapkan secara seamless di antara sesi, sehingga pengalaman saat membuka aplikasi selalu terasa baru.
-
Anda dapat mengirimkan update secara berkala tanpa khawatir mengganggu user yang sedang aktif.
Kekurangan utamanya adalah jika user memindahkan aplikasi ke background lalu segera membukanya kembali, mereka mungkin kehilangan state yang belum tersimpan karena update diterapkan di antara aksi tersebut.
Untuk memitigasi hal ini, kami menyarankan:
-
Simpan state secara berkala dan kembalikan (restore) secara graceful saat aplikasi resume.
-
Hindari update yang terlalu sering yang mengubah bagian besar dari app state.
-
Pertimbangkan menyesuaikan perilaku update untuk alur sensitif (lihat di bawah).
Mengatur Kapan Update Diterapkan
Bagian berjudul “Menyesuaikan Kapan Update Diterapkan”Dalam beberapa kasus, Anda mungkin butuh kontrol lebih atas kapan tepatnya sebuah update diterapkan. Misalnya, Anda ingin memastikan user menyelesaikan alur yang sedang berjalan sebelum update, atau menyelaraskan update aplikasi dengan perubahan di sisi server.
Capgo menyediakan setDelay fungsi yang memungkinkan Anda menentukan kondisi yang harus terpenuhi sebelum update diinstal:
import { CapacitorUpdater } from '@capgo/capacitor-updater';
await CapacitorUpdater.setMultiDelay({ delayConditions: [ { kind: 'date', value: '2023-06-01T00:00:00.000Z', }, { kind: 'background', value: '60000', }, ],});Contoh ini akan menunda instalasi update hingga setelah 1 Juni 2023 DAN aplikasi sudah berada di background selama minimal 60 detik.
Kondisi delay yang tersedia:
date: Tunggu hingga melewati tanggal/waktu tertentu untuk menerapkan update.background: Tunggu durasi minimum setelah aplikasi masuk ke background untuk menerapkan update.nativeVersion: Tunggu instalasi binary native dengan versi minimum sebelum menerapkan update.kill: Tunggu sampai event app kill berikutnya untuk menerapkan update.
Anda bisa mencampur berbagai kondisi ini untuk mengontrol kapan update diinstal secara presisi.
Menerapkan Update Secara Instan
Bagian berjudul “Applying Updates Immediately”Untuk update kritikal atau aplikasi dengan state yang sangat simpel, Anda mungkin ingin menerapkan update segera setelah diunduh, tanpa menunggu event background atau kill. Capgo mendukung ini melalui autoUpdate policy di dalam konfigurasi Capacitor Anda.
autoUpdate diatur di file capacitor.config.ts Anda, bukan di JavaScript code. Ini mendukung nilai berikut:
falseatau'off': Nonaktifkan pengecekan update otomatistrueatau'atBackground'(default): Cek dan download otomatis setiap kali aplikasi masuk foreground, lalu terapkan update saat aplikasi pindah ke background'atInstall': Terapkan segera hanya setelah fresh install atau update native app store; jika tidak, gunakan"atBackground"perilaku'onLaunch': Hanya diterapkan segera saat aplikasi dibuka dari kondisi mati (cold start). Setelah pengecekan pertama, beralih ke"atBackground"perilaku'always': Cek setiap kali aplikasi masuk ke foreground dan terapkan segera jika ada update tersedia'onlyDownload': Cek dan download otomatis, kirimupdateAvailable, dan jangan pernah mengatur bundle berikutnya atau menerapkan update secara otomatis
Tes Native Build Tanpa Live Updates
Bagian berjudul “Test a Native Build Without Live Updates”Lihat Uji Native Build Tanpa Live Updates untuk pengamanan konfigurasi native-version, channel-policy, dan CI.
import { CapacitorConfig } from '@capacitor/cli';
const config: CapacitorConfig = { plugins: { CapacitorUpdater: { autoUpdate: 'always', // or 'atInstall' for updates only on app install/update autoSplashscreen: true, keepUrlPathAfterReload: true, }, SplashScreen: { launchAutoHide: false, // Required for instant apply with autoSplashscreen }, },};
export default config;Dengan autoUpdate: 'always', Capgo memeriksa pada setiap transisi foreground dan langsung menerapkan update begitu download selesai dalam pengecekan tersebut, bahkan jika pengguna sedang aktif menggunakan aplikasi. Pengecekan berkala yang dikontrol oleh periodCheckDelay dapat memicu perilaku immediate apply yang sama selama aplikasi tetap terbuka.
Perlu dicatat bahwa karena autoUpdate adalah konfigurasi native, mode instant apply memerlukan penanganan tambahan di JavaScript code Anda.
Download Otomatis Tanpa Menerapkan
Bagian berjudul “Download Otomatis Tanpa Apply”Jika ingin Capgo mengecek dan download update otomatis tapi tidak pernah meng-apply-nya otomatis, gunakan autoUpdate: 'onlyDownload':
const config: CapacitorConfig = { plugins: { CapacitorUpdater: { autoUpdate: 'onlyDownload', }, },};Dalam mode ini, plugin akan memancarkan updateAvailable setelah bundle selesai di-download. Aplikasi Anda kemudian bisa memutuskan kapan memanggil CapacitorUpdater.set() atau menampilkan update prompt sendiri.
Penanganan Splashscreen Otomatis
Bagian berjudul “Penanganan Splashscreen Otomatis”Mode penerapan instan ("atInstall", "onLaunch", "always") memerlukan autoSplashscreen dan @capacitor/splash-screen (tersedia sejak versi 7.6.0). Instal plugin, lalu biarkan splash tetap terlihat sampai Capgo menyembunyikannya:
const config: CapacitorConfig = { plugins: { CapacitorUpdater: { autoUpdate: 'always', // or 'atInstall' autoSplashscreen: true, // Automatically hide splashscreen keepUrlPathAfterReload: true, }, SplashScreen: { launchAutoHide: false, }, },};Saat autoSplashscreen diaktifkan:
- Plugin secara otomatis menyembunyikan splashscreen saat update diterapkan
- Plugin otomatis menyembunyikan splashscreen saat tidak ada update yang diperlukan
- Anda tidak perlu secara manual mendengarkan
appReadyevent atau memanggilSplashScreen.hide()
Kerja ekstra setelah splash hilang
Bagian berjudul “Pekerjaan tambahan setelah splash screen hilang”Pertahankan autoSplashscreen: true. Jika Anda butuh logika tambahan setelah update siap, dengarkan appReady juga. Jangan lewatkan splash plugin atau autoSplashscreen untuk ini:
import { CapacitorUpdater } from '@capgo/capacitor-updater';
CapacitorUpdater.addListener('appReady', () => { // Update is applied. autoSplashscreen already hid the splash.});
CapacitorUpdater.notifyAppReady();Panduan appReady event dipicu setelah app selesai inisialisasi dan menerapkan semua update yang tertunda.
Atur keepUrlPathAfterReload ke true saat menggunakan mode instant apply. Ini menjaga path URL saat ini ketika app dimuat ulang karena adanya update.
Mode instant apply berguna untuk mengirimkan perbaikan bug kritis atau patch keamanan, namun ada beberapa konsekuensinya:
- User mungkin melihat flicker singkat atau loading saat update diterapkan jika
@capacitor/splash-screenhilang atauautoSplashscreentidak diaktifkan. - Jika update mengubah state app atau UI, user mungkin melihat perubahan yang mengganggu di tengah sesi.
- Posisi user di dalam app bisa hilang jika
keepUrlPathAfterReloadtidak diatur, yang berpotensi membuat mereka bingung. - Anda perlu menangani proses simpan dan restore state dengan teliti untuk memastikan transisi yang mulus.
Jika Anda mengaktifkan instant apply, kami menyarankan:
- Upload menggunakan
npx @capgo/cli@latest bundle upload --deltaagar proses download tidak memperlambat user experience. - Instal
@capacitor/splash-screendan mengaturautoSplashscreen: truedenganlaunchAutoHide: false. - Pengaturan
keepUrlPathAfterReloadketrueuntuk mempertahankan posisi pengguna di dalam aplikasi. - Menyimpan dan memulihkan state aplikasi sesuai kebutuhan agar progres pengguna tidak hilang.
- Uji coba secara menyeluruh perilaku update aplikasi Anda untuk memastikan tidak ada transisi yang mengganggu, kehilangan state, atau perubahan lokasi yang membingungkan.
Dalam kebanyakan kasus, perilaku update default memberikan keseimbangan terbaik antara pengiriman update yang cepat dan minimalisasi gangguan. Namun untuk aplikasi dengan kebutuhan khusus, Capgo memberikan fleksibilitas untuk menyesuaikan kapan dan bagaimana update diterapkan.
Lanjutkan dari Update Behavior
Bagian berjudul “Lanjutkan dari Perilaku Update”Jika Anda menggunakan Perilaku Update untuk merencanakan pengiriman live update, hubungkan dengan Capgo Live Updates untuk alur kerja produk di Capgo Live Updates, Ikhtisar untuk detail implementasi di Overview, Fitur untuk detail implementasi di Features, Tipe Update untuk detail implementasi di Update Types, dan Panduan Memulai untuk detail implementasi di Getting Started.