Lompat ke konten utama
Tutorial

Mencari Saluran untuk Capgo: Cara Mengganti Saluran Pembaruan secara Waktu Jalanya

Kirim perubahan ke pengguna tertentu secara langsung dengan menggunakan Capgo untuk mengganti saluran waktu jalanya. Ganti saluran pembaruan tanpa harus menginstal ulang aplikasi Capacitor Anda.

Martin Donadieu

Martin Donadieu

Spesialis Konten

Mencari Saluran untuk Capgo: Cara Mengganti Saluran Pembaruan secara Waktu Jalanya

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:

  1. Validasi Backend (baca-saja): Permintaan dikirim ke backend Capgo untuk memvalidasi apakah saluran tersebut diizinkan
  2. Pengupdatean Penyimpanan Lokal: Jika validasi berhasil, saluran tersebut disimpan ke penyimpanan lokal perangkat
  3. 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

  1. Mengganti saluran (setChannel)
  2. Periksa untuk memperbarui (getLatest)
  3. Ambil dan terapkan pembaruan (download, set atau next)
  4. 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:

  1. Buka halaman Saluran bagian di Capgo dashboard Anda
  2. Klik nama saluran yang ingin Anda kelola
  3. Aktifkan “Izinkan perangkat untuk mengasosiasikan diri sendiri”
  4. Simpan perubahan-perubahan ini

Aktifkan pengasosiasian sendiri di pengaturan saluran

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

MetodeWaktu EfekDipertahankan DimanaPenggunaan Kasus
setChannel() dari pluginInstanHanya Perangkat (local)Penggantian saluran pengguna di dalam aplikasi
Dashboard penggantian perangkatHingga 2 menitDatabase BackendPerubahan admin untuk perangkat tertentu
API Pengasasan SaluranHingga 2 menitDatabase BackendIntegrasi Backend Otomatis

Untuk pengalaman pengguna yang terbaik ketika membangun UI pengganti saluran, selalu gunakan metode plugin’s __CAPGO_KEEP_0__. setChannel() Metode.

Praktik Terbaik

  1. Batasi Akses: Biasanya, channel surfing digunakan untuk keperluan internal - jangan terlalu banyak mengungkapkannya kepada semua pengguna
  2. Tangani Kesalahan: Selalu tangani kesalahan dengan baik ketika mengganti saluran
  3. Validasi Kompatibilitas: Pastikan update pada saluran yang berbeda kompatibel dengan versi native yang terpasang
  4. Dokumentasi Saluran: Dokumentasikan dengan jelas apa tujuan setiap saluran
  5. 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.

Live updates untuk aplikasi Capacitor

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

Mulai Sekarang

Terbaru dari Blog Kami

Capgo memberikan Anda wawasan terbaik yang Anda butuhkan untuk menciptakan aplikasi mobile yang benar-benar profesional.