Pengertian Mengupdate Konten secara Real-Time di Capgo
Mengupdate konten secara real-time adalah salah satu fitur paling kuat di aplikasi Capacitor, memungkinkan update waktu nyata tanpa perlu mengirimkan aplikasi 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 dalam WebView
- Lapisan Native: Mengandung kode code yang spesifik platform (Java/Kotlin untuk Android, Swift untuk iOS)
Sistem update live Capgo bekerja dengan mengganti lapisan web secara waktu nyata, karena file-file ini tidak dikompilasi ke dalam file biner aplikasi.
Pelaksanaan 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
Penerapan 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();
}
Penerapan 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)
}
Pengamanan Keamanan
Capgo menerapkan pengamanan militer-tingkat 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 zero-knowledge yang benar.
Arsitektur Enkripsi Akhir ke Akhir
-
Enkripsi Akhir ke Akhir (E2EE): Setiap bundle pembaruan dienkripsi menggunakan enkripsi AES-256-GCM sebelum meninggalkan lingkungan pengembangan Anda. Enkripsi militer ini memastikan bahwa pembaruan aplikasi Anda tetap sepenuhnya pribadi dan aman selama proses pengiriman seluruhnya.
-
Arsitektur Tanpa Pengetahuan: Berbeda dengan solusi pembaruan OTA lainnya yang hanya menandatangani pembaruan, Capgo menggunakan enkripsi tanpa pengetahuan yang sebenarnya. Ini berarti:
- Pembaruan isi dienkripsi sebelum diunggah
- Server Capgo hanya menyimpan data yang dienkripsi
- Penguncian hanya terjadi pada perangkat pengguna akhir
- Tidak ada perantara yang dapat mengakses konten pembaruan Anda
-
Pengelolaan 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 ditingkatkan
Pelajari lebih lanjut tentang sistem enkripsi kami dalam panduan rinci kami: Enkripsi End-to-End di Capgo Live Updates
Proses Perbaruan Keamanan
-
Enkripsi Sebelum Mengunggah:
- Perbaruan-perbaruan dienkripsi dalam pipa 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
- Bahkan dalam kasus bocornya server, data tetap aman
-
Pengiriman yang Aman:
- Perbarui yang dikirim melalui saluran yang terenkripsi
- Setiap instance aplikasi memvalidasi integritas enkripsi
- Mechanisme retry otomatis untuk dekripsi gagal
-
Keamanan Sisi Klien:
- Perbarui diverifikasi sebelum instalasi
- Dekripsi gagal mengaktifkan rollback otomatis
- Penyimpanan kunci yang aman di penyimpanan terlindung aplikasi
Pendekatan keamanan ini secara menyeluruh memastikan bahwa perbarui aplikasi Anda tetap dilindungi dari:
- Serangan man-in-the-middle
- Bocornya sisi server
- Modifikasi yang tidak diotorisasi
- Serangan ulang
- Pengubahan konten
Lifecycle Perbarui
Capgo’s proses perbarui dirancang untuk otomatis secara default. Berikut ini adalah cara kerja proses otomatis:
1. Periksa Perbarui Otomatis
Plugin ini secara otomatis memeriksa perbarui dalam situasi-situasi berikut:
- Ketika aplikasi dimulai
Sifat 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()
__CAPGO_KEEP_0__’s proses perbarui dirancang untuk otomatis secara default. Berikut ini adalah cara kerja proses otomatis:
When sebuah versi baru terdeteksi, jika autoUpdate diaktifkan:
- Pengunduhan dimulai secara otomatis
- Progress 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
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:
- Secara langsung jika
directUpdatediaktifkan - Jika aplikasi berada di latar belakang pada langkah berikutnya jika
directUpdateadalah false - Jika instalasi gagal, plugin ini akan melakukan auto-rollback
Plugin ini juga secara otomatis mengelola penyimpanan:
- Menghapus update yang gagal jika
autoDeleteFailedadalah true - Membersihkan versi lama jika
autoDeletePreviousadalah true
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:
- latar belakang: Pasang ketika aplikasi masuk ke latar belakang
- : Pasang setelah tanggal/tanggal spesifik: Pasang setelah update native berikutnya
- : Pasang setelah aplikasi dibunuh: Pasang setelah aplikasi dibunuh
- Ini berguna untuk:Mengatur update selama jam-jam sibuk
Mengkoordinasikan update dengan aktivitas pengguna
- Menjamin pengalaman update yang lancar
- Mencegah gangguan selama tugas-tugas kritis
- __CAPGO_KEEP_0__
- __CAPGO_KEEP_0__
Update States
Selama proses otomatis, bundle melewati status-status berikut:
- downloading: Sedang mengunduh
- pending: Pengunduhan selesai, menunggu instalasi
- success: Update terpasang dan aktif
- error: Update gagal (mengaktifkan auto-rollback)
Store Compliance
Apple App Store ✅
Update Hidup sepenuhnya sesuai dengan kebijakan App Store Apple. 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 dimaksudkan Aplikasi yang disampaikan ke App Store, (b) tidak membuat toko atau toko-toko untuk code atau aplikasi lainnya, dan (c) tidak menghindari tanda tangan, sandbox, atau fitur keamanan lainnya dari OS.”
Capgo updates hanya memodifikasi layer web sementara menghormati semua batasan keamanan platform.
Google Play Store ✅
Update Hidup sesuai dengan Kebijakan Google Play. Kebijakan Penyalahgunaan Perangkat dan Jaringan secara spesifik 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 jatuh dalam pedoman yang diizinkan.
Praktik Terbaik
- Rollout Berperingkat: Sampaikan update secara bertahap
- Pengendalian Versi: Ikuti semua versi yang dideploy
- Dukungan Rollback: Pemulihan cepat dari masalah
- Pembaruan Delta: Unduh hanya file yang berubah
Kapan Menggunakan Pembaruan Langsung
Sangat cocok untuk:
- : Perbaikan bug
- : Perbaikan UI
- : Perbarui konten
- : Toggle fitur
Tidak cocok untuk:
- : Perubahan native code
- Versi utama yang diperbarui
- Patch keamanan yang memerlukan perubahan native
Teruskan dari Bagaimana Cara Live Updates Berfungsi di Capgo
Jika Anda menggunakan Bagaimana Cara Live Updates Berfungsi di Capgo untuk merencanakan pekerjaan plugin native, 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 Perusahaan Ionic untuk alur kerja produk di Alternatif Plugin Perusahaan Ionic, dan Capgo Pembangunan Asli untuk alur kerja produk di Capgo Pembangunan Asli.