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:
- Lapisan Web: Berisi file HTML, CSS, dan JavaScript yang dimuat di WebView
- 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
-
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.
-
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
-
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
-
Enkripsi Pra-Upload:
- Update dienkripsi di pipeline CI/CD Anda
- Setiap file dienkripsi secara individual
- Metadata juga dienkripsi untuk privasi total
-
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
-
Pengiriman Aman:
- Pembaruan dikirim melalui saluran terenkripsi
- Setiap instance app memvalidasi integritas enkripsi
- Mekanisme retry otomatis untuk dekripsi yang gagal
-
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:
- Download dimulai secara otomatis
- Progres dilacak secara internal
- Download gagal akan otomatis diulang saat aplikasi dibuka
- 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
directUpdatebernilai true - Saat aplikasi masuk ke background jika
directUpdatebernilai false - Auto-rollback jika instalasi gagal
Plugin ini juga mengelola storage secara otomatis:
- Menghapus update yang gagal jika
autoDeleteFailedbernilai true - Membersihkan versi lama jika
autoDeletePreviousbernilai 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:
- sedang mengunduh: Download sedang berlangsung
- pending: Download selesai, menunggu instalasi
- success: Update terpasang dan aktif
- 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
- Peluncuran Bertahap: Deploy pembaruan secara bertahap
- Kontrol Versi: Lacak semua versi yang di-deploy
- Dukungan Rollback: Pemulihan cepat dari masalah
- 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.