Saluran
Copy prompt pengaturan dengan langkah instalasi dan panduan markdown lengkap untuk plugin ini.
Saluran adalah mekanisme inti untuk mengelola pembaruan aplikasi di Capgo. Mereka memungkinkan Anda mengontrol bagaimana dan kapan pengguna Anda menerima pembaruan, memungkinkan fitur seperti uji coba A/B, peluncuran berjenjang, dan pembaruan spesifik platform.
Mengerti Saluran
Bab berjudul “Pahami Saluran”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
- Pengarah Platform: Targetkan platform tertentu (iOS/Android/Electron)
- Kebijakan Perbarui: Kendalikan bagaimana perbarui disampaikan
- Keterbatasan Perangkat: Kelola perangkat mana yang dapat mengakses perbarui
Opsi Konfigurasi Saluran
Judul Bagian “Opsi Konfigurasi Saluran”- publik: Tetapkan sebagai saluran default untuk perangkat baru.
- mencegahPerbaruiDiBawahAplikasiAsli: Mencegah perbarui ketika perangkat aplikasi aslinya lebih baru dari bundle stabil saluran.
- mencegahPerbarui: Mengatur perilaku pembaruan (
major,minor,metadata,patch, ataunone). - updatePackage: Mengatur apakah perangkat mengunduh zip, delta, atau keduanya (
all,zip,delta,zip_from_builtin, ataudelta_from_builtin). Lihat Format Download. - iOS/Android/Elektron: Aktifkan atau nonaktifkan pengiriman berdasarkan platform.
- izin_perangkat_mengatur_sendiri: Biarkan perangkat memilih saluran.
- izin emulator, izin_perangkat, izin_dev, izin_prod: Mengontrol perangkat dan jenis bangun yang menerima pembaruan.
- Pengaktifan Perlahan: Menjaga bundle stabil sambil menampilkan bundle target ke kohort yang menempel. Lihat Pengaktifan Perlahan.
Praktik Terbaik
Section titled “Best Practices”- Judul bagian ‘Praktik Terbaik’Tetapkan saluran pengujian untuk validasi internal
- Rollout Terencana: Gunakan beberapa saluran untuk peluncuran pembaruan secara bertahap
- Pemisahan Platform: Buatkan saluran yang terpisah untuk iOS, Android, dan Electron jika diperlukan
- Kontrol Paket (versi): Gunakan versi semantik untuk jalur pembaruan yang jelas
Endpoint
Bagian berjudul “Endpoint”https://api.capgo.app/channel/
Buat atau perbarui konfigurasi saluran.
Body Permintaan
Bagian berjudul “Body Permintaan”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 pause otomatis, API juga dapat menerima bentuk yang setara snake_case bentuk formulir, seperti rollout_version context auto_pause_enabled. updatePackage Bentuk lainnya, seperti update_packageJika kedua bentuk disediakan, nilai camelCase yang lebih berkuasa. rollback Hanya camelCase saja.
A rollout target memerlukan sebuah channel yang sudah ada. Channel tersebut harus memiliki bundle stabil yang sudah ditetapkan atau menerima satu melalui version dalam permintaan POST yang sama. rollback and promoteToStable Aksi terminal; jangan kombinasikan mereka dengan satu sama lain.
Contoh Permintaan
Judul Bagian “Contoh Permintaan”Konfigurasi 5% untuk saluran yang sudah ada: production saluran yang bundle stabilnya sudah ditetapkan
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”
Section Judul ‘Response Berhasil’{ "status": "ok"}Mengirimkan POST adalah operasi upsert dan hanya mengembalikan statusnya. Lakukan permintaan GET untuk membaca konfigurasi saluran hasilnya.
Konfigurasi Saluran
Judul Bagian berjudul “Pemisahan Kunci Aplikasi”Untuk melihat pratinjau PR dengan hak akses minimal, autentikasi endpoint ini dengan authorization: $CAPGO_API_KEY atau capgkey: $CAPGO_API_KEY. The x-api-key Judul tidak diterima oleh Channel API.
An app_preview key can create a new non-public preview channel. Creation automatically gives that key a channel-scoped lifecycle binding for that channel only. The role does not include channel.update_settingsTidak dapat menggunakan metode POST untuk memperbarui saluran yang sudah ada, termasuk saluran default atau utama yang sudah ada.
Leave public unset (atau atur ke falseUntuk saluran pratinjau PR. bundle upload --channel Untuk aliran pembuatan dan unggah alih-alih menganggap POST sebagai tampilan pratinjau-channel umum.
Mendapatkan
Membuka “Mendapatkan”https://api.capgo.app/channel/
Mendapatkan informasi saluran. Mengembalikan 50 saluran per halaman. Tanpa channel, tanggapan adalah array. Dengan channel, tanggapan adalah objek saluran tunggal.
Menggunakan Parameter
Membuka “Menggunakan Parameter”app_id: Wajib. ID aplikasi Andapage: Opsional. Nomor halaman untuk pengaturan halamanchannel: Opsional. Nama saluran spesifik untuk mendapatkan
Menggunakan Contoh
Membuka “Menggunakan Contoh”# Get all channelscurl -H "authorization: your-api-key" \ "https://api.capgo.app/channel/?app_id=com.example.app"
# Get a specific channelcurl -H "authorization: your-api-key" \ "https://api.capgo.app/channel/?app_id=com.example.app&channel=production"
# Get the next pagecurl -H "authorization: your-api-key" \ "https://api.capgo.app/channel/?app_id=com.example.app&page=1"Tipe Respon
Bagian berjudul “Tipe Respon”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 singkat pintas masukan saja dan tidak dikembalikan. Rilis yang tertunda diwakili oleh nilai tidak null rolloutPausedAt.
Contoh Respon
Bagian berjudul “Contoh Respon”[ { "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.
Tubuh Permintaan
Bagian berjudul “Tubuh Permintaan”interface Channel { channel: string app_id: string delete_bundle?: boolean // also delete the linked bundle}Contoh Permintaan
Bagian berjudul “Contoh Permintaan”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/Respons Berhasil
Bagian berjudul “Respons Berhasil”{ "status": "ok"}Pembersihan Pratinjau Aplikasi
Bagian berjudul “Pembersihan Pratinjau Aplikasi”Dengan delete_bundle: true, sebuah app_preview Kunci dapat membersihkan atomik hanya sebuah channel yang dibuat dan bundel terkait, tidak bersamaan. Kunci tidak menerima akses umum bundle.delete permission.
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/Pengelolaan Kesalahan
Bab berjudul “Pengelolaan Kesalahan”Skenario kesalahan umum dan responsnya:
// 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"}Penggunaan Umum
Bab berjudul “Penggunaan Umum”- Uji Coba Beta
{ "app_id": "com.example.app", "channel": "beta", "version": "1.2.0-beta", "public": false, "allow_emulator": true, "allow_dev": true}- Rilis ke Produksi
{ "app_id": "com.example.app", "channel": "production", "version": "1.2.0", "public": true, "disableAutoUpdate": "minor"}- Pembaruan Platform-Spesifik
{ "app_id": "com.example.app", "channel": "ios-hotfix", "version": "1.2.1", "ios": true, "android": false}Teruskan dari Channel
Bahasa berjudul “Teruskan dari Channel”Jika Anda menggunakan Channel untuk merencanakan routing saluran dan peluncuran tahap demi tahap, hubungkannya dengan Channel untuk detail implementasi di Channels, Saluran untuk detail implementasi di Channels, Sistem Uji Coba Beta Untuk alur kerja produk dalam Solusi Pengujian Beta. Solusi Pengujian Beta untuk alur kerja produk di Solusi Pengujian Beta, Capgo Environment Best Practices: Staging with One Mobile App ID Untuk konteks praktis di lingkungan Capgo Environment Best Practices: Pengembangan Staging dengan Satu ID Aplikasi Mobile.