본문으로 건너뛰기
대안

특정 버전을 사용자 또는 그룹에게 보내는 방법

사용자가 테스트 플라이트나 구글 베타 프로세스 없이 베타 버전을 시도할 수 있도록 허용합니다. 단, 이오닉 앱에 버튼을 추가하면 끝입니다!

기사 기여

마틴 도나디유

작가

발레리아

리뷰어

조던

편집기

특정 버전을 한 명의 사용자 또는 그룹에게 전송하는 방법

소개

업데이트 시스템을 즐기기 시작하면 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 자동화 방법

이 방법은 채널 설정을 위한 백엔드가 필요하지 않아 빠르게 구현할 수 있습니다.

그것을 사용하면, 사용자에게 업데이트를 받을 수 있도록 하기 위해 단지 하나의 채널을 자체 채널로 설정하도록 허용하면 됩니다.

Capgo에서 자체 채널 설정을 허용하십시오.

그 다음, 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__을 연결하세요. 채널 채널 채널 채널 베타 테스트 솔루션 채널 버전 목표 솔루션 채널 기사 기여 마틴 도나디유

실시간 업데이트 된 Capacitor 앱

웹-layer 버그가 활성화된 경우, 앱 스토어 승인 대기 없이 Capgo를 통해 패치를 배포하고, 사용자는 배경에서 업데이트를 받으며 네이티브 변경 사항은 일반적인 검토 경로를 유지합니다.

마틴의 인간 지원

시작하기

최신 블로그

Capgo은 전문적인 모바일 앱을 만들기 위해 필요한 최고의洞察력을 제공합니다.