Mengerti Pembaruan Langsung di Capgo
Pembaruan langsung adalah salah satu fitur paling kuat di aplikasi Capacitor, memungkinkan pembaruan waktu nyata tanpa pengiriman ke toko aplikasi. Mari kita telusuri mendalam bagaimana Capgo menerapkan fungsi ini.
Konsep Dasar
A aplikasi Capacitor terdiri dari dua lapisan utama:
- Lapisan Web: Mengandung file HTML, CSS, dan JavaScript yang dimuat dalam WebView
- Lapisan Native: 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 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
- Jalur Server Berikut: Menunjuk ke file yang akan dimuat pada restart aplikasi berikutnya
Pengimplementasian Android
On Android, Capgo manages paths through:
// 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)
}
Pengukuran Keamanan
Capgo implements military-grade security through end-to-end encryption, ensuring your app updates remain completely secure from development to deployment. Our encryption system goes beyond traditional code signing to provide true zero-knowledge security.
Arsitektur Enkripsi End-to-End
-
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.
-
Arsitektur Nol Pengetahuan: Seperti solusi pembaruan OTA lainnya yang hanya menandatangani pembaruan, Capgo menggunakan enkripsi zero-knowledge yang sebenarnya. Ini berarti:
- Pembaruan konten 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
-
Pengelolaan Kunci Pribadi:
- Kunci enkripsi dihasilkan dan disimpan dengan aman di lingkungan CI/CD Anda
- Kunci pribadi tidak pernah menyentuh server Capgo’s
- 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 Keamanan Diperbarui
-
Enkripsi Sebelum Mengunggah:
- Pembaruan yang dienkripsi dalam pipeline CI/CD Anda
- Setiap file dienkripsi secara individu
- Metadata juga dienkripsi untuk privasi yang lengkap
-
Penyimpanan Aman:
- Bundel 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
-
Pengiriman Aman:
- Pembaruan dikirim melalui saluran yang dienkripsi
- Setiap instance aplikasi memvalidasi integritas enkripsi
- Mekanisme ulang coba otomatis untuk dekripsi gagal
-
Keamanan Sisi Klien:
- Pembaruan diverifikasi sebelum instalasi
- Dekripsi gagal memicu rollback otomatis
- Penyimpanan kunci yang aman di penyimpanan terlindung aplikasi
Pendekatan keamanan ini yang komprehensif memastikan bahwa pembaruan aplikasi Anda tetap dilindungi dari:
- Serangan man-in-the-middle
- Bocoran sisi server
- Modifikasi tidak berwenang
- Serangan ulang
- Pengubahan konten
Lifecyle Pembaruan
Proses pembaruan Capgo dirancang untuk otomatis secara default. Berikut cara kerja proses otomatis:
1. Periksa Pembaruan Otomatis
Plugin ini secara otomatis memeriksa pembaruan dalam situasi-situasi berikut:
- Saat aplikasi dimulai
Perilaku ini dikendalikan 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
diaktifkan: autoUpdate Pembaruan dimulai secara otomatis
- Progress diikuti secara internal
- Periksa Pembaruan Otomatis
- Pengunduhan otomatis ulang gagal setiap 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
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:
- Sekarang jika
directUpdate__CAPGO_KEEP_0__ - Pada latar belakang aplikasi berikutnya jika
directUpdate__CAPGO_KEEP_1__ - Jika instalasi gagal, plugin juga secara otomatis mengelola penyimpanan:
__CAPGO_KEEP_2__
- Menghapus update gagal jika
autoDeleteFailedbenar - Membersihkan versi lama jika
autoDeletePreviousbenar
Mengundurkan Update
Anda dapat 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:
- background: Instal ketika aplikasi pergi ke latar belakang
- date: Instal setelah tanggal/waktu spesifik
- nativeVersion: Install setelah pembaruan native berikutnya
- membunuh: Install setelah aplikasi dibunuh
Ini berguna untuk:
- Mengatur pembaruan selama jam-jam sibuk
- Mengkoordinasikan pembaruan dengan aktivitas pengguna
- Menjamin pengalaman pembaruan yang halus
- Mencegah gangguan selama tugas-tugas kritis
Status Pembaruan
Saat proses otomatis berlangsung, paket-paket mengalami perubahan status sebagai berikut:
- mendownload: Download sedang berlangsung
- menunggu: Download selesai, menunggu instalasi
- sukses: Perbarui terinstal dan aktif
- error: Perbarui gagal (mengaktifkan auto-rollback)
Pengawasan Toko
Apple App Store ✅
Pembaruan Hidup sepenuhnya kompatibel dengan kebijakan Apple App Store. Seperti yang dijelaskan dalam Perjanjian Lisensi Program Pengembang Apple:
“Interpretasi 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 jual untuk code atau aplikasi lain, dan (c) tidak menghindari tanda tangan, sandbox, atau fitur keamanan lainnya dari OS.”
Perbarui Capgo hanya memodifikasi layer web sementara menghormati semua batasan keamanan platform.
Google Play Store ✅
Pembaruan Langsung sesuai dengan Kebijakan Google Play.
“This restriction does not apply to code that runs in a virtual machine or an interpreter where either provides indirect access to Android APIs (such as JavaScript in a webview or browser).”
"Keterbatasan ini tidak berlaku untuk Capgo yang menjalankan di mesin virtual atau interpreter di mana salah satunya menyediakan akses tidak langsung ke API Android (seperti JavaScript di webview atau browser)."
Praktik Terbaik
- Pembaruan Berperingkat: Rilis pembaruan secara bertahap
- Pengendalian Versi: Ikuti semua versi yang diterapkan
- Dukungan Rollback: Pulihkan cepat dari masalah
- Pembaruan Delta: Unduh hanya file yang berubah
Kapan Menggunakan Live Updates
Sesuai untuk:
- Perbaikan bug
- Perbaikan UI
- Perbarui konten
- Tombol fitur
Tidak sesuai untuk:
- Perubahan native code
- Perubahan versi utama
- Pembaruan keamanan yang memerlukan perubahan native
Teruskan dari Bagaimana Live Updates Berfungsi di Capgo
Jika Anda menggunakan Bagaimana Cara Perbarui Hidup Berfungsi 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 Bangunan Asli untuk alur kerja produk di Capgo Bangunan Asli.