Lebihkan ke konten utama

Bagaimana Pembaruan Langsung Bekerja di Capgo

Penjelasan teknis tentang bagaimana pembaruan langsung bekerja di Capgo, termasuk bagaimana cara kerjanya di bawah permukaan untuk kedua iOS dan Android.

Sumber artikel

Martin Donadieu

Pengarang

Valeria

Pengulas

Jordan

Pengarang

Bagaimana Cara Capgo Mengupdate Diri Sendiri

Mengerti Cara Mengupdate Diri Sendiri di Capgo

Update Diri Sendiri adalah salah satu fitur paling kuat di Capacitor aplikasi, memungkinkan update waktu nyata tanpa pengiriman ke toko aplikasi. Mari kita telusuri lebih dalam bagaimana Capgo menerapkan fitur ini.

Konsep Dasar

Aplikasi Capacitor terdiri dari dua lapisan utama:

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

Capgo’s sistem live update bekerja dengan mengganti layer web secara waktu eksekusi, 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 sedang dimuat di WebView
  • Jalur Server BerikutnyaMenunjuk file yang akan dimuat pada restart aplikasi berikutnya

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

Pada Android, __CAPGO_KEEP_0__ mengelola jalur melalui:

On iOS, jalur adalah diatur 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-Langkah Keamanan

Capgo menerapkan pengamanan tingkat militer melalui enkripsi akhir-ke-akhir, memastikan pembaruan aplikasi Anda tetap sepenuhnya aman dari pengembangan hingga pengembangan. Sistem enkripsi kami melampaui tanda tangan tradisional code untuk menyediakan keamanan nol pengetahuan yang benar.

Arsitektur Enkripsi Akhir-ke-Akhir

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

  2. Arsitektur Nol Pengetahuan: Berbeda dengan solusi pembaruan OTA lainnya yang hanya menandatangani pembaruan, Capgo menerapkan enkripsi nol pengetahuan yang benar. 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. Manajemen Kunci yang Aman:

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

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

Proses Keamanan Pembaruan

  1. Enkripsi Sebelum Mengunggah:

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

    • Paket yang dienkripsi disimpan di CDN global Capgo
    • Tidak ada data teks biasa yang pernah menyentuh server kami
    • Data tetap aman bahkan dalam kasus serangan server
  3. Pengiriman Aman:

    • Perbarui yang dikirim melalui saluran yang dienkripsi
    • Setiap instance aplikasi memvalidasi integritas enkripsi
    • Mekanisme ulang coba otomatis untuk dekripsi gagal
  4. Keamanan Sisi Klien:

    • Perbarui diverifikasi sebelum instalasi
    • Dekripsi gagal memicu rollback otomatis
    • Penyimpanan kunci yang aman di penyimpanan yang dilindungi aplikasi

Langkah keamanan ini menyeluruh memastikan bahwa pembaruan aplikasi Anda tetap dilindungi dari:

  • Serangan orang di tengah-tengah
  • Korupsi sisi server
  • Pengubahan tidak berwenang
  • Serangan ulang
  • Manipulasi konten

Jalur Hidup Pembaruan

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

1. Periksa Pembaruan Otomatis

Plugin ini secara otomatis memeriksa pembaruan dalam situasi-situasi berikut:

  • Saat aplikasi dimulai

Kebijakan ini dikontrol oleh autoUpdate Pengaturan:

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

Juga Anda dapat memeriksa secara manual dengan getLatest()

2. Download Otomatis

Ketika versi baru terdeteksi, jika autoUpdate Dapat diaktifkan:

  1. Pengunduhan dimulai secara otomatis
  2. Progres diikuti secara internal
  3. Failed downloads auto-retry at each app open
  4. Pengunduhan 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 pengaturan 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:

  • Menggunakan metode: directUpdate Benar
  • Menggunakan metode pada latar belakang aplikasi berikutnya jika directUpdate Tidak Benar
  • Rollback Otomatis jika Instalasi Gagal

Plugin ini juga secara otomatis mengelola penyimpanan:

  • Menghapus versi lama jika autoDeleteFailed Benar
  • Mengundurkan Update autoDeletePrevious Benar

Mengundurkan Update

Kamu dapat mengontrol kapan pembaruan dipasang 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:

  • background: Pasang ketika aplikasi pergi ke latar belakang
  • date: Pasang setelah tanggal/waktu spesifik
  • nativeVersion: Pasang setelah pembaruan native berikutnya
  • kill: Pasang setelah aplikasi dibunuh

Ini berguna untuk:

  • Pengaturan pembaruan selama jam-jam sibuk
  • Koordinasi pembaruan dengan aktivitas pengguna
  • Mengoptimalkan pengalaman pembaruan
  • Mencegah gangguan selama tugas kritis

Status Pembaruan

Pada proses otomatis, paket melalui status-status berikut:

  1. mengunduh: Sedang mengunduh
  2. menunggu: Mengunduh selesai, menunggu instalasi
  3. berhasil: Pembaruan terpasang dan aktif
  4. gagal: Perbarui gagal (mengaktifkan rollback otomatis)

Ketentuan Toko

Apple App Store

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

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

Pembaruan Capgo hanya memodifikasi layer web sambil menghormati semua batasan keamanan platform.

Google Play Store

Pembaruan Langsung kompatibel dengan Kebijakan Google Play. Kebijakan Penggunaan Perangkat dan Jaringan secara khusus menyatakan:

“Keterbatasan ini tidak berlaku untuk code yang berjalan 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 Fase: Deploy updates secara bertahap
  2. Kontrol VersiMengikuti semua versi yang telah diterapkan
  3. Dukungan Rollback: Pantau semua versi yang di-deploy
  4. : Dukungan Rollback: Pemulihan cepat dari masalah

Kapan Menggunakan Perbarui Langsung

Baik untuk:

  • Perbaikan Masalah
  • : Unduh hanya file yang berubah
  • : Kapan Menggunakan Perbarui Live
  • Fitur toggle

Tidak cocok untuk:

  • Pengaturan asli code
  • Pengembangan versi utama
  • Pengembangan patch keamanan yang memerlukan perubahan asli

Teruskan dari Bagaimana Live Updates Bekerja di Capgo

Jika Anda menggunakan Bagaimana Live Updates Bekerja di Capgo untuk merencanakan kerja plugin asli, 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 Build Natively untuk alur kerja produk di Capgo Build Natively

Live updates untuk Capacitor aplikasi

Ketika bug layer web masih aktif, kirimkan perbaikan melalui Capgo daripada menunggu hari-hari untuk persetujuan toko aplikasi. Pengguna mendapatkan update 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 profesional yang sebenarnya.