Lompat ke Konten

Saluran

Saluran adalah mekanisme inti untuk mengelola pembaruan aplikasi di Capgo. Mereka memungkinkan Anda 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.
  • matiKanPerbaruiDiBawahAplikasiAsli: Mencegah perbarui ketika perangkat memiliki aplikasi asli yang lebih baru dari bundle stabil saluran.
  • Menghentikan pembaruan otomatis: Mengontrol perilaku pembaruan (major, minor, metadata, patch, atau none).
  • Mengontrol apakah perangkat mengunduh zip, delta, atau kedua-duanya (, atauall, zip, delta, zip_from_builtin). Lihat delta_from_builtinPaket pembaruan ios/android/electron.
  • : Mengaktifkan atau menonaktifkan pengiriman berdasarkan platform.Mengizinkan perangkat menentukan saluran sendiri
  • __CAPGO_KEEP_0____CAPGO_KEEP_1__
  • izin emulator, izin perangkat, izin dev, izin produksi: Mengontrol perangkat dan jenis konstruksi yang menerima pembaruan.
  • Rollout progresif: Tahan bundle stabil sambil menampilkan bundle target ke kohort yang menempel. Lihat Rollout progresif.
  1. Saluran Pengujian: Tahan saluran pengujian untuk validasi internal
  2. Pengaturan Perilisan Langsung: 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 Juga menerima update_package. Jika kedua bentuk disediakan, nilai camelCase yang lebih tinggi akan menang. rollback Hanya camelCase.

Target peluncuran memerlukan saluran yang sudah ada. Saluran tersebut harus memiliki bundle stabil yang sudah ditugaskan atau menerima satu melalui version di 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 Papan Klip
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 Berhasil”

Salin ke Papan Klip
{
"status": "ok"
}

Salin ke Papan Klip

For a least-privilege PR preview, authenticate this endpoint with authorization: $CAPGO_API_KEY atau capgkey: $CAPGO_API_KEYcontext: HTML teks fragmen dari string Capgo UI yang lebih panjang (kunci induk `alternatives_cta_questions`). Halaman/area: Halaman perbandingan alternatif Capacitor live-update. Peran: Paragraf pemasaran atau hukum yang panjang. Dilihat di: halaman alternatives.astro. Simpanlah istilah produk/brand dan istilah pengembang Capgo secara tepat. Pesan kunci `alternatives_cta_questions` (Alternatives CTA Questions). | HTML teks fragmen 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. Simpanlah istilah produk/brand dan istilah pengembang Capgo secara tepat. Pesan kunci `appflow_cta_questions` (Appflow CTA Questions). | HTML teks fragmen 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. Simpanlah istilah produk/brand dan istilah pengembang Capgo secara tepat. Pesan kunci `capwesome_cta_questions` (Capwesome CTA Questions). | HTML teks fragmen dari string Capgo UI yang lebih panjang (kunci induk `consulting_faq_subtitle`). Halaman/area: Halaman layanan konsultasi. Peran: Judul atau tagline bagian FAQ. Dilihat di: halaman consulting.astro. Simpanlah istilah produk/brand dan istilah pengembang Capgo secara tepat. Pesan kunci `consulting_faq_subtitle` (Consulting FAQ Subtitle). | 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. Pesan kunci `appflow_plugins_or` (Appflow Plugins Or). x-api-key header is not accepted by the Channels API.

header tidak diterima oleh Channel __CAPGO_KEEP_0__. app_preview Sebuah channel.update_settingsKunci dapat membuat saluran pra-tayang non-umum baru. Pembuatan secara otomatis memberikan kunci tersebut sebuah ikatan kehidupan siklus kanal untuk saluran tersebut hanya.

Peran tidak termasuk public , sehingga tidak dapat menggunakan POST untuk memperbarui saluran yang ada, termasuk saluran default atau utama yang ada. falseBiarkanlah bundle upload --channel untuk aliran pembuatan dan unggah sebaliknya dari menganggap POST sebagai tampilan umum-channel upsert.

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

Mengambil 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 mengambil
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 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"
}

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 Jendela Terminal

Salin ke Papan Klip
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/

Judul Bagian: “Pengelolaan Kesalahan”

Skenario kesalahan umum dan responsnya:

Salin ke Papan Klip

// 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. Penyebaran Produksi
{
"app_id": "com.example.app",
"channel": "production",
"version": "1.2.0",
"public": true,
"disableAutoUpdate": "minor"
}
  1. Pembaruan Platform-Spesifik
{
"app_id": "com.example.app",
"channel": "ios-hotfix",
"version": "1.2.1",
"ios": true,
"android": false
}

Jika Anda menggunakan Channel Teruskan ke channel routing dan penyebaran 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 yang praktis di Capgo Praktik Terbaik Lingkungan: Staging dengan Satu ID Aplikasi Mobile.