Langsung ke konten

Penanganan Update

Ketika 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 mendownload atau memulai aplikasi kembali di tengah sesi.

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

By default, here’s how Capgo handles app updates:

  1. Ketika 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 akan diunduh di latar belakang sambil pengguna tetap menggunakan versi aplikasi saat ini.

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

  4. Ketika pengguna membawa aplikasi ke latar depan berikutnya, 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.

Applying updates on a background or kill event has a few key benefits for user experience:

  • 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.

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

The main downside is that if a user backgrounds and quickly resumes your app, they may lose any unsaved state since the update was applied in between those actions.

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.

  • Menganggapkan pengaturan 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 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 menginstal pembaruan hingga setelah 1 Juni 2023 DAN aplikasi telah di background 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 perbarui.
  • killTunggu sampai event mati aplikasi berikutnya untuk menerapkan update.

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

Untuk pembaruan kritis atau aplikasi dengan keadaan sederhana, Anda mungkin ingin menerapkan pembaruan segera setelah diunduh, tanpa menunggu event latar belakang atau event pembunuhan. Capgo mendukung hal ini melalui autoUpdate pola di konfigurasi Capacitor Anda.

autoUpdate __CAPGO_KEEP_0__, bukan dalam kode JavaScript __CAPGO_KEEP_0__. __CAPGO_KEEP_0__ mendukung nilai-nilai berikut: capacitor.config.ts file, bukan dalam JavaScript code. Ia mendukung nilai-nilai ini:

  • false atau 'off'Matikan periksa update otomatis
  • true atau 'atBackground' (Cek otomatis dan download secara teratur setiap kali aplikasi berada di latar depan, lalu aplikasi akan diperbarui ketika aplikasi berada di latar belakang)
  • 'atInstall'Hanya terapkan segera setelah instalasi segar atau pembaruan toko aplikasi asli; lainnya gunakan "atBackground" behavior
  • 'onLaunch'Hanya terapkan segera ketika aplikasi dibawa ke depan dari keadaan mati (start dingin). Setelah itu, cek terlebih dahulu, kemudian kembali ke "atBackground" behavior
  • 'always'Periksa setiap transisi ke depan dan terapkan segera ketika update tersedia
  • 'onlyDownload'Periksa dan download secara otomatis, lanjutkan updateAvailable, and never set the next bundle or apply an update automatically

: Cek dan download secara otomatis, emit

Bagian berjudul “Test a Native Build Tanpa Live Update”

lihat Test Native Builds Tanpa Live Updates untuk keamanan versi native, 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;

With autoUpdate: 'always', Capgo checks on every foreground transition and immediately applies an update as soon as the download completes during that check, even if the user is actively using the app. Periodic checks controlled by periodCheckDelay Dapat memicu perilaku aplikasikan segera yang sama sementara aplikasi tetap terbuka.

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

If you want Capgo to check and download updates automatically but never apply them automatically, use autoUpdate: 'onlyDownload':

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

In mode ini, plugin mengeluarkan updateAvailable setelah bundel diunduh. Aplikasi Anda kemudian dapat memutuskan 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, kemudian jaga layar 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,
},
},
};

Ketika autoSplashscreen diaktifkan:

  • Plugin ini secara otomatis menyembunyikan layar splash ketika update diterapkan
  • The plugin automatically hides the splashscreen when no update is needed
  • Anda tidak perlu mendengarkan secara manual appReady Kerja tambahan setelah layar splash disembunyikan SplashScreen.hide()

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

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

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

Set keepUrlPathAfterReload context 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 kritikal atau patch keamanan, tetapi hal ini juga memiliki beberapa kekurangan:

  • Pengguna mungkin melihat kilauan singkat atau status memuat selama proses pembaruan berlangsung jika @capacitor/splash-screen tidak ada atau autoSplashscreen Tidak diaktifkan.
  • Jika pembaruan mengubah status aplikasi atau tampilan UI, pengguna mungkin melihat perubahan yang mengganggu di tengah sesi.
  • Posisi pengguna di aplikasi mungkin hilang jika keepUrlPathAfterReload tidak ditetapkan, sehingga dapat membingungkan mereka.
  • Anda perlu mengelola penyimpanan dan pemulihan state dengan hati-hati untuk memastikan transisi yang lancar.

Jika Anda mengaktifkan aplikasi instan, kami sarankan:

  • Mengunggah dengan npx @capgo/cli@latest bundle upload --delta agar pengunduhan tidak memperlambat pengalaman pengguna.
  • Menginstal @capacitor/splash-screen dan mengatur autoSplashscreen: true dengan launchAutoHide: false.
  • Mengatur keepUrlPathAfterReload untuk true Menghemat lokasi pengguna di aplikasi.
  • Saving and restoring the app state as needed to avoid losing user progress.
  • Menguji secara menyeluruh perilaku pembaruan aplikasi Anda untuk memastikan tidak ada transisi yang tidak nyaman, 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 to plan live update delivery, connect it with Capgo Pembaruan Langsung untuk alur kerja produk dalam Capgo Live Updates, Overview Untuk detail implementasi di Ringkasan. Features Untuk detail implementasi di Fitur. Jenis Perbarui untuk detail implementasi di Jenis Update, dan Mulai Menggunakan untuk detail implementasi di Mulai.