소개
Capgo의 업데이트 시스템을 즐기기 시작하면, 나처럼 앱을 개발하는 사람들은 “더 많은 것을 원할까?”라는 생각을 하게 됩니다.
나는 그 생각을 하게 되었습니다. 하지만 Capgo의 제작자이기 때문에, 내 앱의 업데이트 시스템을 살펴볼 수 있었습니다.
__CAPGO_KEEP_0__는 오픈 소스이기 때문에, 당신도 그 권한을 가집니다 :)
Capacitor 앱 배포 프로세스의 다음 문제는 팀원들이 업데이트 테스트를 하도록 만드는 것입니다.
테스트 플라이트의 문제는 간단합니다. 팀원들을 초대하고 그들에게 어떻게 업데이트 받을 수 있는지 알려주는 것은 시간이 많이 걸립니다!
애플로 보내면 매번 랜덤한 리뷰 프로세스에 의해 5분에서 5시간까지 걸릴 수 있습니다.
이것 때문에 여러 번 발표가 지연되었습니다.
구글에서는 thậm chí còn tồi tệ hơn, 내 삶의 큰 bí ẩn, 생산 버전을 릴리스하는 데는 2시간 미만이 걸리지만, 근처 베타 버전을 릴리스하는 데는 1-2일이 걸립니다.
해결책
이 문제를 해결하기 위해, 나는 Capgo에서 채널 시스템을 만들었습니다.
npx @capgo/cli@latest bundle upload -c production 모든 사용자에게 업데이트를 적용할 것입니다 (제품 채널이 기본값으로 설정되어 있다면).
만약에 npx @capgo/cli@latest bundle upload -c development 그렇다면 버전은 다른 채널로 이동하게 되는데, 이것은 __CAPGO_KEEP_0__ 액션에서 자동화할 수 있습니다. GitHub action.
Super 자동화된 방법
이것은 채널 설정을 위한 백엔드가 필요하지 않다면, 이것은 빠르게 구현할 수 있습니다.
해결책
그것을 사용하려면, 하나의 채널을 자체로 설정하도록 허용하는 것만 하면 됩니다.

그리고 Ionic 앱의 code에 이 것을 추가하세요. 사용자에게 “베타 등록”과 같은 버튼을 클릭한 후에 이 것을 사용하세요. 최적의 경험을 위해.
import { CapacitorUpdater } from '@capgo/capacitor-updater'
const deviceId = await CapacitorUpdater.setChannel({ channel: 'beta' })
수동 방법
내부 팀에 유용할 수 있습니다. 이 방법은 빠르게 구현할 수 있습니다. code을 사용하여 사용자가 앱에서 디바이스 ID를 복사하고, 그 디바이스 ID를 보내도록 허용하세요. 사용자가 디바이스 ID를 보내도록 허용하면, 이 code을 사용하여 디바이스 ID를 얻을 수 있습니다.
import { CapacitorUpdater } from '@capgo/capacitor-updater'
const deviceId = await CapacitorUpdater.getDeviceId()
앱에 버튼을 숨기거나, 특정 역할을 가진 사용자에게만 버튼을 표시하세요. 예를 들어. admin 웹 앱 또는 네이티브 앱 __CAPGO_KEEP_0__으로 이동하세요. 앱 관리자로 로그인한 후, 앱을 선택하고 디바이스 목록을 클릭하세요.
Capgo에서 디바이스 ID를 입력하고, 찾은 디바이스 ID를 클릭한 후 채널 링크를 클릭하세요.
__CAPGO_KEEP_0__에서 디바이스 ID를 입력하고, 찾은 디바이스 ID를 클릭한 후 채널 링크를 클릭하세요. development__CAPGO_KEEP_0__에서 디바이스 ID를 입력하고, 찾은 디바이스 ID를 클릭한 후 채널 링크를 클릭하세요.
__CAPGO_KEEP_0__에서 디바이스 ID를 입력하고, 찾은 디바이스 ID를 클릭한 후 채널 링크를 클릭하세요.
__CAPGO_KEEP_0__에서 디바이스 ID를 입력하고, 찾은 디바이스 ID를 클릭한 후 채널 링크를 클릭하세요.
이 기능은 베타 테스터에게 유용할 수 있습니다. 이 기능을 구현하는 데 더 오랜 시간이 걸립니다.
이 방법은 수동 방법과 동일합니다. 장치 ID를 가져야 합니다.
import { CapacitorUpdater } from '@capgo/capacitor-updater'
const deviceId = await CapacitorUpdater.getDeviceId()
이번에는 자동으로 백엔드에 장치 ID를 보내야 합니다. 방법은 여러분이 결정하셔야 합니다.
이 장치 ID를 데이터베이스에 저장하는 것을 추천합니다. 나중에 더 편리하게 사용할 수 있습니다.
그 후에 백엔드에서 Capgo 백엔드도 장치 ID를 보내야 합니다. 아래 두 가지 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 메소드를 사용하여 장치 ID를 요청 본체에 보내고, DELETE 메소드를 사용하여 삭제합니다.
이 기능을 설정한 후, 앱에 옵트인 버튼을 추가하고, 웹 앱에서 옵트인 여부를 확인해 보세요.
장치 ID를 보내고, 옵트인 여부를 확인할 수 있습니다. null 옵트인 여부를 삭제하려면
프로그램적으로 장치에 설정된 옵트인 여부를 확인하려면, URL에 GET 요청을 보내면 됩니다.
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())
__CAPGO_KEEP_0__을 계속 진행하세요. 한 명의 사용자 또는 그룹에게 특정 업데이트 보내기 방법
__CAPGO_KEEP_0__을 사용 중이라면 한 명의 사용자 또는 그룹에게 특정 업데이트 보내기 방법 __CAPGO_KEEP_0__을 계획 채널 라우팅 및 스테이지드 롤아웃과 연결하세요. 채널 채널에 대한 구현 세부 정보를 참조하세요. 채널 채널에 대한 구현 세부 정보를 참조하세요. 채널 채널에 대한 구현 세부 정보를 참조하세요. 베타 테스트 솔루션 베타 테스트 솔루션의 제품 워크플로에 대한 자세한 내용을 참조하세요. 버전 목표 설정 솔루션 버전 목표 설정 솔루션의 제품 워크플로에 대해.