Beralih ke konten utama
Tutorial

Channel Surfing for Capgo: How to Switch Update Channels at Runtime

Ship changes to specific users instantly with Capgo's runtime channel switching. Switch update channels without reinstalling your Capacitor app.

Kredit Artikel

Martin Donadieu

Pengarang

Valeria

Pengulas

Jordan

Editor

Pemilihan Saluran untuk Capgo: Cara Mengganti Saluran Perbarui pada Waktu Jalannya

Apakah Anda pernah berharap dapat mengirimkan perubahan langsung ke pengguna tertentu untuk mendapatkan ulasan dan umpan balik 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 dapatkan dengan cepat, tetapi mendapatkan hasilnya ke tangan mereka untuk memvalidasi berarti mengirimkan perbarui ke semua pengguna (risiko untuk perubahan eksperimental) atau membuat versi satu-satunya untuk pelanggan (pekerjaan untuk kedua-duanya).

Apa yang hilang adalah fleksibilitas. Pengembang ingin dapat menyajikan perbarui yang berbeda-beda kepada kelompok pengguna yang berbeda, seperti stakeholders non-teknis, QA, atau pengguna seluruhnya ketika sesuai.

Tidak ada cara untuk memindahkan versi produksi ke versi kerja sama, mengumpulkan umpan balik, dan kemudian kembali ke produksi.

Itu yang mengaktifkan channel surfing mengizinkan aplikasi yang diinstal pada perangkat pengguna dapat mengganti saluran perbarui pada waktu jalannya, mengubah aplikasi produksi menjadi ruang yang fleksibel untuk ulasan dan iterasi daripada titik akhir yang tetap.

Ini sangat berguna bagi stakeholders non-teknis yang bekerja dengan aplikasi produksi, memungkinkan mereka untuk menguji perubahan dan memberikan umpan balik secara langsung di aplikasi yang sudah diinstal.

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.

Contohnya, Anda dapat memublikasikan pembaruan ke sebuah preview tanpa mempengaruhi pengguna di productionSebelumnya, mengganti saluran memerlukan menginstal build native yang berbeda atau mengubah pengaturan perangkat secara manual melalui dashboard.

Sistem saluran di Capgo memungkinkan Anda:

  • Mengarahkan kelompok pengguna tertentu dengan fitur yang berbeda
  • Menggunakan uji coba A/B dengan mengasosiasikan pengguna ke saluran yang berbeda
  • Mengeluarkan fitur baru secara bertahap
  • Membuat program tes beta
  • Mengatasi masalah produksi dengan pengguna individu

Jika Anda tidak familiar dengan saluran pembaruan, dokumentasi saluran __CAPGO_KEEP_0__ Capgo channels documentation __CAPGO_KEEP_0__

Apa itu Channel Surfing?

Channel surfing memungkinkan aplikasi yang terpasang untuk mengambil dari berbagai aliran pembaruan tanpa harus diinstal ulang. Aplikasi yang terpasang dapat berganti saluran pembaruan pada waktu runtime, dan akan terus menerima pembaruan dari saluran yang baru dipilih sampai aplikasi dihapus atau berganti ke saluran lain.

Dalam prakteknya, ini berarti pemilik produk atau QA dapat berganti sebuah production build ke, misalnya, sebuah preview saluran, mencoba perubahan terbaru. Ketika mereka selesai melakukan tes, mereka berganti kembali ke production tanpa perlu diinstal ulang atau membuat build preview terpisah.

Di bawah permukaan, channel surfing bekerja dengan memungkinkan aplikasi memberitahu klien pembaruan mana saluran yang harus digunakan. Pilihan tersebut dapat diubah pada waktu runtime dan tetap berlaku sampai dihapus atau diganti.

Cara Mengimplementasikan Channel Surfing

Sebelum Anda dapat mencoba channel surfing, project Anda harus dikonfigurasi dengan Capgo Live Updates. Untuk mengatur hal tersebut, ikuti panduan Capgo quickstart. Satu-satunya pengaturan yang diperlukan untuk channel surfing adalah mengaktifkan "Izinkan perangkat untuk berasosiasi sendiri" pada setiap saluran yang ingin Anda ganti di dashboard Capgo..

Tidak ada perubahan atau pengaturan Capgo yang diperlukan di luar itu. code

Di intinya, navigasi kanal adalah dikendalikan oleh satu panggilan API:

import { CapacitorUpdater } from '@capgo/capacitor-updater';

await CapacitorUpdater.setChannel({ channel: 'your-channel' });

Panggilan ini menetapkan kanal yang digunakan ketika melakukan kueri Capgo untuk memperbarui. Pelajari lebih lanjut tentang metode setChannel API.

Penggantian Kanal Instan (v5.34.0+)

Mulai dari versi plugin 5.34.0, 6.34.0, 7.34.0, atau 8.0.0 (tergantung pada versi utamamu), setChannel() berfungsi dengan cara yang berbeda dan lebih cepat:

  1. Validasi Backend (saja baca saja): Permintaan dikirim ke backend Capgo untuk memvalidasi apakah kanal tersebut diizinkan
  2. Pembaruan Penyimpanan Lokal: Jika validasi berhasil, kanal tersebut disimpan ke penyimpanan lokal perangkat
  3. Efek Instan: Menggunakan update berikutnya akan langsung menggunakan saluran baru

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 Switching Saluran

Untuk pengalaman pengguna yang lebih baik, Anda biasanya ingin melakukan lebih dari hanya mengganti saluran dan menunggu aplikasi restart. Pendekatan umum adalah memeriksa update secara langsung, mengunduh jika tersedia, dan memuat ulang aplikasi sehingga pengguna langsung berada di update saluran yang dipilih.

Alur yang Umum

  1. Mengubah saluran (setChannel)
  2. Mengatur update (getLatest)
  3. Mengunduh dan menerapkan update (download, set atau next)
  4. contextreload)

HTML text fragment from a longer Capgo UI string (parent key `alternatives_cta_questions`). Page/area: Capacitor live-update alternatives comparison page. Role: Long marketing or legal paragraph. Seen in: page alternatives.astro. Preserve Capgo product/brand and developer terms exactly. Message key `alternatives_cta_questions` (Alternatives CTA Questions). | HTML text fragment from a longer Capgo UI string (parent key `appflow_cta_questions`). Page/area: Appflow comparison / migration marketing copy. Role: Long marketing or legal paragraph. Seen in: page ionic-appflow.astro. Preserve Capgo product/brand and developer terms exactly. Message key `appflow_cta_questions` (Appflow CTA Questions). | HTML text fragment from a longer Capgo UI string (parent key `capwesome_cta_questions`). Page/area: Capawesome comparison page. Role: Long marketing or legal paragraph. Seen in: page capwesome.astro. Preserve Capgo product/brand and developer terms exactly. Message key `capwesome_cta_questions` (Capwesome CTA Questions). | HTML text fragment from a longer Capgo UI string (parent key `consulting_faq_subtitle`). Page/area: Consulting services page. Role: Section subtitle or tagline. Seen in: page consulting.astro. Preserve Capgo product/brand and developer terms exactly. Message key `consulting_faq_subtitle` (Consulting FAQ Subtitle). | Page/area: Appflow comparison / migration marketing copy. Role: Short UI label or navigation item. Seen in: page ionic-appflow.astro, page ionic-enterprise-plugins.astro, page solutions/ionic-enterprise-plugins.astro. Message key `appflow_plugins_or` (Appflow Plugins Or).

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 aliran ini adalah pilihan Anda. Anda mungkin membagi langkah-langkah ini di beberapa interaksi atau menjalankannya secara bersamaan. Terlepas dari bagaimana Anda mengatur aliran, pastikan untuk mempertimbangkan kegagalan. Masalah jaringan atau saluran yang tidak valid dapat mencegah pembaruan dari diterapkan.

Syarat Hanya Satu: Aktifkan Penugasan Sendiri

Ini adalah satu-satunya hal yang perlu Anda lakukan untuk mengaktifkan saluran surfing. Sebelum aplikasi Anda dapat berganti ke saluran menggunakan setChannel(), you must enable self-assignment for that channel in the Capgo dashboard:

  1. Pergilah ke Saluran section in your Capgo dashboard
  2. Nama fitur saluran rilis Capgo. Halaman/area: Halaman pemasaran solusi Capgo. Peran: Label UI singkat atau item navigasi. Dilihat di: halaman solusi/white-label.astro. Kunci pesan `solutions_white_label_visual_cell2_value` (Nilai Sel Visual Putih Label Solusi).
  3. bagian dalam Klik pada nama saluran yang ingin Anda kelola
  4. Aktifkan Penugasan Sendiri

aktifkan pengalihan sendiri di pengaturan saluran

Itu saja. Tidak ada perubahan konfigurasi yang diperlukan di aplikasi Anda. Tidak defaultChannel pengaturan yang diperlukan. Cukup aktifkan pengalihan sendiri pada saluran yang ingin pengguna dapat beralih ke.

Jika pengaturan ini dinonaktifkan, setiap upaya untuk memanggil setChannel() dengan saluran ini akan gagal dan channelPrivate akan mengirimkan acara.

Daftar Saluran yang Tersedia

Anda dapat mengambil daftar saluran yang tersedia untuk pengalihan sendiri:

const { channels } = await CapacitorUpdater.listChannels();

console.log('Available channels:', channels.map(c => c.name));
// Use this to build a channel selector UI

Saluran ini hanya akan mengembalikan saluran di mana pengalihan sendiri telah diaktifkan.

Mendapatkan Saluran yang Sedang Digunakan

Tentukan saluran mana yang perangkat sedang ditugaskan:

const { channel } = await CapacitorUpdater.getChannel();

console.log('Current channel:', channel);

Mengembalikan ke Saluran Default

Menghapus pengaturan saluran dan kembali ke saluran default:

await CapacitorUpdater.unsetChannel({});

Menghilangkan tautan perangkat dari saluran tertentu, sehingga membuatnya kembali ke saluran defaultChannel di konfigurasi Anda atau saluran default di cloud.

Bagaimana Cara Menguji Pemutaran Saluran

Menggunakan Pemutaran Saluran @capgo/capacitor-updater API is designed for release builds. In debug builds, the app typically loads JavaScript from a development server instead, which bypasses the normal update flow.

__CAPGO_KEEP_0__ dirancang untuk build rilis. Di build debug, aplikasi biasanya memuat JavaScript dari server pengembangan, yang menghindari alur pembaruan normal.

Persyaratan Satu-satunya persyaratan untuk pemutaran saluran adalah mengaktifkan “Mengizinkan perangkat untuk mengasosiasi sendiri”

pada setiap saluran yang ingin Anda izinkan untuk berganti. Tidak ada perubahan konfigurasi yang diperlukan di aplikasi Anda.

Membuat Build Uji Coba

bun run build && npx cap sync

Kemudian buatlah build asli menggunakan Xcode atau Android Studio, atau gunakan pipeline CI/CD Anda. Aplikasi akan memulai di saluran yang ditetapkan sebagai default di dashboard Anda Capgo.

Penerbitan Perbaruan ke Saluran yang Berbeda

Setelah aplikasi diinstal, penerbitkan 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 UI navigasi saluran di aplikasi dan aktifkan switch saluran. Aplikasi harus mengambil perbaruan dari saluran yang dipilih dan memuat ulang ke perbaruan baru.

Membangun UI Switcher Saluran

Saluran browsing biasanya ingin Anda terbatas pada pengguna tertentu, bukan pada semua pengguna yang menggunakan aplikasi Anda. Misalnya, Anda mungkin memiliki tombol yang tersedia untuk karyawan yang terautentikasi saja yang mengganti aplikasi ke saluran pratinjau.

Contoh Komponen React untuk Switcher 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>
  );
}

Peringatan Perbaruan OTA

Tidak ada yang spesifik untuk browsing saluran, tetapi mereka cenderung menjadi jelas setelah Anda memulai mengganti saluran secara waktu eksekusi.

Perbedaan Versi Waktu Eksekusi

Perbaruan di Capgo terkait dengan versi aplikasi asli. Jika versi asli dari perbaruan tidak sesuai dengan versi asli dari aplikasi yang diinstal, perbaruan tidak akan diunduh atau diterapkan. Ketika browsing saluran, hal ini biasanya muncul sebagai aplikasi yang berganti saluran tetapi tidak ada perbaruan yang diterapkan, meskipun ada di saluran tersebut.

Biasanya ini berarti perbaruan diterbitkan dari versi asli aplikasi yang berbeda. Pastikan bundle saluran Anda kompatibel dengan versi asli aplikasi yang diinstal di perangkat.

Membersihkan atau Membatalkan Perbaruan

Jika sebuah aplikasi telah mengunduh perbaruan untuk sebuah saluran, menghapus perbaruan tersebut dari Capgo dashboard tidak akan menghapusnya dari perangkat yang sudah memiliki perbaruan tersebut. Penghapusan hanya akan menghentikan pengunduhan masa depan.

Metode yang paling dapat diandalkan untuk membatalkan perbaruan yang salah adalah dengan menerbitkan perbaruan yang sudah terbukti baik ke saluran yang sama. Hal ini akan menciptakan perbaruan baru di atas sejarah saluran, yang akan dianggap sebagai versi terbaru dan diterapkan oleh klien sebaliknya.

Capgo juga menyediakan mekanisme rollback yang dapat menginstruksikan klien untuk menerapkan perbaruan sebelumnya yang stabil atau kembali ke perbaruan yang diintegrasikan dalam build.

Pertimbangan Migrasi Data

Mengganti saluran akan mengubah bundle JavaScript yang dijalankan oleh aplikasi. Jika aplikasi Anda bergantung pada migrasi atau bentuk data yang tidak kompatibel di antara saluran, mengganti-ganti saluran dapat menyebabkan masalah.

Contohnya, jika perbaruan beta menerapkan migrasi database, versi produksi mungkin tidak memahami skema baru. Pengembang harus memastikan bahwa perbaruan mereka tetap aman untuk berganti-ganti atau membatasi penggantian ke satu arah ketika diperlukan.

Mengapa Mengganti Saluran Meningkatkan Iterasi Mobile

Mengganti saluran sangat berguna ketika Anda perlu meninjau perubahan dengan cepat di lingkungan produksi.

Pengujian Cepat

Bayangkan perbaikan bug darurat yang memerlukan validasi sebelum diterapkan secara luas. Dengan channel surfing, perubahan dapat diisolasi pada sekelompok pengguna yang ditunjuk yang dapat memeriksa perubahan tersebut sebelum mencapai produksi.

Ulasan Stakeholder

Seorang pemilik produk atau QA dapat mengubah instalasi build produksi mereka ke saluran update lain, memverifikasi perbaikan atau fitur, dan kemudian kembali lagi setelah mereka selesai.

Pengujian yang Dipercepat

Perubahan ini membuat lebih mudah untuk melibatkan stakeholders non-teknis dalam ulasan dan pengambilan keputusan, sambil menjaga alur kerja tetap lancar. Sebuah build produksi tunggal menjadi alat yang fleksibel untuk pengujian, umpan balik, dan validasi.

Penggunaan Kasus

  • context: Halaman/area: Halaman pemasaran solusi Capgo. Peran: Judul bagian atau halaman. Dilihat di: halaman solusi/pengujian-beta.astro. Kunci pesan `solutions_beta_testing_usecases_title` (Judul Penggunaan Kasus Pengujian Beta Solusi). | Halaman/area: Halaman pemasaran solusi Capgo. Peran: Label UI. Dilihat di: halaman solusi/qsr.astro. Kunci pesan `solutions_qsr_usecases_label` (Label Penggunaan Kasus Qsr Solusi).Pengujian QA
  • : Biarkan tim QA berganti antara cabang fiturProgram Beta
  • : Pengguna memilih masuk ke saluran beta untuk akses awalUlasan Stakeholder
  • A/B Testing: Mengalokasikan pengguna ke saluran yang berbeda untuk eksperimen
  • Debugging: Mengalihkan pengguna tertentu ke saluran debug untuk mendiagnosis masalah

Perbandingan: Metode Perubahan Saluran

Metode Waktu Efek Dimana Data Disimpan Penggunaan Kasus
setChannel() Konteks: Halaman/area: Halaman pemasaran solusi Capgo. Peran: Label UI singkat atau item navigasi. Dilihat di: halaman solusi/cordova-to-capacitor-ai.astro. Kunci pesan `solutions_cordova_to_capacitor_ai_table_use_case` (Solutions Cordova To Capacitor Ai Table Use Case). dari plugin Instan (langsung di perangkat) Switching Channel Pengguna di Aplikasi
Override Perangkat di Dashboard Sampai dengan 2 menit Database Backend Perubahan Admin yang Ditargetkan untuk Perangkat Tertentu
Penugasan Channel API Sampai dengan 2 menit Database Backend Integrasi Backend Otomatis

Untuk pengalaman pengguna yang terbaik ketika membangun antarmuka pengguna switching channel, selalu gunakan metode plugin. setChannel() Praktik Terbaik

Penggunaan Channel yang Dapat Diubah oleh Pengguna

  1. Mengatur Akses: Biasanya, navigasi antar saluran digunakan untuk pengguna internal - jangan terlalu banyak menggunakannya
  2. Menangani Kesalahan: Selalu tangani kesalahan dengan baik ketika mengganti saluran
  3. Memastikan Kompatibilitas: Pastikan pembaruan pada saluran yang berbeda kompatibel dengan versi native yang terpasang
  4. Dokumentasi Saluran: Simpanlah dokumentasi yang jelas tentang apa saja yang dilakukan oleh setiap saluran
  5. Pantau Penggunaan: Ikuti perangkat mana yang menggunakan saluran mana untuk debugging

Sumber Daya

Kesimpulan

Channel surfing mengubah cara Anda dapat beriterasi pada aplikasi Capacitor. Sebaliknya dari menganggap build produksi sebagai titik akhir yang tetap, mereka menjadi alat fleksibel untuk pengujian, validasi, dan iterasi cepat.

Dengan channel switching instan yang diperkenalkan dalam versi plugin terbaru, pengalaman sekarang sudah mulus - pengguna dapat berganti kanal dan langsung menerima update dari kanal baru tanpa menunggu periode apa pun.

Apakah Anda sedang memvalidasi perbaikan bug dengan stakeholder, menjalankan program beta, atau menguji masalah dengan pengguna tertentu, channel surfing memberikan fleksibilitas untuk mengirimkan update yang tepat kepada pengguna yang tepat pada waktu yang tepat.

Teruskan dari Channel Surfing untuk Capgo: Cara Berganti Kanal Update pada Waktu Jalannya

Jika Anda menggunakan Channel Surfing untuk Capgo: Cara Berganti Kanal Update pada Waktu Jalannya untuk merencanakan routing kanal dan peluncuran yang dipersiapkan, hubungkannya dengan Kanal-Kanal untuk detail implementasi di Channel, Channel untuk detail implementasi di Channel, Channel untuk detail implementasi di Channel, Pengujian Beta untuk alur produk di Pengujian Beta, dan Pengaturan Versi untuk alur produk di Pengaturan Versi.

Update Hidup untuk Capacitor aplikasi

Ketika bug layer web masih aktif, kirimkan perbaikan melalui Capgo daripada menunggu hari-hari untuk persetujuan toko aplikasi. Pengguna mendapatkan pembaruan di latar belakang sementara perubahan native tetap dalam jalur pengujian normal.

Dukungan Manusia dari Martin

Mulai Sekarang

Terbaru dari Blog Kami

Capgo memberikan Anda wawasan terbaik yang Anda butuhkan untuk membuat aplikasi mobile profesional yang sebenarnya.