Langsung ke konten utama

Cara Kerja Live Updates di Capgo

Bedah mendalam implementasi teknis live updates di Capgo, memahami cara kerjanya di balik layar untuk iOS dan Android.

Ilustrasi blog Capgo untuk 'Cara Kerja Live Update di Capgo'

Memahami Live Update di Capgo

Capacitor live updates yang lebih cepat (OTA) menggantikan web bundle di dalam aplikasi Anda sehingga Anda dapat merilis perubahan JavaScript, HTML, dan CSS tanpa binary store baru. Live update adalah salah satu fitur paling kuat di aplikasi Capacitor, memungkinkan pembaruan real-time tanpa perlu submit ke app store. Mari kita dalami bagaimana Capgo mengimplementasikan fungsionalitas ini.

Konsep Inti

Aplikasi Capacitor terdiri dari dua lapisan utama:

  1. Lapisan Web: Berisi file HTML, CSS, dan JavaScript yang dimuat di WebView
  2. Lapisan Native: Berisi code spesifik platform (Java/Kotlin untuk Android, Swift untuk iOS)

Sistem live update dari Capgo bekerja dengan mengganti lapisan web saat runtime, karena file-file ini tidak dikompilasi ke dalam binary aplikasi.

Implementasi Teknis

Jalur Server di Capacitor

Capgo mengelola dua jalur kritis:

  • Jalur Server Saat Ini: Menunjuk ke file yang saat ini dimuat di WebView
  • Jalur Server Berikutnya: Menunjuk ke file yang akan dimuat saat restart aplikasi berikutnya

Implementasi Android

Di Android, Capgo mengelola jalur melalui:

// Store next server path
private void setNextCapacitorServerPath(String path) {
    SharedPreferences prefs = context.getSharedPreferences("CapWebViewSettings", Activity.MODE_PRIVATE);
    SharedPreferences.Editor editor = prefs.edit();
    editor.putString("serverBasePath", path);
    editor.apply();
}

// Update current path and reload
private void setCurrentCapacitorServerPath(String path) {
    bridge.setServerBasePath(path);
    bridge.reload();
}

Implementasi iOS

Di iOS, jalur dikelola melalui:

// Store next server path
private func setNextCapacitorServerPath(path: String) {
    KeyValueStore.standard["serverBasePath"] = path
}

// Update current path
private func setCurrentCapacitorServerPath(path: String) {
    bridge.viewController.setServerBasePath(path: path)
}

Langkah keamanan

Capgo menerapkan keamanan tingkat militer melalui enkripsi end-to-end, memastikan pembaruan aplikasi Anda tetap sepenuhnya aman dari pengembangan hingga deployment. Sistem enkripsi kami melampaui penandatanganan code tradisional untuk menyediakan keamanan zero-knowledge yang sesungguhnya.

Arsitektur Enkripsi End-to-End

  1. Enkripsi End-to-End (E2EE): Setiap update bundle dienkripsi menggunakan enkripsi AES-256-GCM sebelum meninggalkan lingkungan pengembangan Anda. Enkripsi tingkat militer ini memastikan bahwa pembaruan aplikasi Anda tetap sepenuhnya privat dan aman selama seluruh proses pengiriman.

  2. Arsitektur Zero-Knowledge: Berbeda dengan solusi update OTA lain yang hanya menandatangani update, Capgo menggunakan enkripsi zero-knowledge yang sesungguhnya. Artinya:

    • Isi update dienkripsi sebelum di-upload
    • Server Capgo hanya menyimpan data terenkripsi
    • Dekripsi hanya terjadi di perangkat pengguna akhir
    • Tidak ada pihak perantara yang dapat mengakses isi update Anda
  3. Manajemen Kunci yang Aman:

    • Kunci enkripsi dibuat dan disimpan dengan aman di lingkungan CI/CD Anda
    • Kunci privat tidak pernah menyentuh server Capgo
    • Setiap versi aplikasi dapat menggunakan kunci enkripsi unik
    • Dukungan rotasi kunci untuk keamanan yang lebih baik

Pelajari lebih lanjut tentang sistem enkripsi kami dalam panduan terperinci kami: Enkripsi End-to-End di Capgo Live Updates

Proses Keamanan Update

  1. Enkripsi Pra-Upload:

    • Update dienkripsi di pipeline CI/CD Anda
    • Setiap file dienkripsi secara individual
    • Metadata juga dienkripsi untuk privasi total
  2. Penyimpanan Aman:

    • Bundle terenkripsi disimpan di CDN global Capgo
    • Tidak ada data plain text yang pernah menyentuh server kami
    • Bahkan jika server dibobol, data tetap aman
  3. Pengiriman Aman:

    • Pembaruan dikirim melalui saluran terenkripsi
    • Setiap instance app memvalidasi integritas enkripsi
    • Mekanisme retry otomatis untuk dekripsi yang gagal
  4. Keamanan sisi klien:

    • Pembaruan diverifikasi sebelum diinstal
    • Dekripsi yang gagal memicu rollback otomatis
    • Penyimpanan kunci aman di storage terlindungi aplikasi

Pendekatan keamanan komprehensif ini memastikan pembaruan app Anda tetap terlindungi dari:

  • Serangan man-in-the-middle
  • Kebocoran sisi server
  • Modifikasi tidak sah
  • Serangan replay
  • Manipulasi konten

Siklus Hidup Pembaruan

Proses pembaruan Capgo dirancang agar otomatis secara default. Berikut cara kerja proses otomatisnya:

1. Pengecekan Pembaruan Otomatis

Plugin secara otomatis memeriksa pembaruan dalam situasi berikut:

  • Saat aplikasi dimulai

Perilaku ini dikendalikan oleh autoUpdate pengaturan:

// capacitor.config.json
{
  "plugins": {
    "CapacitorUpdater": {
      "autoUpdate": true // Enable automatic updates
    }
  }
}

Anda juga dapat memeriksa secara manual dengan getLatest()

2. Unduhan Otomatis

Ketika versi baru terdeteksi, jika autoUpdate diaktifkan:

  1. Download dimulai secara otomatis
  2. Progres dilacak secara internal
  3. Download gagal akan otomatis diulang saat aplikasi dibuka
  4. Download berhasil disimpan di penyimpanan aplikasi

Anda bisa memantau proses ini melalui event:

CapacitorUpdater.addListener('download', (info: DownloadEvent) => {
  console.log('Auto-download progress:', info.percent);
});

CapacitorUpdater.addListener('downloadComplete', (info: DownloadCompleteEvent) => {
  console.log('Auto-download complete:', info.bundle);
});

3. Instalasi Otomatis

Waktu instalasi bergantung pada konfigurasi Anda:

// capacitor.config.json
{
  "plugins": {
    "CapacitorUpdater": {
      "autoUpdate": true,
      "directUpdate": false // install update on app backgrounding
      "resetWhenUpdate": true, // reset live updates on native update (true by default)
      "autoDeleteFailed": true, // Auto cleanup failed updates (true by default)
      "autoDeletePrevious": true // Auto cleanup old versions (true by default)
    }
  }
}

Instalasi terjadi:

  • Segera jika directUpdate bernilai true
  • Saat aplikasi masuk ke background jika directUpdate bernilai false
  • Auto-rollback jika instalasi gagal

Plugin ini juga mengelola storage secara otomatis:

  • Menghapus update yang gagal jika autoDeleteFailed bernilai true
  • Membersihkan versi lama jika autoDeletePrevious bernilai true

Menunda Update

Anda bisa mengatur kapan update diinstal menggunakan kondisi delay:

// Delay until app goes to background
await CapacitorUpdater.setDelay({
  kind: 'background'
});

// Delay until specific date
await CapacitorUpdater.setDelay({
  kind: 'date',
  value: '2024-03-20T10:00:00.000Z'
});

// Delay until next native version
await CapacitorUpdater.setDelay({
  kind: 'nativeVersion'
});

// Multiple conditions
await CapacitorUpdater.setMultiDelay({
  delayConditions: [
    {
      kind: 'background'
    },
    {
      kind: 'date',
      value: '2024-03-20T10:00:00.000Z'
    }
  ]
});

Kondisi delay yang tersedia:

  • latar belakang: Instal saat aplikasi masuk ke background
  • tanggal: Instal setelah tanggal/waktu tertentu
  • nativeVersion: Instal setelah pembaruan native berikutnya
  • kill: Instal setelah aplikasi di-kill

Ini berguna untuk:

  • Menjadwalkan pembaruan di luar jam sibuk
  • Menyelaraskan pembaruan dengan aktivitas pengguna
  • Memastikan pengalaman pembaruan yang lancar
  • Mencegah gangguan saat tugas kritis

Status Update

Selama proses otomatis, bundle beralih melalui status berikut:

  1. sedang mengunduh: Download sedang berlangsung
  2. pending: Download selesai, menunggu instalasi
  3. success: Update terpasang dan aktif
  4. error: Update gagal (memicu auto-rollback)

Kepatuhan Store

Apple App Store ✅

Live Updates sepenuhnya mematuhi kebijakan Apple App Store. Seperti yang dinyatakan dalam Perjanjian Lisensi Program Apple Developer:

“code yang diinterpretasikan boleh diunduh ke Aplikasi, tetapi hanya selama code tersebut: (a) tidak mengubah tujuan utama Aplikasi dengan menyediakan fitur atau fungsi yang tidak sesuai dengan tujuan yang dimaksudkan dan diiklankan dari Aplikasi sebagaimana diajukan ke App Store, (b) tidak membuat toko atau storefront untuk code atau aplikasi lain, dan (c) tidak melewati signing, sandbox, atau fitur keamanan OS lainnya.”

Pembaruan Capgo hanya memodifikasi lapisan web sambil menghormati semua batas keamanan platform.

Google Play Store ✅

Live Updates mematuhi Kebijakan Google Play. Kebijakan Penyalahgunaan Perangkat dan Jaringan secara khusus menyatakan:

“Pembatasan ini tidak berlaku untuk code yang berjalan di virtual machine atau interpreter yang salah satunya memberikan akses tidak langsung ke Android API (seperti JavaScript di webview atau browser).”

Karena Capgo hanya memperbarui konten WebView, hal ini termasuk dalam pedoman yang diizinkan.

Praktik Terbaik

  1. Peluncuran Bertahap: Deploy pembaruan secara bertahap
  2. Kontrol Versi: Lacak semua versi yang di-deploy
  3. Dukungan Rollback: Pemulihan cepat dari masalah
  4. Update Delta: Hanya unduh file yang berubah

Kapan Menggunakan Live Update

Sempurna untuk:

  • Perbaikan bug
  • Perbaikan UI
  • Pembaruan konten
  • Feature toggle

Tidak cocok untuk:

  • Perubahan Native code
  • Pembaruan versi mayor
  • Patch keamanan yang memerlukan perubahan native

Lanjut dari Cara Kerja Live Update di Capgo

Jika Anda menggunakan Cara Kerja Live Updates di Capgo untuk merencanakan pekerjaan plugin native, hubungkan dengan Direktori Plugin Capgo untuk alur kerja produk di Direktori Plugin Capgo, Plugin Capacitor oleh Capgo untuk detail implementasi pada Capacitor Plugins oleh Capgo Menambahkan atau Memperbarui Plugin untuk detail implementasi pada Menambahkan atau Memperbarui Plugin, Alternatif Plugin Ionic Enterprise untuk alur kerja produk di alternatif plugin Ionic Enterprise, dan Capgo Native Build untuk alur kerja produk di Capgo Native Builds.

Live updates untuk aplikasi Capacitor

Saat bug web-layer sudah live, kirim perbaikannya lewat Capgo alih-alih menunggu berhari-hari untuk persetujuan app store. Pengguna mendapat update di background, sementara perubahan native tetap mengikuti jalur review normal.

Terbaru dari Blog kami

Capgo memberikan insight terbaik yang Anda butuhkan untuk membuat aplikasi mobile yang benar-benar profesional.