Langsung ke konten

Perilaku Pembaruan

Saat Anda mengeluarkan pembaruan ke aplikasi Capgo Anda, Anda mungkin ingin pengguna Anda menerima pembaruan tersebut secepat mungkin. Namun Anda juga tidak ingin mengganggu pengalaman mereka dengan memaksa mereka menunggu untuk mengunduh atau memulai aplikasi di tengah sesi.

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

Dengan default, berikut adalah cara Capgo mengelola pembaruan aplikasi:

  1. Saat 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 ada pembaruan, maka diunduh di latar belakang sementara pengguna terus menggunakan versi aplikasi saat ini.

  3. Saat pengunduhan selesai, Capgo menunggu pengguna untuk mengalihkan aplikasi ke latar belakang.

  4. Ketika pengguna membawa aplikasi ke depan, mereka akan menjalankan versi yang diperbarui.

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

Penggunaan pembaruan di event latar belakang atau event pembunuhan memiliki beberapa keuntungan utama untuk pengalaman pengguna:

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

  • Perbarui dilakukan dengan lancar di antara sesi, sehingga pengalaman membuka aplikasi selalu segar.

  • Anda dapat mengirimkan pembaruan secara berkala tanpa khawatir mengganggu pengguna aktif.

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

Mengurangi dampak ini, kami merekomendasikan:

  • Menyimpan status secara teratur dan memulihkannya dengan baik ketika aplikasi kembali.

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

  • Menganggap perlu untuk mengatur perilaku pembaruan untuk aliran sensitif (lihat di bawah).

Dalam beberapa kasus, Anda mungkin ingin memiliki kontrol yang lebih ketat atas kapan pembaruan diterapkan. Misalnya, Anda mungkin ingin memastikan pengguna menyelesaikan aliran yang sedang berlangsung sebelum memperbarui, 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 pembaruan hingga setelah 1 Juni 2023 DAN aplikasi telah dibackground selama minimal 60 detik.

Kondisi penundaan yang tersedia adalah:

  • date: Menunggu setelah tanggal/waktu tertentu untuk menerapkan pembaruan.
  • background: Menunggu durasi minimum setelah aplikasi di background untuk menerapkan pembaruan.
  • nativeVersionTunggu instalasi biner asli dengan versi minimum sebelum menerapkan update.
  • kill: Menunggu event mati aplikasi selanjutnya untuk menerapkan pembaruan.

Kamu bisa mencampur dan mencocokan kondisi-kondisi ini untuk mengontrol secara tepat kapan pembaruan diinstal.

Mengaplikasikan Perbarui Langsung

Pembaruan Diterapkan Secara Langsung

For update kritis atau aplikasi dengan keadaan sederhana, Anda mungkin ingin menerapkan update segera setelah unduhannya selesai, tanpa menunggu event latar belakang atau event kill. Capgo mendukung hal ini melalui autoUpdate policy di konfigurasi Capacitor Anda.

autoUpdate dipasang di pengaturan Anda capacitor.config.ts file, bukan dalam JavaScript code. Ini mendukung nilai-nilai berikut:

  • false atau 'off': Nonaktifkan pemindaian update otomatis
  • true atau 'atBackground' (default): Periksa dan download secara otomatis pada setiap pemindaian ke depan, kemudian terapkan update pada saat aplikasi berpindah ke latar belakang
  • 'atInstall': Terapkan segera hanya setelah instalasi segar atau update aplikasi toko native; jika tidak, gunakan "atBackground" tingkah laku
  • 'onLaunch'Hanya aplikasikan segera ketika aplikasi dibawa ke depan dari keadaan mati (cold start). Setelah itu, kembali ke "atBackground" tingkah laku
  • 'always': Periksa pada setiap transisi ke depan dan terapkan segera ketika update tersedia
  • 'onlyDownload': Periksa dan download secara otomatis, emit updateAvailable, dan tidak pernah atur bundle berikutnya atau terapkan update secara otomatis

See Melihat Pembangunan Nativ Tanpa Live Update untuk keamanan versi natif, kebijakan saluran, dan pengaturan 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 setiap transisi ke latar depan dan langsung menerapkan update segera setelah download selesai selama periksa itu, bahkan jika pengguna sedang menggunakan aplikasi. Periksa berkala yang dikendalikan oleh periodCheckDelay bisa memicu perilaku menerapkan langsung yang sama sementara aplikasi tetap terbuka.

Mengingat bahwa karena autoUpdate adalah pengaturan konfigurasi asli, mode aplikasi instan memerlukan penanganan tambahan di JavaScript code.

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',
},
},
};

Ini mode, plugin mengeluarkan updateAvailable setelah bundel diunduh. Aplikasi Anda dapat menentukan kapan untuk memanggil CapacitorUpdater.set() atau menampilkan pesan pembaruan sendiri.

Mode aplikasi instan (“"atInstall", "onLaunch", "always") memerlukan autoSplashscreen dan @capacitor/splash-screen (tersedia sejak versi 7.6.0). Pasang plugin, lalu jaga layar splash tetap terlihat sampai Capgo menghilangkannya:

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

Ketika autoSplashscreen diaktifkan:

  • Plugin ini secara otomatis menyembunyikan layar splash ketika update diterapkan
  • Plugin ini secara otomatis menyembunyikan layar splash ketika tidak ada update yang diperlukan
  • Anda tidak perlu mendengarkan secara manual appReady Extra pekerjaan setelah layar splash disembunyikan SplashScreen.hide()

Keep autoSplashscreen: trueJika Anda memerlukan logika tambahan setelah update sudah siap, dengarkan untuk appReady Juga. Tidak lewatkan plugin splash atau autoSplashscreen untuk hal ini:

import { CapacitorUpdater } from '@capgo/capacitor-updater';
CapacitorUpdater.addListener('appReady', () => {
// Update is applied. autoSplashscreen already hid the splash.
});
CapacitorUpdater.notifyAppReady();

The appReady event memicu ketika aplikasi telah selesai menginisialisasi dan menerapkan pembaruan yang menunggu.

Set keepUrlPathAfterReload ke true Saat menggunakan mode aplikasi instan. Ini mempertahankan URL path saat ini ketika aplikasi di-reload karena update.

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

  • Pengguna mungkin melihat kilauan singkat atau status memuat sementara saat pembaruan diterapkan jika @capacitor/splash-screen tidak ada atau autoSplashscreen tidak diaktifkan.
  • Jika pembaruan memodifikasi keadaan aplikasi atau UI, pengguna mungkin melihat perubahan yang mengganggu di tengah sesi.
  • Posisi pengguna di aplikasi mungkin hilang jika keepUrlPathAfterReload tidak diatur, sehingga mengganggu mereka.
  • Anda perlu mengelola dengan hati-hati menyimpan dan memulihkan keadaan untuk memastikan transisi yang lancar.

Jika Anda mengaktifkan aplikasi instan, kami merekomendasikan:

  • Mengunggah dengan npx @capgo/cli@latest bundle upload --delta agar download tidak memperlambat pengalaman pengguna.
  • Menginstal @capacitor/splash-screen dan mengatur autoSplashscreen: true bersama launchAutoHide: false.
  • Mengatur keepUrlPathAfterReload untuk true Menghematkan lokasi pengguna di aplikasi.
  • Menghemat dan memulihkan keadaan aplikasi sesuai kebutuhan untuk menghindari kehilangan kemajuan pengguna.
  • Menguji secara menyeluruh perilaku pembaruan aplikasi Anda untuk memastikan tidak ada transisi yang mengganggu, kehilangan status, atau perubahan lokasi yang membingungkan.

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.

Jika Anda menggunakan Pola Pembaruan untuk merencanakan live update pengiriman, hubungkannya dengan Capgo Pembaruan Langsung untuk alur kerja produk dalam Capgo Live Updates, Overview untuk detail implementasi di Ringkasan. Features untuk detail implementasi di Fitur. untuk detail implementasi di Fitur untuk detail implementasi di Jenis Update, dan Mulai Menggunakan untuk detail implementasi di Mulai.