Target Versi
Copas prompt pengaturan dengan langkah instalasi dan panduan markdown lengkap untuk plugin ini.
seperti pendekatan Ionic AppFlow. Panduan ini menjelaskan cara mengirimkan bundle yang kompatibel terbaru ke pengguna berdasarkan versi aplikasi asli mereka, seperti pendekatan Ionic AppFlow.. Ini memastikan manajemen update yang lebih sederhana dan peluncuran yang lebih cepat sambil mencegah masalah kompatibilitas.
Sistem target versi __CAPGO_KEEP_0__ memungkinkan Anda:
Mengirimkan update yang kompatibel secara otomatisCapgo’s version targeting system allows you to:
- Mencegah perubahan yang mengganggu Sistem target versi __CAPGO_KEEP_0__ memungkinkan Anda mengirimkan update yang kompatibel secara otomatis ke pengguna berdasarkan versi aplikasi native mereka, serta mencegah perubahan yang mengganggu.
- Sistem target versi __CAPGO_KEEP_0__ memungkinkan Anda mengirimkan update yang kompatibel secara otomatis ke pengguna berdasarkan versi aplikasi native mereka, serta mencegah perubahan yang mengganggu. dari mencapai versi aplikasi yang tidak kompatibel
- Kelola versi aplikasi yang berbeda secara bersamaan tanpa logika kompleks
- Dapatkan pembaruan yang lancar ke segmen pengguna tertentu
Mengapa Targeting Versi Penting (Terutama bagi Pengguna AppFlow)
Judul Bagian “Mengapa Targeting Versi Penting (Terutama bagi Pengguna AppFlow)”Jika Anda familiar dengan Ionic AppFlow, Anda tahu betapa pentingnya memastikan pengguna hanya menerima pembaruan yang kompatibel. AppFlow secara otomatis memasangkan paket pembaruan live dengan versi aplikasi native, sehingga JavaScript yang tidak kompatibel tidak akan disampaikan ke aplikasi native yang lebih tua code.
Capgo menyediakan jaminan keamanan yang sama, dengan fitur tambahan:
- Kontrol yang lebih halus atas matching versi
- Strategi yang berbeda (saluran, semver, konstrain native)
- Keterlihatan yang lebih baik atas distribusi versi
- API dan CLI mengontrol bersama dengan pengelolaan dashboard
Pendekatan ini sangat berguna ketika:
- Anda memiliki pengguna pada versi mayor yang berbeda dari aplikasi Anda (misalnya, v1.x, v2.x, v3.x)
- Anda perlu mempertahankan konsistensi mundur sambil mengeluarkan perubahan yang mengganggu
- Anda ingin mencegah bundle yang lebih baru mengganggu native code yang lebih tua
- Anda sedang memigrasikan pengguna secara bertahap dari satu versi ke versi lain
- Anda sedang memigrasikan dari AppFlow dan ingin mempertahankan keamanan update yang sama
Cara Kerjanya
Bagian berjudul “Cara Kerjanya”Capgo menggunakan pendekatan multi-layer untuk mencocokkan pengguna dengan pembaruan yang kompatibel:
- Keterbatasan Versi Asli: Mencegah bundle untuk dikirimkan ke versi native yang tidak kompatibel
- Pengaturan Rute Berdasarkan Saluran: Mengarahkan versi aplikasi yang berbeda ke saluran pembaruan yang berbeda
- Kontrol Semantik Versi: Otomatis memblokir pembaruan di batas major/minor/patch
- Pengaturan Pengabaian pada Perangkat: Mengarahkan perangkat atau kelompok pengguna tertentu
Alur Pencocokan Versi
Bagian berjudul “Alur Pencocokan Versi”graph TD A[User Opens App] --> B{Check Device Override} B -->|Override Set| C[Use Override Channel] B -->|No Override| D{Check defaultChannel in App} D -->|Has defaultChannel| E[Use App's defaultChannel] D -->|No defaultChannel| F[Use Cloud Default Channel] C --> G{Check Version Constraints} E --> G F --> G G -->|Compatible| H[Deliver Update] G -->|Incompatible| I[Skip Update]Strategi 1: Rute Versi Berdasarkan Saluran
Judul Bagian “Strategi 1: Rute Versi Berdasarkan Saluran”Ini adalah metode yang disarankan untuk mengelola perubahan yang memecah dan pembaruan versi utama. Ini mirip dengan model pengiriman AppFlow.
Skenario Contoh
Judul Bagian “Skenario Contoh”- App v1.x (100.000 pengguna) →
productionsaluran - App v2.x (50.000 pengguna dengan perubahan besar) →
v2saluran - Aplikasi v3.x (10.000 pengguna beta) →
v3saluran
Implementasi
Bagian berjudul “Implementasi”Langkah 1: Konfigurasi Saluran untuk Setiap Versi Utama
Bagian berjudul “Langkah 1: Konfigurasi Saluran untuk Setiap Versi Utama”// capacitor.config.ts for version 1.x buildsimport { CapacitorConfig } from '@capacitor/cli';
const config: CapacitorConfig = { appId: 'com.example.app', appName: 'Example App', plugins: { CapacitorUpdater: { autoUpdate: 'atBackground', defaultChannel: 'production', // or omit for default } }};
export default config;// capacitor.config.ts for version 2.x buildsconst config: CapacitorConfig = { appId: 'com.example.app', appName: 'Example App', plugins: { CapacitorUpdater: { autoUpdate: 'atBackground', defaultChannel: 'v2', // Routes v2 users automatically } }};// capacitor.config.ts for version 3.x buildsconst config: CapacitorConfig = { appId: 'com.example.app', appName: 'Example App', plugins: { CapacitorUpdater: { autoUpdate: 'atBackground', defaultChannel: 'v3', // Routes v3 users automatically } }};Langkah 2: Buat Saluran
Judul Bagian “Langkah 2: Buat Saluran”# Create channels for each major versionnpx @capgo/cli channel create productionnpx @capgo/cli channel create v2npx @capgo/cli channel create v3
# Enable self-assignment so apps can switch channelsnpx @capgo/cli channel set production --self-assignnpx @capgo/cli channel set v2 --self-assignnpx @capgo/cli channel set v3 --self-assignLangkah 3: Unggah Paket Bundel yang Spesifik untuk Versi
Judul Bagian “Langkah 3: Unggah Paket Bundel yang Spesifik untuk Versi”# For v1.x users (from v1-maintenance branch)git checkout v1-maintenancenpm run buildnpx @capgo/cli bundle upload --channel production
# For v2.x users (from v2-maintenance or main branch)git checkout mainnpm run buildnpx @capgo/cli bundle upload --channel v2
# For v3.x users (from beta/v3 branch)git checkout betanpm run buildnpx @capgo/cli bundle upload --channel v3Kelebihan
Bagian berjudul “Kelebihan”- Tidak ada perubahan code apa pun - Pengaturan saluran terjadi secara otomatis
- Pengaturan yang jelas - Setiap versi memiliki jalur pembaruan sendiri
- Target yang fleksibel - Push pembaruan ke kelompok versi tertentu
- Rollout yang aman - Perubahan yang memecah tidak pernah mencapai versi yang tidak kompatibel
Strategi 2: Pengendalian Versi Semantik
Bagian berjudul “Strategi 2: Pengendalian Versi Semantik”Gunakan Capgo’s pengaturan versi semantik bawaan untuk mencegah pembaruan di antara batas versi.
Matikan Pembaruan Otomatis di Antara Versi Utama
Judul bagian “Matikan Pembaruan Otomatis di Antara Versi Utama”# Create a channel that blocks major version updatesnpx @capgo/cli channel create stable --disable-auto-update majorKonfigurasi ini berarti:
- Pengguna pada versi aplikasi 1.2.3 akan menerima pembaruan hingga 1.9.9
- Pengguna akan TIDAK menerima versi 2.0.0 otomatis secara
- Mencegah perubahan yang mengganggu dari versi native code
Opsi Kontrol yang Rinci
Judul Bagian “Opsi Kontrol yang Rinci”# Block minor version updates (1.2.x won't get 1.3.0)npx @capgo/cli channel set stable --disable-auto-update minor
# Block patch updates (1.2.3 won't get 1.2.4)npx @capgo/cli channel set stable --disable-auto-update patch
# Allow all updatesnpx @capgo/cli channel set stable --disable-auto-update noneStrategi 3: Konstrain Versi Native
Judul Bagian “Strategi 3: Konstrain Versi Native”Tentukan persyaratan versi native minimum untuk bundle untuk mencegah pengiriman ke perangkat yang tidak kompatibel.
Menggunakan nativeVersion Delay Condition
Judul Bagian “Menggunakan nativeVersion Delay Condition”Ketika mengunggah sebuah bundle, Anda dapat menentukan versi native minimum:
# This bundle requires native version 2.0.0 or highernpx @capgo/cli bundle upload \ --channel production \ --native-version "2.0.0"Penggunaan
Judul Bagian “Penggunaan”-
Diperlukan Plugin Native Baru
Jendela Terminal # Bundle needs Camera plugin added in v2.0.0npx @capgo/cli bundle upload --native-version "2.0.0" -
Menghancurkan Native API Perubahan
Jendela Terminal # Bundle uses new Capacitor 6 APIsnpx @capgo/cli bundle upload --native-version "3.0.0" -
Migrasi Berperingkat
Jendela Terminal # Test bundle only on latest native versionnpx @capgo/cli bundle upload \--channel beta \--native-version "2.5.0"
Strategi 4: Pencegahan Downgrade Otomatis
Judul Bagian “Strategi 4: Pencegahan Downgrade Otomatis”Mencegah pengguna menerima paket yang lebih tua dari versi native mereka saat ini.
Aktifkan di Pengaturan Saluran
Judul Bagian “Aktifkan di Pengaturan Saluran”Di dashboard Capgo:
- Pergi ke Saluran → Pilih saluran Anda
- Aktifkan “Nonaktifkan auto downgrade di native”
- Simpan perubahan
Atau melalui CLI:
npx @capgo/cli channel set production --disable-downgradeContoh
Bagian berjudul “Contoh”- Perangkat pengguna: Versi asli 1.2.5
- Bundel saluran: Versi 1.2.3
- Hasil: Perbaruan diblokir (akan menjadi penurunan versi)
Hal ini berguna ketika:
- Pengguna secara manual menginstal versi yang lebih baru dari toko aplikasi
- Anda perlu memastikan pengguna selalu memiliki patch keamanan terbaru
- Anda ingin mencegah bug regresi
Strategi 5: Targeting Tingkat Perangkat
Judul bagian “Strategi 5: Targeting Tingkat Perangkat”Tetapkan pengaturan saluran untuk perangkat atau kelompok pengguna tertentu.
Tetapkan Versi Spesifik untuk Pengujian
Bagian berjudul “Tetapkan Versi Spesifik untuk Pengujian”import { CapacitorUpdater } from '@capgo/capacitor-updater'
// Force beta testers to use v3 channelasync function assignBetaTesters() { const deviceId = await CapacitorUpdater.getDeviceId()
// Check if user is beta tester if (isBetaTester(userId)) { await CapacitorUpdater.setChannel({ channel: 'v3' }) }}Dashboard Penggeser Perangkat
Bagian berjudul “Dashboard Penggeser Perangkat”Di dashboard Capgo:
- Lihat Perangkat → Cari perangkat
- Klik Tetapkan Saluran atau Tetapkan Versi
- Override dengan saluran atau versi paket tertentu
- Peralatan akan menerima pembaruan dari sumber yang diubah
Alur Kerja Lengkap AppFlow-Style
Bab berjudul “Alur Kerja Lengkap AppFlow-Style”Contoh lengkap yang menggabungkan semua strategi:
1. Pengaturan Awal (Aplikasi v1.0.0)
Bab berjudul “1. Pengaturan Awal (Aplikasi v1.0.0)”# Create production channel with semver controlsnpx @capgo/cli channel create production \ --disable-auto-update major \ --disable-downgradeconst config: CapacitorConfig = { plugins: { CapacitorUpdater: { autoUpdate: 'atBackground', defaultChannel: 'production', } }};2. Perubahan Pecah (Aplikasi v2.0.0)
Bagian berjudul “2. Perubahan Pecah (Aplikasi v2.0.0)”# Create v2 channel for new versionnpx @capgo/cli channel create v2 \ --disable-auto-update major \ --disable-downgrade \ --self-assign
# Create git branch for v1 maintenancegit checkout -b v1-maintenancegit push origin v1-maintenance// capacitor.config.ts for v2.0.0const config: CapacitorConfig = { plugins: { CapacitorUpdater: { autoUpdate: 'atBackground', defaultChannel: 'v2', // New users get v2 channel } }};3. Kirim Perbarui ke Versi yang Sama
Bagian berjudul “3. Kirim Perbarui ke Versi yang Sama”# Update v1.x users (bug fix)git checkout v1-maintenance# Make changesnpx @capgo/cli bundle upload \ --channel production \ --native-version "1.0.0"
# Update v2.x users (new feature)git checkout main# Make changesnpx @capgo/cli bundle upload \ --channel v2 \ --native-version "2.0.0"4. Pantau Distribusi Versi
Bagian berjudul “4. Distribusi Versi”Gunakan dashboard Capgo untuk melacak:
- Berapa banyak pengguna yang menggunakan v1 vs v2
- Rasio penggunaan bundel per versi
- Kerusakan atau crash per versi
5. Deprecate Versi Lama
Bagian berjudul “5. Deprecate Versi Lama”Setelah penggunaan v1 turun di bawah ambang batas:
# Stop uploading to production channel# Optional: Delete v1 maintenance branchgit branch -d v1-maintenance
# Move all remaining users to default# (They'll need to update via app store)Prioritas saluran
Bagian berjudul “Prioritas Saluran”Jika ada beberapa konfigurasi saluran, Capgo menggunakan urutan prioritas ini:
- Override Perangkat (Dashboard atau API) - Prioritas tertinggi
- Override Cloud melalui
setChannel()panggilan - saluran default di capacitor.config.ts
- Saluran Default (Pengaturan Cloud) - Prioritas terendah
Praktik Terbaik
Judul bagian “Praktik Terbaik”1. Selalu Tentukan defaultChannel untuk Versi Utama
Judul bagian “1. Selalu Tentukan defaultChannel untuk Versi Utama”// ✅ Good: Each major version has explicit channel// v1.x → production// v2.x → v2// v3.x → v3
// ❌ Bad: Relying on dynamic channel switching// All versions → production, switch manually2. Gunakan Versi Semantik
Jendela terminal# ✅ Good1.0.0 → 1.0.1 → 1.1.0 → 2.0.0
# ❌ Bad1.0 → 1.1 → 2 → 2.53. Jaga Cabang Terpisah
Bagian berjudul “3. Jaga Cabang Terpisah”# ✅ Good: Separate branches per major versionmain (v3.x)v2-maintenance (v2.x)v1-maintenance (v1.x)
# ❌ Bad: Single branch for all versions4. Uji Sebelum Diluncurkan
Bagian berjudul “4. Uji Sebelum Diluncurkan”# Test on beta channel firstnpx @capgo/cli bundle upload --channel beta
# Monitor for issues, then promote to productionnpx @capgo/cli bundle upload --channel production5. Pantau Distribusi Versi
Bagian berjudul “5. Pantau Distribusi Versi”Periksa dashboard Anda secara teratur:
- Apakah pengguna mengupgrade ke versi native yang lebih baru?
- Apakah versi lama masih mendapatkan lalu lintas tinggi?
- Apakah Anda harus menghentikan penggunaan saluran lama?
Perbandingan dengan Ionic AppFlow
Bagian berjudul “Perbandingan dengan Ionic AppFlow”Untuk tim yang bermigrasi dari Ionic AppFlow, berikut ini adalah cara Capgo membandingkan target versi:
| Fitur | Ionic AppFlow | Capgo |
|---|---|---|
| Routing berdasarkan versi | Berbasis otomatis pada versi asli | Otomatis melalui defaultChannel + strategi berbasis native |
| Versi semantik | Support dasar | Maju dengan --disable-auto-update (maju/minor/patch) |
| Keterbatasan versi native | Konfigurasi manual di dashboard AppFlow | Tersedia secara bawaan --native-version flag di CLI |
| Pengelolaan saluran | UI Web + CLI | UI Web + CLI + API |
| Pengaturan Perangkat | Kontrol Terbatas pada Perangkat | Kontrol Lengkap melalui Dashboard/API |
| Pencegahan Downgrade Otomatis | Ya | Ya melalui --disable-downgrade |
| Pemeliharaan Versi Multi | Pengelolaan Cabang/Tingkat Manual | Dengan Otomatisasi Prioritas Saluran |
| Self-Hosting | Tidak | Ya (pengendalian penuh) |
| Analitik versi | Dasar | Metrik versi per-versi yang rinci |
Bagian berjudul “Pengaturan”
PengaturanPengguna Tidak Menerima Perbaruan
Judul Bagian “Pengguna Tidak Menerima Perbaruan”Periksa hal-hal berikut:
-
Penugasan Saluran: Pastikan perangkat berada di saluran yang benar
const channel = await CapacitorUpdater.getChannel()console.log('Current channel:', channel) -
Keterbatasan Versi: Periksa apakah paket memiliki persyaratan versi native
- Dashboard → Paket → Periksa kolom “Versi Asli”
-
Pengaturan Semver: Pastikan pengaturan saluran ‘
disable-auto-updatesettingJendela Terminal npx @capgo/cli channel list -
Override Perangkat: Periksa apakah perangkat memiliki override manual
- Dashboard → Perangkat → Cari perangkat → Periksa saluran/versi
Bundle Diteruskan ke Versi yang Salah
Bagian berjudul “Bundle Diteruskan ke Versi yang Salah”- Ulangi defaultChannel: Pastikan saluran yang benar dalam
capacitor.config.ts - Periksa Unggah Bundle: Pastikan bundle telah diunggah ke saluran yang diinginkan
- Inspeksi Versi Asli: Konfirmasi
--native-versionflag digunakan dengan benar
Pembaharuan Berbahaya yang Mempengaruhi Versi Lama
Bab berjudul “Pembaharuan Berbahaya yang Mempengaruhi Versi Lama”- Pemulihan Sementara: Mengatur perangkat yang terpengaruh ke bundle aman
- Dashboard → Perangkat → Pilih banyak → Set Versi
- Pemulihan Jangka Panjang: Buat saluran yang versi dan jaga cabang yang terpisah
- Pencegahan: Selalu tes pembaruan pada perangkat perwakilan sebelum peluncuran
Migrasi dari Ionic AppFlow
Bagian berjudul “Migrasi dari Ionic AppFlow”Jika Anda sedang melakukan migrasi dari Ionic AppFlow, versi targeting bekerja sangat mirip di Capgo, dengan fleksibilitas yang lebih baik:
Peta Konsep
Bagian berjudul “Peta Konsep”| Konsep AppFlow | Capgo Sama Konsep, Lebih Kuat | Catatan |
|---|---|---|
| Saluran Deploy | Capgo Saluran | Konsep yang sama, lebih kuat |
| Versi Lokal Asli | --native-version __CAPGO_KEEP_0__ | Kontrol yang lebih halus |
| Prioritas Saluran | Precedensi Saluran (override → cloud → default) | Precedensi yang lebih transparan |
| Target Pengembangan | Saluran + semver mengontrol | Banyak strategi tersedia |
| Saluran Produksi | production saluran (atau nama apa pun) | Penamaan yang fleksibel |
| Deployan berbasis Git | CLI unggah bundle dari cabang | Alur kerja yang sama |
| Pembaruan otomatis berdasarkan versi | defaultChannel Konstrain versi yang lebih tinggi | Diperkuat dengan strategi yang lebih dari satu |
Perbedaan Utama bagi Pengguna AppFlow
Bab yang berjudul “Perbedaan Utama bagi Pengguna AppFlow”- Pengendalian yang lebih baik: Capgo memberikan Anda strategi yang lebih dari satu (saluran, semver, versi native) yang dapat digabungkan
- Keterlihatan yang lebih baik: Dashboard menampilkan distribusi versi dan masalah kompatibilitas
- Akses API: Kontrol penuh programatik atas target versi
- Penghosan Sendiri: Opsi untuk menjalankan server pembaruan sendiri dengan logika versi yang sama
Langkah Migrasi
: Bagian berjudul “Langkah Migrasi”- Peta Saluran Aplikasi Anda ke saluran Capgo (biasanya 1:1)
- Atur
defaultChanneldicapacitor.config.tsuntuk setiap versi utama - Konfigurasi Aturan Semver Jika Anda ingin blokir otomatis pada batasan versi
- Upload bundle spesifik versi dengan menggunakan
--native-versionflag - Monitor distribusi versi di dashboard Capgo
Polakan Lanjutan
Bagian berjudul “Polakan Lanjutan”Rollout Berperingkat oleh Versi
Judul Bagian “Rollout Berperingkat oleh Versi”// Gradually migrate v1 users to v2async function migrateUsers() { const deviceId = await CapacitorUpdater.getDeviceId() const rolloutPercentage = 10 // Start with 10%
// Hash device ID to get deterministic percentage const hash = hashCode(deviceId) % 100
if (hash < rolloutPercentage) { // User is in rollout group - migrate to v2 await CapacitorUpdater.setChannel({ channel: 'v2' }) }}Flag Fitur oleh Versi
Judul Bagian “Flag Fitur oleh Versi”// Enable features based on native versionasync function checkFeatureAvailability() { const info = await CapacitorUpdater.getDeviceId() const nativeVersion = info.nativeVersion
if (compareVersions(nativeVersion, '2.0.0') >= 0) { // Enable features requiring v2.0.0+ enableNewCameraFeature() }}Pengujian A/B di Antara Versi
Judul Bagian “Pengujian A/B di Antara Versi”// Run A/B tests within same native versionasync function assignABTest() { const nativeVersion = await getNativeVersion()
if (nativeVersion.startsWith('2.')) { // Only A/B test on v2 users const variant = Math.random() < 0.5 ? 'v2-test-a' : 'v2-test-b' await CapacitorUpdater.setChannel({ channel: variant }) }}Ringkasan
Judul Bagian “Ringkasan”Capgo menyediakan beberapa strategi untuk pengiriman update yang spesifik oleh versi:
- Rute Berbasis Saluran: Pemisahan versi otomatis melalui
defaultChannel - Pengaturan Versi Semantik: Mencegah pembaruan di batas major/minor/patch
- Keterbatasan Versi Asli: Mengharuskan versi asli minimum untuk bundle
- Pencegahan Penurunan Otomatis: Tidak pernah mengirimkan bundle yang lebih tua ke versi native yang lebih baru
- Pengaturan Perangkat: Kontrol manual untuk pengujian dan targeting
Dengan menggabungkan strategi-strategi ini, Anda dapat mencapai pengiriman pembaruan otomatis AppFlow dengan fleksibilitas dan kontrol yang lebih banyak. Pilih pendekatan yang paling sesuai dengan alur versi dan pengiriman aplikasi Anda.
Untuk informasi lebih lanjut tentang fitur-fitur tertentu:
- Panduan Perubahan yang Berubah - Strategi versi saluran yang rinci
- Pengelolaan Saluran - Referensi konfigurasi saluran yang lengkap
- Sikap Perbarui - Keterlambatan versi native dan kondisi