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:
- Lapisan Web: Mengandung file HTML, CSS, dan JavaScript yang dimuat di WebView
- 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
-
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.
-
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
-
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
-
Enkripsi Sebelum Mengunggah:
- Pembaruan dienkripsi di pipeline CI/CD Anda
- Setiap file dienkripsi secara individu
- Metadata juga dienkripsi untuk privasi yang lengkap
-
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
-
Pengiriman Aman:
- Perbarui yang dikirim melalui saluran yang dienkripsi
- Setiap instance aplikasi memvalidasi integritas enkripsi
- Mekanisme ulang coba otomatis untuk dekripsi gagal
-
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:
- Pengunduhan dimulai secara otomatis
- Progres diikuti secara internal
- Failed downloads auto-retry at each app open
- 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:
directUpdateBenar - Menggunakan metode pada latar belakang aplikasi berikutnya jika
directUpdateTidak Benar - Rollback Otomatis jika Instalasi Gagal
Plugin ini juga secara otomatis mengelola penyimpanan:
- Menghapus versi lama jika
autoDeleteFailedBenar - Mengundurkan Update
autoDeletePreviousBenar
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:
- mengunduh: Sedang mengunduh
- menunggu: Mengunduh selesai, menunggu instalasi
- berhasil: Pembaruan terpasang dan aktif
- 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
- Rollout Fase: Deploy updates secara bertahap
- Kontrol VersiMengikuti semua versi yang telah diterapkan
- Dukungan Rollback: Pantau semua versi yang di-deploy
- : 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