Mengerti Perbarui Hidup di Capgo
Perbarui hidup adalah salah satu fitur paling kuat di aplikasi Capacitor, memungkinkan perbarui waktu nyata tanpa pengajuan ke toko aplikasi. Mari kita telusuri mendalam bagaimana Capgo menerapkan fungsi ini.
Konsep Dasar
Aplikasi Capacitor terdiri dari dua lapisan utama:
- Layer Web: Berisi file HTML, CSS, dan JavaScript yang dimuat di WebView
- Layer Asli: Mengandung code spesifik platform (Java/Kotlin untuk Android, Swift untuk iOS)
Capgo sistem pembaruan hidup bekerja dengan mengganti layer web pada waktu runtime, karena file-file ini tidak dikompilasi ke dalam biner 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 Berikutnya: Menunjuk ke file yang akan dimuat pada restart aplikasi berikutnya
Implementasi Android
Pada Android, Capgo mengelola jalur-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
Pada iOS, jalur 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)
}
Pengamanan
Capgo menerapkan pengamanan militer melalui enkripsi akhir-ke-akhir, memastikan pembaruan aplikasi tetap sepenuhnya aman dari pengembangan hingga peluncuran. Sistem enkripsi kami melampaui tanda tangan tradisional code untuk menyediakan keamanan tanpa pengetahuan yang sebenarnya.
Arsitektur Enkripsi Akhir-ke-Akhir
-
Enkripsi Akhir-ke-Akhir (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.
-
Arsitektur Tanpa Pengetahuan: Berbeda dengan solusi pembaruan OTA lainnya yang hanya menandatangani pembaruan, Capgo menerapkan enkripsi tanpa pengetahuan yang sebenarnya. Ini berarti:
- Pembaruan isi dienkripsi sebelum diunggah
- Server Capgo hanya menyimpan data yang dienkripsi
- Penyandian hanya terjadi pada perangkat pengguna akhir
- Tidak ada perantara yang dapat mengakses konten update Anda
-
Manajemen Kunci yang Terlindungi:
- Kunci enkripsi dibuat 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 ditingkatkan
Pelajari lebih lanjut tentang sistem enkripsi kami di panduan detail kami: Enkripsi End-to-End di Capgo Live Updates
Proses Keamanan Update
-
Enkripsi Sebelum Mengunggah:
- Update dienkripsi di pipeline CI/CD Anda
- Setiap file dienkripsi secara individu
- Metadata juga dienkripsi untuk privasi yang lengkap
-
Penyimpanan yang Aman:
- Bundel yang dienkripsi disimpan di CDN global Capgo
- Tidak ada data teks biasa yang pernah menyentuh server kami
- Bahkan dalam kasus serangan server, data tetap aman
-
Pengiriman yang Aman:
- Perbarui aplikasi melalui saluran yang dienkripsi
- Setiap instance aplikasi memvalidasi integritas enkripsi
- Mekanisme ulang coba otomatis untuk dekripsi gagal
-
Keamanan Sisi Klien:
- Perbarui aplikasi diverifikasi sebelum instalasi
- Dekripsi gagal mengaktifkan rollback otomatis
- Pembatasan kunci penyimpanan di penyimpanan terlindungi aplikasi
Metode keamanan ini secara menyeluruh memastikan bahwa pembaruan aplikasi Anda tetap terlindungi dari:
- Pengintaian tengah-tengah
- Pengacakan sisi server
- Pengubahan tidak berwenang
- Pengulangan serangan
- Pengacakan konten
Proses Pembaruan Siklus
Capgo’s proses pembaruan dirancang untuk menjadi otomatis secara default. Berikut adalah cara kerja proses otomatis:
1. Periksa Pembaruan Otomatis
Plugin ini secara otomatis memeriksa pembaruan dalam situasi-situasi berikut:
- Ketika aplikasi dimulai
Sikap ini dikendalikan oleh pengaturan: autoUpdate pengaturan:
// capacitor.config.json
{
"plugins": {
"CapacitorUpdater": {
"autoUpdate": true // Enable automatic updates
}
}
}
Anda juga dapat memeriksa secara manual dengan cara getLatest()
2. Download Otomatis
Ketika versi baru terdeteksi, jika autoUpdate dipilih:
- Pengunduhan dimulai secara otomatis
- Progres diikuti secara internal
- Pengunduhan gagal akan diretry secara otomatis setiap kali aplikasi dibuka
- 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
Instalasi waktu 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:
- Sekarang jika
directUpdate__CAPGO_KEEP_0__ - Pada latar belakang aplikasi berikutnya jika
directUpdate__CAPGO_KEEP_1__ - Auto-rollback jika instalasi gagal
Plugin ini juga secara otomatis mengelola penyimpanan:
- Menghapus update gagal jika
autoDeleteFailed__CAPGO_KEEP_0__ - Membersihkan versi lama jika
autoDeletePrevious__CAPGO_KEEP_1__
Mengundurkan Pembaruan
Anda 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:
- Mengatur pembaruan selama jam-jam sibuk
- Mengkoordinasikan pembaruan dengan aktivitas pengguna
- Mengjamin pengalaman pembaruan yang lancar
- Mencegah gangguan selama tugas kritis
Status Pembaruan
Selama proses otomatis, bundle bertransisi melalui status-status berikut:
- mengunduh: Sedang mengunduh
- menunggu: Pengunduhan selesai, menunggu instalasi
- sukses: Pembaruan terinstal dan aktif
- error: Gagal Update (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 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 penyimpanan untuk code atau aplikasi lain, dan (c) tidak menghindari tanda tangan, sandbox, atau fitur keamanan lainnya dari OS.”
Capgo pembaruan 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
- Rollout Berperingkat: Mengaktifkan pembaruan secara bertahap
- Pengendalian Versi: Mengikuti semua versi yang di-deploy
- Bantuan Rollback: Mengalami pemulihan cepat dari masalah
- Pembaruan Delta: Hanya mengunduh file yang berubah
Kapan Menggunakan Pembaruan Langsung
Perfect untuk:
- Perbaikan bug
- Perbaikan UI
- Update Konten
- Tombol Fitur
Tidak sesuai untuk:
- Perubahan Native code
- Perubahan Versi Utama
- Pembaruan Keamanan yang memerlukan perubahan Native
Lanjutkan dari Cara Kerja Live Updates di Capgo
Jika Anda menggunakan Cara Kerja Live Updates di Capgo untuk merencanakan pekerjaan plugin native, hubungkannya dengan Direktori Plugin Capgo untuk alur kerja produk di Direktori Plugin Capgo, 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.