소개
업데이트 시스템을 즐기기 시작하면 Capgo와 같이 나의 앱을 즐기기 시작할 것입니다. "더 많은 것을 원한다면?"라는 생각이 들 것입니다.
나는도 같은 생각을 했지만, Capgo의 제작자이기 때문에 내 앱의 업데이트 시스템을 살펴볼 수 있었습니다.
모두가 오픈 소스이기 때문에, 당신도 이 권력을 가집니다 :)
Capacitor 앱 배포 프로세스의 다음 문제는 팀원들이 업데이트를 테스트하는 것입니다!
테스트 플라이트를 사용하면 이 문제가 간단합니다. 팀원들을 초대하고 업데이트를 받는 방법을 이해시키는 것은 시간이 걸립니다!
애플로 업데이트를 보내면, 봇이 랜덤하게 리뷰를 하는데, 5분도 5시간도 걸릴 수 있습니다. 그 시간이 언제인지 모릅니다.
이 문제로 인해 나의 발표가 여러 번 지연되었습니다.
구글에서는 thậm chí còn 더 나쁩니다. 내 삶의 큰謎사, 프로덕션 버전을 출시하는 데 2시간 미만이 걸리지만, 클로즈 베타 버전을 출시하는 데 1-2일이 걸립니다.
해결
이 문제를 해결하려면 Capgo에서 채널 시스템을 만들었습니다.
npx @capgo/cli@latest bundle upload -c production production 채널이 기본값으로 설정되어 있다면 모든 사용자에게 업데이트를 적용합니다.
만약에 npx @capgo/cli@latest bundle upload -c development 그렇다면 버전이 다른 채널로 이동하게 되는데, 이 과정을 자동화할 수 있습니다. GitHub 액션에서.
그런 다음 사용자들이 채널에서 업데이트를 받을 수 있는 두 가지 방법이 있습니다.
Super 자동화 방법
이 방법은 채널 설정을 위한 백엔드가 필요하지 않아 빠르게 구현할 수 있습니다.
그것을 사용하면, 사용자에게 업데이트를 받을 수 있도록 하기 위해 단지 하나의 채널을 자체 채널로 설정하도록 허용하면 됩니다.

그 다음, Ionic 앱의 code에서 이 코드를 추가하십시오. 사용자들이 버전을 받을 수 있도록 하기 위해, 버전을 받기 위해 클릭한 버튼과 함께 사용하십시오.
import { CapacitorUpdater } from '@capgo/capacitor-updater'
const deviceId = await CapacitorUpdater.setChannel({ channel: 'beta' })
수동 방법
이 기능은 내부 팀에 유용할 수 있습니다. 이 기능을 구현하는 데 시간이 많이 걸리지 않습니다. 사용자에게 기기 ID를 복사하고 수동으로 전송하도록 허용하여, code 이 기기 ID를 얻는 데 도움이 될 것입니다:
import { CapacitorUpdater } from '@capgo/capacitor-updater'
const deviceId = await CapacitorUpdater.getDeviceId()
앱 내에서 버튼을 숨기거나, 연결된 사용자에게만 버튼을 표시하도록 role을 설정하여, 예를 들어. admin 그런 다음 웹 앱 또는 네이티브 앱 __CAPGO_KEEP_0__ 에 접속하여 앱 관리자로 로그인하고 앱을 선택한 다음 기기 목록을 클릭합니다.
Then Go to the Web app or native app Capgo, connect as app admin, select your app, click on the device list.
, 팀원에게 앱을 다시 열어달라고 요청하고 30초 기다렸다가 앱을 닫고 열어보라고. development그럼 사용자는 최신 버전을 받을 것입니다.
자동화된 방법
이 기능은 베타 테스터에게 유용할 수 있습니다. 이 기능을 구현하는 데 시간이 더 걸립니다.
이 기능은 수동 방법과 동일합니다. 기기 ID를 얻어야 합니다.
이번에는 기기 ID를 자동으로 백엔드에 전송해야 합니다. 방법은 여러분이 결정하셔야 합니다.
import { CapacitorUpdater } from '@capgo/capacitor-updater'
const deviceId = await CapacitorUpdater.getDeviceId()
저는 단지 데이터베이스에 저장하는 것을 제안할 뿐입니다. 이는 나중에 여러분의 삶을 편리하게 할 것입니다.
I will just suggest you to store it in a database, that will facilitate your life later.
그런 다음 백엔드에서 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)
}
__CAPGO_KEEP_0__에 장치 ID만 본문에 포함하여 POST로 보내고, DELETE 메서드를 사용하여 삭제합니다.
이제 구성이 완료되었습니다. 앱에 옵트인 버튼을 추가하고, 웹 앱에서 설정이 적용되었는지 확인해 보세요.
또한 __CAPGO_KEEP_2__을 사용하여 __CAPGO_KEEP_3__을 제거할 수 있습니다. null __CAPGO_KEEP_2__을 제거하려면
프로그램적으로 장치에 설정된 오버라이드 확인하려면 URL에 접속하여 __CAPGO_KEEP_4__을 확인할 수 있습니다.
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_5__을 계속 진행하려면 "How to send specific update to one user or a group"을 참조하세요.
__CAPGO_KEEP_6__을 사용하는 경우 __CAPGO_KEEP_7__을 사용하여 특정 사용자 또는 그룹에게 업데이트를 보내려면 "How to send specific update to one user or a group"을 참조하세요. __CAPGO_KEEP_8__을 연결하세요. 채널 채널 채널 채널 베타 테스트 솔루션 채널 버전 목표 솔루션 채널 기사 기여 마틴 도나디유