__CAPGO_KEEP_0__ - Pembaruan Langsung untuk Aplikasi __CAPGO_KEEP_1__

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 tes 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
  • Pengtargetan Platform: Target platform tertentu (iOS/Android/Elektron)
  • Kebijakan Pembaruan: Mengontrol bagaimana pembaruan disampaikan
  • Pengaturan Perangkat: Mengelola perangkat mana yang dapat mengakses pembaruan
  • publik: Tetapkan saluran default untuk perangkat baru.
  • disableAutoUpdateUnderNative: Mencegah pembaruan ketika versi aplikasi asli perangkat lebih baru dari bundle stabil saluran.
  • disableAutoUpdate: Kendalikan perilaku pembaruan (major, minor, metadata, patch, atau none).
  • ios/android/electron: Aktifkan atau nonaktifkan pengiriman berdasarkan platform.
  • izin_perangkat_diri_atur: Biarkan perangkat memilih saluran.
  • izin emulator, izin perangkat, izin dev, izin prod: Tentukan perangkat dan jenis build mana yang menerima pembaruan.
  • Rollout Progresif: Simpan bundle stabil sambil menampilkan bundle target ke kohort yang menempel. Lihat Rollout Progresif.
  1. Saatnya Menguji SaluranMaintain a testing channel for internal validation
  2. Pengaturan Rilis Terencana: Gunakan beberapa saluran untuk pengaktifan update secara bertahap
  3. Pemisahan Platform: Buatkan saluran yang terpisah untuk iOS, Android, dan Electron jika diperlukan
  4. Pengendalian Paket (versi): Gunakan versi semantik untuk jalur update yang jelas

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

Buat atau perbarui 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
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, seperti snake_case atau rollout_version . Jika kedua bentuk disediakan, nilai camelCase yang lebih berkuasa. auto_pause_enabledhanya dalam bentuk camelCase. rollback Sasaran peluncuran memerlukan saluran yang sudah ada. Saluran tersebut harus memiliki bundle stabil yang sudah ditugaskan atau menerima satu melalui

dalam permintaan POST yang sama. version untuk rollback dan adalah aksi terminal; jangan kombinasikan mereka dengan satu sama lain. promoteToStable Contoh Permintaan

Bab berjudul “Contoh Permintaan”

Konfigurasi 5% rollout untuk saluran yang sudah ada:

saluran tersebut sudah memiliki bundle stabil. production Jendela Terminal

Salin ke clipboard
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/

Bab berjudul “Respons Sukses”

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

Copy to clipboard

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

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

  • app_id: Wajib. ID aplikasi Anda
  • page: Opsional. Nomor halaman untuk pengaturan halaman
  • channel: Opsional. Nama saluran 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
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 masuk saja dan tidak dikembalikan. Rilis yang terhenti ditunjukkan oleh nilai tidak null rolloutPausedAt.

[
{
"id": 1,
"name": "production",
"app_id": "com.example.app",
"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
}
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"
}

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"
}
  1. Pengujian Beta
{
"app_id": "com.example.app",
"channel": "beta",
"version": "1.2.0-beta",
"public": false,
"allow_emulator": true,
"allow_dev": true
}
  1. Peluncuran Produksi
{
"app_id": "com.example.app",
"channel": "production",
"version": "1.2.0",
"public": true,
"disableAutoUpdate": "minor"
}
  1. Perbaruan Platform-Spesifik
{
"app_id": "com.example.app",
"channel": "ios-hotfix",
"version": "1.2.1",
"ios": true,
"android": false
}

Jika Anda menggunakan Saluran untuk merencanakan routing saluran dan peluncuran tahap demi tahap, hubungkannya dengan Saluran untuk detail implementasi di Saluran, Saluran untuk detail implementasi di Saluran, Solusi Uji Coba Beta untuk alur kerja produk di Solusi Uji Coba Beta, Solusi Target Versi untuk alur kerja produk di Solusi Target Versi, dan Capgo Praktik Terbaik Lingkungan: Pengembangan dengan Satu ID Aplikasi Mobile untuk konteks praktis di Capgo Praktek Praktis Lingkungan: Staging dengan Satu ID Aplikasi Mobile.