Lompat ke konten

Pengaturan Perbarui

When you release an update to your Capgo app, you probably want your users to receive that update as soon as possible. But you also don’t want to disrupt their experience by forcing them to wait for a download or restart the app in the middle of a session.

Polanya pembaruan Capgo dirancang untuk mencapai keseimbangan antara menyampaikan pembaruan dengan cepat dan mengurangi gangguan pada pengguna.

Dengan bawaan, inilah cara Capgo mengelola pembaruan aplikasi:

  1. Mengapa aplikasi berpindah ke latar depan, plugin Capgo memeriksa apakah ada pembaruan baru yang tersedia. Sementara aplikasi tetap terbuka, ia juga memeriksa lagi pada timer yang berulang-ulang yang dikendalikan oleh periodCheckDelay (10 menit default).

  2. Jika pembaruan ditemukan, ia diunduh di latar belakang sementara pengguna terus menggunakan versi aplikasi saat ini.

  3. Setelah download selesai, Capgo menunggu pengguna untuk mengalihkan aplikasi ke latar belakang.

  4. Mengapa ini terjadi ketika pengguna membawa aplikasi ke depan?

Aliran ini memastikan pengguna selalu menjalankan versi aplikasi terbaru, tanpa pernah terganggu oleh notifikasi pembaruan atau dipaksa menunggu download.

Penggunaan pembaruan di acara latar belakang atau kill memiliki beberapa keuntungan utama untuk pengalaman pengguna:

  • Pengguna tidak terganggu oleh notifikasi pembaruan atau dipaksa menunggu download di tengah sesi.

  • Pembaruan diterapkan secara halus di antara sesi, sehingga pengalaman membuka aplikasi selalu segar.

  • Kamu dapat mengirimkan pembaruan secara sering tanpa khawatir mengganggu pengguna aktif.

Kelemahan utama adalah jika pengguna memasuki latar belakang dan segera mengaktifkan aplikasi, mereka mungkin kehilangan status yang belum disimpan sejak pembaruan diterapkan di antara aksi-aksi tersebut.

Untuk mengurangi dampak ini, kami merekomendasikan:

  • Menghemat status secara sering dan memulihkannya dengan baik ketika aplikasi kembali.

  • Menghindari pembaruan yang sangat sering yang mengubah bagian besar dari status aplikasi.

  • Menganggapkan pengaturan perilaku pembaruan untuk aliran sensitif (lihat di bawah).

Dalam beberapa kasus, Anda mungkin ingin memiliki kontrol yang lebih spesifik atas saat pembaruan diterapkan. Misalnya, Anda mungkin ingin memastikan pengguna menyelesaikan aliran yang sedang berlangsung sebelum melakukan pembaruan, atau mengkoordinasikan pembaruan aplikasi dengan perubahan sisi server.

Capgo menyediakan sebuah setDelay fungsi yang memungkinkan Anda menentukan syarat-syarat yang harus dipenuhi sebelum pembaruan 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 telah dibackground selama minimal 60 detik.

Kondisi penundaan yang tersedia adalah:

  • date: Tunggu hingga setelah tanggal/waktu tertentu untuk menerapkan update.
  • background: Tunggu durasi minimal setelah aplikasi dibackground untuk menerapkan update.
  • nativeVersion: Tunggu instalasi biner asli dengan versi minimum sebelum menerapkan update.
  • kill: Tunggu hingga event pembunuhan aplikasi berikutnya untuk menerapkan update.

Aplikasi dapat mencampur dan mencocokkan kondisi-kondisi ini untuk mengontrol secara tepat kapan update diinstal.

Mengapa Anda mungkin ingin mengaplikasikan perbaruan segera setelah download selesai, tanpa menunggu event latar belakang atau event pembunuhan? Capgo mendukung ini melalui autoUpdate kebijakan di konfigurasi Capacitor Anda.

autoUpdate ditetapkan di file Anda, bukan di JavaScript __CAPGO_KEEP_0__. Ini mendukung nilai-nilai ini: capacitor.config.ts file, not in JavaScript code. It supports these values:

  • false atau 'off'Disable pembaruan otomatis
  • true atau 'atBackground' (default): Periksa dan download secara otomatis pada setiap periksa latar depan, kemudian aplikasikan pembaruan berikutnya ketika aplikasi berpindah ke latar belakang
  • 'atInstall': Aplikasikan segera hanya setelah instalasi segar atau pembaruan toko aplikasi asli; lainnya gunakan "atBackground" behavior
  • 'onLaunch': Aplikasikan segera hanya ketika aplikasi dibawa ke depan dari keadaan mati (cold start). Setelah cek pertama, kembali ke "atBackground" behavior
  • 'always': Periksa pada setiap transisi ke depan dan aplikasikan segera ketika pembaruan tersedia
  • 'onlyDownload': Periksa dan download secara otomatis, emit updateAvailable, dan tidak pernah atur bundle berikutnya atau aplikasikan pembaruan secara otomatis

See Test Native Builds Without Live Updates untuk keamanan 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 when using instant apply with autoSplashscreen
},
},
};
export default config;

Dengan autoUpdate: 'always', Capgo memeriksa setiap transisi ke latar depan dan langsung menerapkan update segera setelah download selesai selama periksa tersebut, bahkan jika pengguna sedang menggunakan aplikasi. Periksa periodik yang dikendalikan oleh periodCheckDelay mengaktifkan perilaku menerapkan langsung yang sama sementara aplikasi tetap terbuka.

Perlu diingat bahwa karena autoUpdate adalah pengaturan native, mode aplikasi instan memerlukan penanganan tambahan dalam JavaScript code.

Pembaruan Otomatis Tanpa Mengaplikasikan

Judul bagian “Pembaruan Otomatis Tanpa Mengaplikasikan”

Jika Anda ingin Capgo memeriksa dan mengunduh pembaruan secara otomatis tetapi tidak pernah mengaplikasikannya secara otomatis, gunakan autoUpdate: 'onlyDownload':

const config: CapacitorConfig = {
plugins: {
CapacitorUpdater: {
autoUpdate: 'onlyDownload',
},
},
};

Dalam mode ini, plugin mengeluarkan updateAvailable setelah bundle diunduh. Aplikasi Anda dapat kemudian memutuskan kapan untuk memanggil CapacitorUpdater.set() atau menampilkan prompt pembaruan sendiri.

Untuk memudahkan penggunaan mode aplikasi instan, Capgo menyediakan autoSplashscreen option yang secara otomatis menghandle menyembunyikan layar splash untuk Anda (tersedia sejak versi 7.6.0):

const config: CapacitorConfig = {
plugins: {
CapacitorUpdater: {
autoUpdate: 'always', // or 'atInstall'
autoSplashscreen: true, // Automatically hide splashscreen
keepUrlPathAfterReload: true,
},
SplashScreen: {
launchAutoHide: false,
},
},
};

Ketika autoSplashscreen diaktifkan:

  • Layanan plugin secara otomatis menyembunyikan layar splash ketika update diterapkan
  • Layanan plugin secara otomatis menyembunyikan layar splash ketika tidak ada update yang diperlukan
  • Anda tidak perlu mendengarkan appReady acara atau memanggil SplashScreen.hide()

Jika Anda lebih suka mengontrol secara manual atau memerlukan logika kustom, Anda dapat menonaktifkan autoSplashscreen dan mengelola sendiri:

import { CapacitorUpdater } from '@capgo/capacitor-updater';
import { SplashScreen } from '@capacitor/splash-screen';
CapacitorUpdater.addListener('appReady', () => {
// Hide splash screen
SplashScreen.hide();
});
CapacitorUpdater.notifyAppReady();

Event ini terjadi setelah aplikasi telah selesai menginisialisasi dan menerapkan pembaruan yang menunggu. Ini adalah titik di mana aman menampilkan antarmuka aplikasi, karena memastikan pengguna akan melihat versi terbaru. appReady Selain mengelola event ini, kami merekomendasikan mengatur opsi konfigurasi ke

ketika menggunakan mode aplikasi instan. Ini mempertahankan jalur URL saat ini ketika aplikasi di-reload karena pembaruan, membantu menjaga lokasi pengguna di aplikasi dan mengurangi kebingungan. appReady Jika Anda tidak mengelola event ini dan mengatur keepUrlPathAfterReload ketika menggunakan mode aplikasi instan, pengguna mungkin melihat versi aplikasi yang ketinggalan zaman secara singkat, diambil kembali ke rute awal, atau melihat kilauan saat pembaruan diterapkan. true __CAPGO_KEEP_0__

__CAPGO_KEEP_0__ appReady __CAPGO_KEEP_0__ keepUrlPathAfterReload __CAPGO_KEEP_0__

Memanfaatkan mode aplikasi instan dapat berguna untuk menyampaikan perbaikan bug kritis atau patch keamanan, tetapi hal ini datang dengan beberapa kekurangan:

  • User mungkin melihat kilasan singkat atau status muat sementara saat pembaruan diterapkan jika Anda tidak menghandle layar splashscreen dengan benar (baik dengan menggunakan autoSplashscreen atau pengaturan manual appReady event handling).
  • Jika pembaruan memodifikasi keadaan aplikasi atau UI, user mungkin melihat perubahan yang mengganggu di tengah sesi.
  • Posisi user di aplikasi mungkin hilang jika keepUrlPathAfterReload tidak diset, sehingga dapat membuat mereka bingung.
  • Anda perlu menghandle penyimpanan dan pemulihan keadaan dengan hati-hati untuk memastikan transisi yang lancar.

Jika Anda memungkinkan aplikasi instan, kami merekomendasikan:

  • Menggunakan autoSplashscreen: true untuk setup yang paling sederhana, atau menghandle appReady event secara manual jika Anda membutuhkan logika kustom.
  • Konfigurasi keepUrlPathAfterReload untuk true context: Halaman/area: Halaman produk live update. Peran: Label UI singkat atau item navigasi. Kunci pesan `live_update_dynamic_label_to` (Label Dinamis Live Update To).
  • untuk menjaga lokasi pengguna di aplikasi.
  • Menyimpan dan memulihkan kondisi aplikasi sesuai kebutuhan untuk menghindari kehilangan kemajuan pengguna.

In most cases, the default update behavior provides the best balance of delivering updates quickly and minimizing disruption. But for apps with specific needs, Capgo provides the flexibility to customize when and how updates are applied.

Pada umumnya, perilaku update default memberikan keseimbangan yang baik dalam mengirimkan update dengan cepat dan mengurangi gangguan. Namun, untuk aplikasi dengan kebutuhan tertentu, __CAPGO_KEEP_0__ memberikan fleksibilitas untuk mengatur kapan dan bagaimana update diterapkan.

Lanjutkan dari Perilaku Update

Judul bagian ‘Lanjutkan dari Perilaku Update’ Jika Anda menggunakan Perilaku Update untuk merencanakan pengiriman update live, hubungkannya dengan Capgo Live Updates untuk alur kerja produk di Capgo Live Updates, Ringkasan untuk detail implementasi di Ringkasan, Fitur untuk detail implementasi di Fitur, Jenis Update untuk detail implementasi di Jenis Update, dan Mulai untuk detail implementasi di Mulai.