Lompat ke Konten

Saluran

Saluran adalah mekanisme inti untuk mengelola pembaruan aplikasi di Capgo. Mereka memungkinkan Anda untuk mengontrol bagaimana dan kapan pengguna Anda menerima pembaruan, memungkinkan fitur seperti pengujian A/B, peluncuran berjenjang, dan pembaruan spesifik platform.

Saluran mewakili jalur distribusi untuk pembaruan aplikasi Anda. Setiap saluran dapat dikonfigurasi dengan aturan dan keterbatasan tertentu:

  • Pengendalian Paket (versi): Tentukan paket (versi) yang diterima pengguna
  • Target Platform: Target spesifik platform (iOS/Android/Electron)
  • Kebijakan Perbarui: Kendalikan bagaimana perbarui disampaikan
  • Keterbatasan Perangkat: Atur perangkat mana yang dapat mengakses perbarui
  • publik: Tetapkan sebagai saluran default untuk perangkat baru.
  • matiKanAutoPerbaruiDiBawaLahan: Mencegah perbarui ketika perangkat native memiliki versi yang lebih baru daripada bundle stabil saluran.
  • Menghapus Auto Update: Mengontrol perilaku pembaruan (major, minor, metadata, patch, atau none).
  • Mengupdate Paket: Mengontrol apakah perangkat mengunduh zip, delta, atau kedua-duanya (all, zip, delta, zip_from_builtin, atau delta_from_builtin). Lihat Paket Pembaruan.
  • : Aktifkan atau nonaktifkan pengiriman berdasarkan platform.Mengaktifkan Pengaturan Perangkat Sendiri
  • : Biarkan perangkat memilih saluran.__CAPGO_KEEP_0__
  • izin emulator, izin perangkat, izin dev, izin produksi: Mengontrol perangkat dan jenis build mana yang menerima pembaruan.
  • Rollout Progressif: Simpan bundle stabil sambil menampilkan bundle target ke kohort yang menempel. Lihat Rollout Progressif.
  1. Saluran Pengujian: Tahan saluran pengujian untuk validasi internal
  2. Rilis Terencana: Gunakan beberapa saluran untuk peluncuran pembaruan secara bertahap
  3. Pemisahan Platform: Buat saluran terpisah untuk iOS, Android, dan Electron jika diperlukan
  4. Pengendalian Paket (versi): Gunakan versi semantik untuk jalur pembaruan yang jelas

https://api.capgo.app/channel/

Membuat atau memperbarui konfigurasi saluran.

type DisableAutoUpdate = "major" | "minor" | "metadata" | "patch" | "none"
type AutoPauseAction = "pause" | "rollback" | "notify"
interface ChannelSet {
app_id: string
channel: string
version?: string | null // stable bundle name
public?: boolean
disableAutoUpdateUnderNative?: boolean
disableAutoUpdate?: DisableAutoUpdate
updatePackage?: "all" | "zip" | "delta" | "zip_from_builtin" | "delta_from_builtin"
ios?: boolean
android?: boolean
electron?: boolean
allow_device_self_set?: boolean
allow_emulator?: boolean
allow_device?: boolean
allow_dev?: boolean
allow_prod?: boolean
// Progressive rollout (camelCase is preferred)
rolloutVersion?: string | number | null // target bundle name or ID
rolloutPercentage?: number // 0–100
rolloutPercentageBps?: number // 0–10000; takes precedence when both are set
rolloutEnabled?: boolean
rolloutPaused?: boolean // input-only convenience flag
rolloutPausedAt?: string | null // ISO timestamp or null
rolloutPauseReason?: string | null
rolloutCacheTtlSeconds?: number // 60–31536000
rollback?: boolean
promoteToStable?: boolean
// Rollout auto-pause policy
autoPauseEnabled?: boolean
autoPauseWindowMinutes?: number
autoPauseFailureRateBps?: number | null
autoPauseConfidence?: number
autoPauseMinAttempts?: number | null
autoPauseMinFailures?: number | null
autoPauseAction?: AutoPauseAction
autoPauseCooldownMinutes?: number
}

Untuk bidang peluncuran dan penghentian otomatis, API juga menerima bentuk yang setara snake_case seperti rollout_version atau auto_pause_enabled. updatePackage context: Teks fragmen HTML dari string Capgo UI yang lebih panjang (kunci induk `alternatives_cta_questions`). Halaman/area: Halaman perbandingan Capacitor live-update. Peran: Paragraf pemasaran atau hukum yang panjang. Dilihat di: halaman alternatives.astro. Simpan istilah produk/brand dan istilah pengembang Capgo secara tepat. Kunci pesan `alternatives_cta_questions` (Pertanyaan Tindakan Alternatif). | Teks fragmen HTML dari string Capgo UI yang lebih panjang (kunci induk `appflow_cta_questions`). Halaman/area: Halaman perbandingan/migrasi pemasaran Appflow. Peran: Paragraf pemasaran atau hukum yang panjang. Dilihat di: halaman ionic-appflow.astro. Simpan istilah produk/brand dan istilah pengembang Capgo secara tepat. Kunci pesan `appflow_cta_questions` (Pertanyaan Tindakan Appflow). | Teks fragmen HTML dari string Capgo UI yang lebih panjang (kunci induk `capwesome_cta_questions`). Halaman/area: Halaman perbandingan Capawesome. Peran: Paragraf pemasaran atau hukum yang panjang. Dilihat di: halaman capwesome.astro. Simpan istilah produk/brand dan istilah pengembang Capgo secara tepat. Kunci pesan `capwesome_cta_questions` (Pertanyaan Tindakan Capwesome). | Teks fragmen HTML dari string Capgo UI yang lebih panjang (kunci induk `consulting_faq_subtitle`). Halaman/area: Halaman layanan konsultasi. Peran: Judul atau tagline bagian. Dilihat di: halaman consulting.astro. Simpan istilah produk/brand dan istilah pengembang Capgo secara tepat. Kunci pesan `consulting_faq_subtitle` (Judul FAQ Layanan Konsultasi). | Halaman/area: Halaman perbandingan/migrasi pemasaran Appflow. Peran: Label UI singkat atau item navigasi. Dilihat di: halaman ionic-appflow.astro, halaman ionic-enterprise-plugins.astro, halaman solusi/ionic-enterprise-plugins.astro. Kunci pesan `appflow_plugins_or` (Appflow Plugins Atau). update_packagejuga menerima rollback . Jika kedua bentuk disediakan, nilai camelCase yang menang.

adalah camelCase hanya. version Target peluncuran memerlukan saluran yang sudah ada. Harus memiliki bundle stabil yang sudah ditugaskan atau menerima satu melalui permintaan POST yang sama. rollback dan promoteToStable tindakan terminal; jangan kombinasikan mereka dengan satu sama lain.

Konfigurasi 5% untuk saluran yang sudah ada: production Jendela Terminal

Salin ke Klipbord
curl -X POST \
-H "authorization: your-api-key" \
-H "Content-Type: application/json" \
-d '{
"app_id": "com.example.app",
"channel": "production",
"rolloutVersion": "1.3.0",
"rolloutPercentage": 5,
"rolloutEnabled": true,
"rolloutCacheTtlSeconds": 2592000,
"autoPauseEnabled": true,
"autoPauseFailureRateBps": 500,
"autoPauseMinAttempts": 100,
"autoPauseAction": "pause"
}' \
https://api.capgo.app/channel/

Judul Bagian “Respons Sukses”

Salin ke Klipbord
{
"status": "ok"
}

Salin ke Klipbord

Untuk preview PR dengan hak akses minimal, autentikasi endpoint ini dengan authorization: $CAPGO_API_KEY atau capgkey: $CAPGO_API_KEYUntuk membuat preview non-umum, kunci dapat membuat saluran preview baru. Pembuatan secara otomatis memberikan kunci tersebut ikatan kehidupan siklus saluran untuk saluran tersebut hanya. x-api-key header is not accepted by the Channels API.

, sehingga tidak dapat menggunakan POST untuk memperbarui saluran yang sudah ada, termasuk saluran default atau utama. app_preview Biarkan channel.update_settingskosong (atau tetapkan ke

) untuk saluran preview PR. Gunakan public Kunci dapat membuat saluran preview baru. Pembuatan secara otomatis memberikan kunci tersebut ikatan kehidupan siklus saluran untuk saluran tersebut hanya. falsePeran ini tidak termasuk bundle upload --channel untuk aliran pembuatan dan unggah alih-alih menganggap POST sebagai tampilan umum-channel upsert.

https://api.capgo.app/channel/

Ambil informasi channel. Mengembalikan 50 channel per halaman. Tanpa channel, tanggapan adalah array. Dengan channel, tanggapan adalah objek channel tunggal.

  • app_id: Wajib. ID aplikasi Anda
  • page: Opsional. Nomor halaman untuk pengaturan halaman
  • channel: Opsional. Nama channel spesifik untuk diambil
Jendela Terminal
# Get all channels
curl -H "authorization: your-api-key" \
"https://api.capgo.app/channel/?app_id=com.example.app"
# Get a specific channel
curl -H "authorization: your-api-key" \
"https://api.capgo.app/channel/?app_id=com.example.app&channel=production"
# Get the next page
curl -H "authorization: your-api-key" \
"https://api.capgo.app/channel/?app_id=com.example.app&page=1"
interface Channel {
id: number
created_at: string
updated_at: string
name: string
app_id: string
created_by: string
public: boolean
disableAutoUpdateUnderNative: boolean
disableAutoUpdate: DisableAutoUpdate
updatePackage: "all" | "zip" | "delta" | "zip_from_builtin" | "delta_from_builtin"
allow_device_self_set: boolean
allow_emulator: boolean
allow_device: boolean
allow_dev: boolean
allow_prod: boolean
version: { id: number, name: string } | null // stable bundle
// These three response identifiers intentionally use snake_case.
rollout_version: number | null
rollout_id: string
rollout_version_info: { id: number, name: string } | null
rolloutPercentageBps: number
rolloutEnabled: boolean
rolloutPausedAt: string | null
rolloutPauseReason: string | null
rolloutCacheTtlSeconds: number
autoPauseEnabled: boolean
autoPauseWindowMinutes: number
autoPauseFailureRateBps: number | null
autoPauseConfidence: number
autoPauseMinAttempts: number | null
autoPauseMinFailures: number | null
autoPauseAction: AutoPauseAction
autoPauseCooldownMinutes: number
autoPauseLastTriggeredAt: string | null
autoPauseLastCheckedAt: string | null
}

rolloutPaused adalah singkatan masukan saja dan tidak akan dikembalikan. Rilis yang tertunda diwakili oleh nilai tidak null rolloutPausedAt.

[
{
"id": 1,
"name": "production",
"app_id": "com.example.app",
"updatePackage": "all",
"version": { "id": 1, "name": "1.2.0" },
"rollout_version": 2,
"rollout_id": "e60c19c9-2e65-4e0d-bc06-d1f5b4f96276",
"rollout_version_info": { "id": 2, "name": "1.3.0" },
"rolloutPercentageBps": 500,
"rolloutEnabled": true,
"rolloutPausedAt": null,
"rolloutCacheTtlSeconds": 2592000,
"autoPauseEnabled": true,
"autoPauseFailureRateBps": 500,
"autoPauseAction": "pause"
}
]

https://api.capgo.app/channel/

Hapus saluran. Perlu diingat bahwa ini akan mempengaruhi semua perangkat yang menggunakan saluran ini.

interface Channel {
channel: string
app_id: string
delete_bundle?: boolean // also delete the linked bundle
}
Tampilan Jendela Terminal
curl -X DELETE \
-H "authorization: your-api-key" \
-H "Content-Type: application/json" \
-d '{
"app_id": "com.example.app",
"channel": "beta"
}' \
https://api.capgo.app/channel/
{
"status": "ok"
}

Pembersihan Pratinjau Aplikasi

Penghapusan Pratinjau Aplikasi

Dengan delete_bundle: true, sebuah app_preview Kunci dapat membersihkan atomik hanya sebuah saluran yang dibuat dan bundel terkait, tidak berbagi. Kunci tidak menerima izin umum. bundle.delete Tampilan Terminal

Salin ke clipboard
curl -X DELETE \
-H "capgkey: $CAPGO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"app_id": "com.example.app",
"channel": "pr-123",
"delete_bundle": true
}' \
https://api.capgo.app/channel/

Penghapusan Pratinjau Aplikasi

Skenario kesalahan umum dan responsnya:

Salin ke clipboard

// Channel not found
{
"error": "Channel not found",
"status": "KO"
}
// Invalid bundle (version) format
{
"error": "Invalid version format. Use semantic versioning",
"status": "KO"
}
// Invalid update policy
{
"error": "Invalid disableAutoUpdate value",
"status": "KO"
}
// Permission denied
{
"error": "Insufficient permissions to manage channels",
"status": "KO"
}
  1. Pengujian Beta
{
"app_id": "com.example.app",
"channel": "beta",
"version": "1.2.0-beta",
"public": false,
"allow_emulator": true,
"allow_dev": true
}
  1. Salin ke clipboard
{
"app_id": "com.example.app",
"channel": "production",
"version": "1.2.0",
"public": true,
"disableAutoUpdate": "minor"
}
  1. Salin ke clipboard
{
"app_id": "com.example.app",
"channel": "ios-hotfix",
"version": "1.2.1",
"ios": true,
"android": false
}

Salin ke clipboard

Teruskan dari Channel

Judul Bagian: Teruskan dari Channel Jika Anda menggunakan Channel-nya untuk merencanakan routing saluran dan peluncuran tahap demi tahap, hubungkannya dengan Saluran untuk detail implementasi di Saluran, Saluran untuk detail implementasi di Saluran, Pengujian Beta untuk alur kerja produk di Pengujian Beta, Pengaturan Versi untuk alur kerja produk di Pengaturan Versi, dan Capgo Praktik Terbaik Lingkungan: Staging dengan Satu ID Aplikasi Mobile untuk konteks praktis di Capgo Praktik Terbaik Lingkungan: Staging dengan Satu ID Aplikasi Mobile.