Apakah Anda pernah berharap dapat mengirimkan perubahan langsung ke pengguna tertentu untuk mendapatkan umpan balik dan masukan mereka secara langsung - tanpa harus meminta mereka mengunduh dan menginstal versi baru dari TestFlight atau Google Play?
Saya pernah memiliki pelanggan yang meminta perbaikan yang saya bisa implementasikan dengan cepat, tapi mendapatkan hasilnya ke tangan mereka untuk memvalidasi berarti mengirimkan pembaruan ke semua pengguna (risiko untuk perubahan eksperimental) atau membuat versi satu-satunya untuk pelanggan (pekerjaan untuk kedua kita).
Yang kurang adalah fleksibilitas. Pengembang ingin dapat menyajikan pembaruan yang berbeda-beda kepada kelompok pengguna yang berbeda, seperti stakeholders non-teknis, QA, atau seluruh basis pengguna ketika tepat.
Tidak ada cara untuk memindahkan versi produksi ke versi kerja sama, mengumpulkan umpan balik, dan kemudian kembali ke produksi.
Itu yang mengaktifkan fitur "pencarian saluran". Aplikasi yang diinstal pada perangkat pengguna dapat beralih ke saluran pembaruan waktu nyata, mengubah aplikasi produksi menjadi ruang yang fleksibel untuk ulasan dan iterasi daripada titik akhir yang tetap. Mengerti Saluran Pembaruan
Saluran pembaruan adalah cara __CAPGO_KEEP_0__ menargetkan pembaruan ke bangunan tertentu. Setiap bangunan terkait dengan saluran, dan saluran tersebut menentukan pembaruan apa yang akan diterimanya.
Update channels are how Capgo targets updates to specific builds. Each build is associated with a channel, and that channel determines which updates it will receive.
saluran tanpa mempengaruhi pengguna di preview . Dulu, beralih ke saluran memerlukan menginstal bangunan native yang berbeda atau secara manual mengubah pengaturan perangkat melalui dashboard. productionSaluran di __CAPGO_KEEP_0__ memungkinkan Anda untuk:
Channels in Capgo allow you to:
- Melakukan tes A/B dengan mengalokasikan pengguna ke saluran yang berbeda
- Mengeluarkan secara bertahap fitur-fitur baru
- Mengarahkan pengguna ke saluran tertentu untuk menguji fitur-fitur baru
- Buat program tes beta
- Debug masalah produksi dengan pengguna individu
Jika Anda tidak familiar dengan saluran pembaruan, maka Capgo dokumentasi saluran pembaruan menjelaskannya secara lebih detail.
Apa itu Channel Surfing?
Channel surfing memungkinkan aplikasi yang terpasang untuk menarik pembaruan dari berbagai saluran pembaruan tanpa harus menginstal ulang. Aplikasi yang terpasang dapat berganti-ganti saluran pembaruan pada waktu runtime, dan akan terus menerima pembaruan dari saluran pembaruan yang baru dipilih hingga aplikasi di-uninstall atau berganti ke saluran pembaruan lainnya.
Dalam prakteknya, ini berarti pemilik produk atau QA dapat berganti aplikasi production ke, misalnya, preview saluran pembaruan, mencoba perubahan terbaru. Ketika mereka sudah selesai melakukan tes, mereka berganti kembali ke production lagi. Tidak perlu menginstal ulang atau membuat aplikasi pratinjau yang terpisah.
Di bawah kerangka kerja, channel surfing bekerja dengan memungkinkan aplikasi untuk memberitahu klien pembaruan mana saluran pembaruan yang harus digunakan. Pilihan tersebut dapat diubah pada waktu runtime dan tetap berlaku hingga dihapus atau diganti.
Cara Mengimplementasikan Channel Surfing
Sebelum Anda dapat mencoba channel surfing, project Anda harus dikonfigurasi dengan Capgo Live Updates. Untuk mengatur hal itu, ikuti panduan cepat start Capgo panduan cepat start.
Pengaturan yang diperlukan untuk channel surfing adalah mengaktifkan “Izinkan perangkat untuk berasosiasi sendiri” pada setiap channel yang ingin Anda ubah ke dalam Capgo dashboard. Tidak ada perubahan atau modifikasi konfigurasi code yang diperlukan di luar itu.
Channel surfing secara dasarnya dikendalikan oleh satu API panggilan:
import { CapacitorUpdater } from '@capgo/capacitor-updater';
await CapacitorUpdater.setChannel({ channel: 'your-channel' });
Fungsi ini menetapkan channel yang digunakan ketika melakukan kueri Capgo untuk update. Pelajari lebih lanjut tentang fungsi setChannel API.
Penggantian Channel Instan (v5.34.0+)
Mulai dari versi plugin 5.34.0, 6.34.0, 7.34.0, atau 8.0.0 (tergantung pada versi utama Anda), setChannel() berfungsi secara berbeda dan lebih cepat:
- Validasi Backend (baca-saja): Permintaan dikirim ke backend Capgo untuk memvalidasi apakah saluran tersebut diizinkan
- Pengupdatean Penyimpanan Lokal: Jika validasi berhasil, saluran tersebut disimpan ke penyimpanan lokal perangkat
- Efek Langsung: Periksa update selanjutnya menggunakan saluran baru segera
Sebelumnya, setChannel() menyimpan pengaturan saluran override ke database backend (seperti Dashboard atau API perubahan). Perangkat harus menunggu replikasi backend (sampai 2 menit) sebelum saluran baru diakui. perilaku baru hanya membaca dari backend (untuk validasi) dan menyimpan secara lokal, sehingga perubahan saluran menjadi instan.
Alur Penuh Penggantian Saluran
Untuk pengalaman pengguna yang lebih baik, Anda biasanya ingin melakukan lebih dari hanya mengganti saluran dan menunggu aplikasi restart. Pendekatan umum adalah untuk memeriksa update secara langsung, mengunduh jika tersedia, dan memuat ulang aplikasi sehingga pengguna langsung berada di update saluran yang dipilih.
Alur yang Umum
- Mengganti saluran (
setChannel) - Periksa untuk memperbarui (
getLatest) - Ambil dan terapkan pembaruan (
download,setataunext) - Muat ulang aplikasi jika diperlukan (
reload)
Contoh lengkap ini:
import { CapacitorUpdater } from '@capgo/capacitor-updater';
async function switchChannel(selectedChannel: string) {
try {
// 1. Set the updates channel (with optional auto-update trigger)
await CapacitorUpdater.setChannel({
channel: selectedChannel,
triggerAutoUpdate: true // Immediately check for updates
});
console.log(`Switched to channel: ${selectedChannel}`);
// If you want more control, handle the update manually:
// const latest = await CapacitorUpdater.getLatest();
// if (latest.url) {
// const bundle = await CapacitorUpdater.download({
// url: latest.url,
// version: latest.version
// });
// await CapacitorUpdater.set({ id: bundle.id });
// }
} catch (error) {
console.error('Failed to switch channel:', error);
}
}
// Switch to the beta channel
switchChannel('beta');
Bagaimana Anda mengatur alur ini adalah pilihan Anda. Anda mungkin membagi langkah-langkah ini di beberapa interaksi atau menjalankannya secara bersamaan. Apa pun cara Anda mengatur alur, pastikan untuk mempertimbangkan kegagalan. Masalah jaringan atau saluran yang tidak valid dapat semua mencegah pembaruan dari diterapkan.
Satu-Satunya Syarat: Aktifkan Penugasan Sendiri
Ini adalah satu-satunya hal yang perlu Anda lakukan untuk mengaktifkan channel surfing. Sebelum aplikasi Anda dapat beralih ke saluran menggunakan setChannel() Anda harus mengaktifkan penugasan sendiri untuk saluran tersebut di dashboard Capgo:
- Buka halaman Saluran bagian di Capgo dashboard Anda
- Klik nama saluran yang ingin Anda kelola
- Aktifkan “Izinkan perangkat untuk mengasosiasikan diri sendiri”
- Simpan perubahan-perubahan ini

Itu saja. Tidak perlu mengubah konfigurasi di aplikasi Anda. Tidak defaultChannel pengaturan yang diperlukan. Cukup aktifkan pengasosiasian sendiri pada saluran yang ingin pengguna dapat berganti.
Jika pengaturan ini dinonaktifkan, setiap upaya untuk memanggil setChannel() dengan saluran ini akan gagal dan channelPrivate acara akan terjadi.
Daftar Saluran yang Tersedia
Anda dapat mengambil daftar saluran yang tersedia untuk penugasan sendiri:
const { channels } = await CapacitorUpdater.listChannels();
console.log('Available channels:', channels.map(c => c.name));
// Use this to build a channel selector UI
Hanya mengembalikan saluran di mana penugasan sendiri diaktifkan.
Mendapatkan Saluran Saat Ini
Periksa saluran mana yang perangkat saat ini ditugaskan:
const { channel } = await CapacitorUpdater.getChannel();
console.log('Current channel:', channel);
Kembali ke Saluran Default
Untuk menghapus penugasan saluran dan kembali ke saluran default:
await CapacitorUpdater.unsetChannel({});
Ini melepas perangkat dari saluran yang ditugaskan secara spesifik, sehingga jatuh kembali ke defaultChannel atau default di awan.
Cara Menguji Surfing Saluran
Untuk melihat surfing saluran dalam aksi, Anda memerlukan build rilis - @capgo/capacitor-updater API dirancang untuk build rilis. Di build debug, aplikasi biasanya memuat JavaScript dari server pengembangan, yang menghindari alur pembaruan normal.
Persyaratan Sebelumnya
Persyaratan tunggal untuk mengakses saluran adalah mengaktifkan “Izinkan perangkat untuk berasosiasi secara mandiri” di setiap saluran yang ingin Anda biarkan berganti. Tidak perlu mengubah konfigurasi di aplikasi Anda.
Membuat Build Uji
Buat aplikasi Anda seperti biasa:
bun run build && npx cap sync
Maka buatlah build native menggunakan Xcode atau Android Studio, atau gunakan pipeline CI/CD Anda. Aplikasi akan memulai di saluran yang ditetapkan sebagai default cloud di dashboard Anda Capgo.
Mengirimkan Perbaruan ke Saluran yang Berbeda
Setelah aplikasi terpasang, kirimkan perbaruan ke saluran yang berbeda:
# Publish to preview channel
npx @capgo/cli@latest bundle upload --channel preview
# Publish to production channel
npx @capgo/cli@latest bundle upload --channel production
Dari sana, navigasikan ke antarmuka pengguna saluran di aplikasi dan trigger perubahan saluran. Aplikasi harus mengambil perbaruan dari saluran yang dipilih dan memuat ulang ke perbaruan baru.
Membuat Antarmuka Pengganti Saluran
Pengganti saluran biasanya merupakan sesuatu yang ingin Anda terbatas untuk pengguna tertentu, bukan untuk semua pengguna aplikasi Anda. Misalnya, Anda mungkin memiliki tombol yang tersedia hanya untuk karyawan yang terautentikasi saja yang mengganti aplikasi ke saluran preview.
Contoh Komponen React untuk Pengganti Saluran:
import { useState, useEffect } from 'react';
import { CapacitorUpdater } from '@capgo/capacitor-updater';
export function ChannelSwitcher() {
const [currentChannel, setCurrentChannel] = useState<string>('');
const [availableChannels, setAvailableChannels] = useState<string[]>([]);
const [isLoading, setIsLoading] = useState(false);
useEffect(() => {
loadChannelInfo();
}, []);
async function loadChannelInfo() {
const { channel } = await CapacitorUpdater.getChannel();
setCurrentChannel(channel || 'default');
const { channels } = await CapacitorUpdater.listChannels();
setAvailableChannels(channels.map(c => c.name));
}
async function handleChannelSwitch(channel: string) {
setIsLoading(true);
try {
await CapacitorUpdater.setChannel({
channel,
triggerAutoUpdate: true
});
setCurrentChannel(channel);
// App will update in background or on next restart
} catch (error) {
console.error('Failed to switch channel:', error);
} finally {
setIsLoading(false);
}
}
return (
<div>
<p>Current channel: {currentChannel}</p>
<div>
{availableChannels.map(channel => (
<button
key={channel}
onClick={() => handleChannelSwitch(channel)}
disabled={isLoading || channel === currentChannel}
>
Switch to {channel}
</button>
))}
</div>
</div>
);
}
OTA Update Halangan
Tidak ada di antara hal-hal ini yang spesifik untuk mengganti saluran, tetapi mereka cenderung menjadi jelas dengan cepat setelah Anda mulai mengganti saluran secara waktu eksekusi.
Perbedaan Versi Waktu Eksekusi
Pembaruan di Capgo terkait dengan versi aplikasi native. Jika versi native dari pembaruan tidak sesuai dengan versi native dari aplikasi yang terpasang, pembaruan tidak akan didownload atau diterapkan. Ketika mengganti saluran, hal ini biasanya muncul sebagai aplikasi yang berganti saluran tetapi tidak ada pembaruan yang diterapkan, meskipun ada di saluran tersebut.
Biasanya berarti pembaruan tersebut dipublikasikan dari versi native aplikasi yang berbeda. Pastikan bundle saluran Anda kompatibel dengan versi native yang terpasang di perangkat.
Menghapus atau Membatalkan Pembaruan
Jika aplikasi telah mendownload pembaruan untuk saluran, menghapus pembaruan dari dashboard Capgo tidak akan menghapusnya dari perangkat yang sudah memiliki pembaruan tersebut. Penghapusan hanya akan menghentikan download masa depan. Cara yang paling dapat diandalkan untuk membatalkan pembaruan yang salah adalah dengan mempublikasikan pembaruan yang sudah terbukti baik ke saluran yang sama. Hal ini akan menciptakan pembaruan baru di atas sejarah saluran, yang akan dianggap sebagai versi terbaru oleh klien dan diterapkan secara alternatif.
__CAPGO_KEEP_0__ juga menyediakan mekanisme rollback yang dapat menginstruksikan klien untuk menerapkan pembaruan stabil sebelumnya atau kembali ke pembaruan yang diintegrasikan ke dalam build.
Capgo also provides a rollback mechanism that can instruct clients to re-apply a previous stable update or fall back to the update embedded in the build.
Pembaruan __CAPGO_KEEP_0__ terkait dengan versi aplikasi native. Jika versi native dari pembaruan tidak sesuai dengan versi native dari aplikasi yang terpasang, pembaruan tidak akan didownload atau diterapkan. Ketika mengganti saluran, hal ini biasanya muncul sebagai aplikasi yang berganti saluran tetapi tidak ada pembaruan yang diterapkan, meskipun ada di saluran tersebut.
Berubah ke saluran lain akan mengubah bundle JavaScript yang aplikasi jalankan. Jika aplikasi Anda bergantung pada migrasi atau bentuk data yang tidak kompatibel di antara saluran, berubah kembali dan ke depan mungkin akan menyebabkan masalah.
Contohnya, jika pembaruan beta menerapkan migrasi database, versi produksi mungkin tidak memahami schema baru. Pengembang harus memastikan pembaruan tetap aman untuk berubah antara saluran atau membatasi berubah ke satu arah ketika diperlukan.
Mengapa Channel Surfing Meningkatkan Iterasi Mobile
Channel surfing sangat berguna ketika Anda membutuhkan review perubahan dengan cepat di lingkungan produksi.
Pengujian Cepat
Bayangkan perbaikan bug yang mendesak yang membutuhkan pengujian sebelum dijalankan secara luas. Dengan channel surfing, perubahan dapat diisolasi ke dalam sekelompok pengguna yang ditunjuk yang dapat melakukan review sebelum mencapai produksi.
Pengujian Stakeholder
Pemilik produk atau QA dapat mengubah instalasi produksi mereka ke saluran pembaruan lain, memverifikasi perbaikan atau fitur, dan kemudian kembali lagi setelah selesai.
Pengujian yang Dipercepat
Ini membuat lebih mudah melibatkan stakeholders non-teknis dalam review dan pengambilan keputusan, sambil menjaga alur kerja tetap lancar. Satu instalasi produksi menjadi alat yang fleksibel untuk pengujian, umpan balik, dan validasi.
Penggunaan Kasus
- Pengujian QA: Biarkan tim QA beralih antara cabang fitur
- Program Beta: Pengguna memilih untuk bergabung dengan saluran beta untuk akses awal
- Ulasan Stakeholder: Pemilik produk memperlihatkan perubahan sebelum rilis
- Pengujian A/B: Tugaskan pengguna ke saluran yang berbeda untuk eksperimen
- Debugging: Switch pengguna tertentu ke saluran debug untuk mendiagnosis masalah
Perbandingan: Metode Perubahan Saluran
| Metode | Waktu Efek | Dipertahankan Dimana | Penggunaan Kasus |
|---|---|---|---|
setChannel() dari plugin | Instan | Hanya Perangkat (local) | Penggantian saluran pengguna di dalam aplikasi |
| Dashboard penggantian perangkat | Hingga 2 menit | Database Backend | Perubahan admin untuk perangkat tertentu |
| API Pengasasan Saluran | Hingga 2 menit | Database Backend | Integrasi Backend Otomatis |
Untuk pengalaman pengguna yang terbaik ketika membangun UI pengganti saluran, selalu gunakan metode plugin’s __CAPGO_KEEP_0__. setChannel() Metode.
Praktik Terbaik
- Batasi Akses: Biasanya, channel surfing digunakan untuk keperluan internal - jangan terlalu banyak mengungkapkannya kepada semua pengguna
- Tangani Kesalahan: Selalu tangani kesalahan dengan baik ketika mengganti saluran
- Validasi Kompatibilitas: Pastikan update pada saluran yang berbeda kompatibel dengan versi native yang terpasang
- Dokumentasi Saluran: Dokumentasikan dengan jelas apa tujuan setiap saluran
- Pantau Penggunaan: Ikuti perangkat mana yang berada di mana saluran untuk debugging
Sumber Daya
Kesimpulan
Surfing saluran mengubah cara Anda dapat beriterasi pada aplikasi Capacitor Anda. Sebaliknya dari menganggap build produksi sebagai titik akhir yang tetap, mereka menjadi alat fleksibel untuk pengujian, validasi, dan iterasi cepat.
Dengan penggantian saluran instan yang diperkenalkan dalam versi plugin terbaru, pengalaman sekarang sudah mulus - pengguna dapat berganti saluran dan langsung menerima update dari saluran baru tanpa menunggu periode tunggu.
Apakah Anda memvalidasi perbaikan bug dengan stakeholders, menjalankan program beta, atau debugging masalah dengan pengguna tertentu, surfing saluran memberikan fleksibilitas untuk mengirimkan update yang tepat kepada pengguna yang tepat pada waktu yang tepat.