소개
업데이트 시스템을 즐기기 시작할 때, Capgo와 같은 앱에서 마찬가지로 느끼실 겁니다. "더 많은 것을 원한다면"라는 생각이 들 것입니다.
저도 그 생각을 했지만, Capgo의 제작자이기 때문에, 제가 직접 확인할 수 있었습니다.
모든 것이 오픈 소스이기 때문에, 여러분도 이 권한을 가집니다.
다음으로, Capacitor 앱 배포 프로세스의 다음 문제는 다른 팀원들이 업데이트를 테스트하는 것입니다!
TestFlight으로는 이 문제가 간단합니다. 사람들을 팀에 끌어들이고 그들이 어떻게 얻을 수 있는지 이해하는 것은 시간이 걸립니다!
애플에 보내면 매번 봇이 검토하는 과정을 거치는데, 5분에서 5시간까지의 시간이 걸릴 수 있습니다. 언제 걸릴지 알 수 없습니다.
이 문제로 인해 여러 번 발표가 늦어졌습니다.
구글에서는 thậm chí còn tồi tệ hơn, đó là bí ẩn của cuộc đời tôi, sản xuất phiên bản sản xuất chỉ mất hơn 2 giờ, nhưng phiên bản gần beta mất 1-2 ngày.
해결책
Capgo에서 채널 시스템을 만들었습니다.
npx @capgo/cli@latest bundle upload -c production 모든 사용자에게 업데이트를 업데이트합니다 (제품 채널이 기본값으로 설정되어 있으면)
만약에 npx @capgo/cli@latest bundle upload -c development __CAPGO_KEEP_0__ 액션 GitHub 액션.
Super 자동화된 방법
__CAPGO_KEEP_0__
이 기능은 채널 세트에 대한 백엔드를 만들지 않으려면 유용할 수 있습니다. 이 기능은 빠르게 구현할 수 있습니다.
그것을 사용하면, 채널 중 하나를 자체로 설정하도록 허용하는 것만 하면 됩니다.

그 다음, Ionic 앱의 code에 이 코드를 추가하세요. 최적의 경험을 위해, 사용자가 '베타 등록' 버튼을 클릭한 후에 이 코드를 사용하세요.
import { CapacitorUpdater } from '@capgo/capacitor-updater'
const deviceId = await CapacitorUpdater.setChannel({ channel: 'beta' })
수동 방법
이 기능은 내부 팀에 유용할 수 있습니다. 이 기능은 빠르게 구현할 수 있습니다. 사용자들이 앱에서 기기ID를 복사하고, 그 code를 사용하여 얻을 수 있습니다:
import { CapacitorUpdater } from '@capgo/capacitor-updater'
const deviceId = await CapacitorUpdater.getDeviceId()
앱에 버튼을 숨기거나, 연결된 사용자만에게 버튼을 표시하도록 role을 사용하여, 예를 들어. admin 그 다음, 웹 앱 또는 네이티브 앱 __CAPGO_KEEP_0__로 이동하여, 앱 관리자로 로그인하고, 앱을 선택한 후, 기기 목록을 클릭합니다.
Capgo 웹 앱 또는 네이티브 앱으로 이동하여 Capgo에 앱 관리자로 로그인한 후 앱을 선택하고 장치 목록을 클릭합니다.
사용자에게 버튼을 클릭하도록 요청하고, 팀원에게 앱을 다시 열어달라고 요청하고, 30초 기다렸다가 앱을 닫고 다시 열어보십시오. development그럼 사용자는 버전을 받을 수 있을 것입니다.
그 사용자는 당신의 버전을 받을 것입니다.
자동화된 방법
이 방법은 베타 테스터에게 유용할 수 있으며, 구현하는 데 더 오랜 시간이 걸립니다.
자동화된 방법과 동일하게, 디바이스 ID를 가져야 합니다.
import { CapacitorUpdater } from '@capgo/capacitor-updater'
const deviceId = await CapacitorUpdater.getDeviceId()
이번에는 자동으로 백엔드에 전송해야 합니다. 방법은 여러분이 결정하셔야 합니다.
데이터베이스에 저장하는 것을 추천합니다. 나중에 편리하게 사용할 수 있습니다.
그리고 Capgo 백엔드에도 전송해야 합니다. 아래 두 가지 code 예시를 참고하세요.
NodeJS
import axios from 'axios'
await axios.post('https://api.capgo.app/device', {
app_id: 'YOUR_APP_ID',
device_id: 'DEVICE_ID',
channel: 'CHANNEL_NAME', // The name of the channel, or undefined if version_id provided
version_id: 'VERSION_NAME' // this is optional, if provide it will override the channel, that useful when you want to debug only one user.
}, {
headers: {
authorization: 'YOUR_API_KEY' // choose a key with 'write' or 'all' rights
}
})
Cloudflare
addEventListener('fetch', (event) => {
event.respondWith(
handleRequest(event.request).catch(
err => new Response(err.stack, { status: 500 })
)
)
})
async function handleRequest(request) {
const { pathname, method } = new URL(request.url)
const body = await request.json()
const newBody = JSON.stringify({
app_id: 'YOUR_APP_ID',
device_id: body.device_id,
channel: 'alpha'
})
const newUrl = new URL('https://api.capgo.app/device')
const options = {
headers: {
authorization: 'YOUR_API_KEY',
},
method: 'POST',
body: newBody
}
if (request.method === 'DELETE') {
// DELETE the channel link
options.method = 'DELETE'
return fetch(newUrl.toString(), options)
}
return fetch(newUrl.toString(), options)
}
배포된 URL에 POST 요청을 보내고, body에 device_id를 포함하여 추가하고 삭제할 수 있습니다.
이 설정을 완료한 후, 앱에 옵트인 버튼을 추가하고, 웹 앱에서 설정이 설정되었는지 확인하세요.
또한 __CAPGO_KEEP_0__를 제거하여 override를 제거할 수 있습니다. null __CAPGO_KEEP_0__
프로그램적으로 장치에 설정된 오버라이드 확인이 필요하다면 URL에서 가져올 수 있습니다.
import axios from 'axios'
const res = await axios.get('https://api.capgo.app/device?app_id=YOUR_APP_ID&device_id=DEVICE_ID', {
headers: {
authorization: 'YOUR_API_KEY' // choose a key with 'write' or 'all' rights
}
})
console.log('data', res.json())
How to send specific update to one user or a group에서 계속 진행하세요.
이 기능을 사용하고 있다면 사용자에게 특정 버전을 전송하는 방법 채널 라우팅과 스테이지드 롤아웃을 계획하고자 한다면 Channels Channels Channels Channels Channels Channels 채널 라우팅과 스테이지드 롤아웃 구현 세부 사항은 Channels에서 확인할 수 있습니다. Beta Testing Solution Beta 테스트 솔루션의 제품 워크플로우에 대해 버전 목표 솔루션 버전 목표 솔루션의 제품 워크플로우에 대해