Lebihkan ke konten utama

Bagaimana Pembaruan Langsung Bekerja di Capgo

Deep dive ke dalam implementasi teknis pembaruan langsung di Capgo, memahami bagaimana hal ini bekerja di balik layar untuk kedua iOS dan Android.

Martin Donadieu

Martin Donadieu

Pengembang Konten

Bagaimana Pembaruan Langsung Bekerja di Capgo

Memahami Pembaruan Langsung di Capgo

Pembaruan langsung adalah salah satu fitur paling kuat di aplikasi Capacitor, memungkinkan pembaruan waktu nyata tanpa pengajuan ke toko aplikasi. Mari kita menjelajahi bagaimana Capgo menerapkan fungsi ini.

Konsep Dasar

A aplikasi Capacitor terdiri dari dua lapisan utama:

  1. Lapisan Web: Mengandung file HTML, CSS, dan JavaScript yang dimuat dalam WebView
  2. Lapisan Nativ: Mengandung kode code yang spesifik platform (Java/Kotlin untuk Android, Swift untuk iOS)

Sistem pembaruan hidup Capgo bekerja dengan mengganti lapisan web secara waktu eksekusi, karena file-file ini tidak dikompilasi ke dalam file biner aplikasi.

Implementasi Teknis

Jalur Server di Capacitor

Capgo mengelola dua jalur kritis:

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

Pengimplementasian Android

Pada 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();
}

Pengimplementasian iOS

Pada iOS, jalur dielola 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)
}

Pengamanan Keamanan

Capgo menerapkan pengamanan militer melalui enkripsi end-to-end, memastikan pembaruan aplikasi tetap sepenuhnya aman dari pengembangan hingga pengembangan. Sistem enkripsi kami melampaui tanda tangan tradisional code untuk menyediakan keamanan zero-knowledge yang benar.

Arsitektur Enkripsi End-to-End

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

  2. Arsitektur Keamanan Zero-Knowledge: Berbeda dengan solusi pembaruan OTA lainnya yang hanya menandatangani pembaruan, Capgo menggunakan enkripsi zero-knowledge yang sebenarnya. Ini berarti:

    • Pembaruan isi dienkripsi sebelum diunggah
    • Server Capgo hanya menyimpan data yang dienkripsi
    • Enkripsi hanya terjadi pada perangkat pengguna akhir
    • Tidak ada perantara yang dapat mengakses konten pembaruan Anda
  3. Pengelolaan Kunci Rahasia:

    • Kunci enkripsi dihasilkan dan disimpan dengan aman di lingkungan CI/CD Anda
    • Kunci pribadi tidak pernah menyentuh server Capgo
    • Masing-masing versi aplikasi dapat menggunakan kunci enkripsi unik
    • Dukungan rotasi kunci untuk meningkatkan keamanan

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

Proses Pembaruan Keamanan

  1. Enkripsi Sebelum Mengunggah:

    • Pembaruan dienkripsi dalam pipeline CI/CD Anda
    • Setiap file dienkripsi secara individu
    • Metadata juga dienkripsi untuk privasi yang lengkap
  2. Penyimpanan yang Aman:

    • Bundle yang dienkripsi disimpan di CDN global Capgo
    • Tidak ada data teks biasa yang pernah menyentuh server kami
    • Data tetap aman bahkan jika terjadi pelanggaran server
  3. Pengiriman yang Aman:

    • Pembaruan dikirimkan melalui saluran yang dienkripsi
    • Setiap instance aplikasi memvalidasi integritas enkripsi
    • Mechanisme ulang coba otomatis untuk dekripsi gagal
  4. Keamanan Sisi Klien:

    • Pembaruan diverifikasi sebelum instalasi
    • Dekripsi gagal memicu ulang balik otomatis
    • Penggunaan penyimpanan kunci yang aman di penyimpanan terlindungi aplikasi

Approach keamanan ini yang komprehensif memastikan bahwa pembaruan aplikasi Anda tetap dilindungi dari:

  • Pengintaian orang di tengah
  • Kerusuhan sisi server
  • Modifikasi tidak berwenang
  • Pengulangan serangan
  • Pengacakan konten

Lifecycle Pembaruan

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

1. Periksa Pembaruan Otomatis

Plugin otomatis memeriksa pembaruan dalam situasi-situasi berikut:

  • Saat aplikasi dimulai

Perilaku ini dikontrol oleh pengaturan: autoUpdate Anda juga dapat memeriksa secara manual dengan menggunakan

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

2. Download Otomatis getLatest()

Saat versi baru terdeteksi, jika

aktifkan: autoUpdate Pembaruan dimulai secara otomatis

  1. Progress diikuti secara internal
  2. setting:
  3. Unduh gagal akan diretry secara otomatis setiap aplikasi dibuka
  4. Unduh sukses disimpan di penyimpanan aplikasi

Anda dapat 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 tergantung 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 adalah true
  • Pada latar belakang aplikasi berikutnya jika directUpdate adalah false
  • Rollback otomatis jika instalasi gagal

Plugin ini juga secara otomatis mengelola penyimpanan:

  • Menghapus update gagal jika autoDeleteFailed benar
  • Menghapus versi lama jika autoDeletePrevious benar

Mengundurkan Update

Kamu bisa mengontrol 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 ketika aplikasi pergi ke latar belakang
  • tanggal: Instal setelah tanggal/waktu tertentu
  • nativeVersion: Instal setelah pembaruan asli berikutnya
  • mati: Instal setelah aplikasi dimatikan

Ini berguna untuk:

  • Mengatur pembaruan selama jam-jam sibuk
  • Mengkoordinasikan pembaruan dengan aktivitas pengguna
  • Menghasilkan pengalaman pembaruan yang lancar
  • Mencegah gangguan selama tugas-tugas kritis

Status Pembaruan

Saat proses otomatis berlangsung, paket bertransisi melalui status-status ini:

  1. mengunduh: Sedang mengunduh
  2. menunggu: Download selesai, menunggu instalasi
  3. sukses: Perbarui terpasang dan aktif
  4. error: Perbarui gagal (mengaktifkan rollback otomatis)

Pengawasan Toko

Apple App Store ✅

Pembaruan Langsung sepenuhnya kompatibel dengan kebijakan Apple App Store. Seperti yang dijelaskan dalam Perjanjian Lisensi Program Pengembang Apple:

“Interpreted code dapat diunduh ke sebuah Aplikasi tetapi hanya selama code: (a) tidak mengubah tujuan utama Aplikasi dengan menyediakan fitur atau fungsi yang tidak konsisten dengan tujuan dan iklan yang dimaksudkan Aplikasi yang disampaikan ke App Store, (b) tidak menciptakan toko atau tempat jual untuk code atau aplikasi lainnya, dan (c) tidak menghindari tanda tangan, sandbox, atau fitur keamanan lainnya dari OS.”

Pembarui Capgo hanya memodifikasi layer web sementara menghormati semua batasan keamanan platform.

Google Play Store ✅

Live Updates memenuhi Kebijakan Google Play. Kebijakan Penggunaan Perangkat dan Jaringan secara spesifik menyatakan:

“Keterbatasan ini tidak berlaku untuk code yang menjalankan di mesin virtual atau interpreter di mana salah satunya memberikan akses tidak langsung ke API Android (seperti JavaScript di webview atau browser).”

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

Praktik Terbaik

  1. Rollout Langsung: Rilis perbarui secara bertahap
  2. Pengendalian Versicontext
  3. : Ikuti semua versi yang dideployBantuan Rollback
  4. : Kembali ke versi sebelumnya dari masalahPerbarui Delta Live Update (Live Update Delta Title) : Hanya download file yang berubah

When untuk Menggunakan Live Updates

Perfect untuk:

  • Pembetukan bug
  • Pembaharuan UI
  • Pembaharuan konten
  • Tombol fitur

Tidak sesuai untuk:

  • Pembetukan native code
  • Pembaharuan versi utama
  • Patch keamanan yang memerlukan perubahan native

Teruskan dari Bagaimana Live Updates Berfungsi di Capgo

Jika Anda menggunakan Bagaimana Perbarui Hidup Bekerja di Capgo untuk merencanakan kerja plugin native, hubungkannya dengan Capgo Direktori Plugin untuk alur kerja produk di Capgo Direktori Plugin, Capacitor Plugin oleh Capgo untuk detail implementasi di Capacitor Plugin oleh Capgo Menambahkan atau Mengupdate Plugin untuk detail implementasi di Menambahkan atau Mengupdate Plugin, Alternatif Plugin Enterprise Ionic untuk alur kerja produk di Alternatif Plugin Enterprise Ionic, dan Capgo Pembangunan Native untuk alur kerja produk di Capgo Pembangunan Native.

Perbaruan Langsung untuk Aplikasi Capacitor

Ketika ada bug layer web yang hidup, kirimkan perbaikan melalui Capgo daripada menunggu hari-hari untuk persetujuan toko aplikasi. Pengguna mendapatkan perbaruan di latar belakang sementara perubahan native tetap dalam jalur review normal.

Dukungan Manusia dari Martin

Mulai Sekarang

Terbaru dari Blog Kami

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