본문으로 건너뛰기
대안

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

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

기사 기여

마틴 도나디유

작가

발레리아

리뷰어

조던

편집자

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

개론

업데이트 시스템을 즐기기 시작하면 Capgo의 Capgo과 같은 앱을 개발하는 경우, “더 많은 것을 원한다면?”이라는 생각이 들 것입니다.

저도 그 생각을 했지만, Capgo의 제작자로서 Capgo를 살펴볼 수 있었습니다.

모두가 오픈 소스이기 때문에, 당신도 이 권한을 가집니다 :)

다음으로 Capacitor 앱 배포 프로세스의 문제는 팀원들이 업데이트를 테스트하는 것입니다.

테스트 플라이트를 사용하는 경우, 이 문제는 간단합니다. 팀원들을 초대하고 업데이트를 받는 방법을 이해시키는 데 시간이 걸립니다.

애플에 업데이트를 보내면, 봇에 의해 무작위로 검토되며, 5분에서 5시간까지 걸릴 수 있습니다. 저는 이로 인해 여러 번 발표를 지연시켰습니다.

구글의 경우 thậm chí 더 나쁩니다. 내 삶의 큰 미스터리, 프로덕션 버전을 출시하는 데 2시간 미만이 걸리지만, 근처 베타 버전을 출시하는 데 1-2일이 걸립니다.

해결책

이 문제를 해결하기 위해, 저는 __CAPGO_KEEP_0__의 채널 시스템을 만들었습니다.

To fix this, I crated the Channel system in Capgo.

npx @capgo/cli@latest bundle upload -c production __CAPGO_KEEP_0__의 채널 시스템을 사용하면, 업데이트를 보내고자 하는 버전을 선택할 수 있습니다.

만약 당신이 npx @capgo/cli@latest bundle upload -c development 그렇다면 버전이 다른 채널로 이동하게 되는데, 이것은 GitHub.

에서 자동화할 수 있습니다.

그런 다음 사용자들이 채널에서 업데이트를 받을 수 있도록 2가지 방법이 있습니다.

슈퍼 자동화 방법

이것은 채널 세트를 위한 백엔드 생성을 원하지 않을 때 유용합니다. 이 방법은 빠르게 구현할 수 있습니다.

Allow set self in Capgo

code

import { CapacitorUpdater } from '@capgo/capacitor-updater'

const deviceId = await CapacitorUpdater.setChannel({ channel: 'beta' })

그리고 그 다음에 이 것을 Ionic 앱의 __CAPGO_KEEP_0__에 추가하세요. 최상의 경험을 위해, 사용자가 버타 등록 버튼을 클릭한 후에 사용하세요.

This can be useful for your internal team, this is fast to implement. Allow users to copy their deviceID from your app and send it to you manually, this code will help you to get it:

import { CapacitorUpdater } from '@capgo/capacitor-updater'

const deviceId = await CapacitorUpdater.getDeviceId()

이것은 내부 팀에 유용할 수 있습니다. 이 방법은 빠르게 구현할 수 있습니다. 사용자들이 자신의 기기 ID를 복사하여 당신에게 보내도록 허용하세요. 이 __CAPGO_KEEP_0__은 당신에게 도움이 될 것입니다: admin 역할, 예를 들어.

그 다음 웹 앱 또는 네이티브 앱 Capgo으로 이동하여 앱 관리자로 로그인한 후 앱을 선택하고 기기 목록에서 클릭합니다.

그 다음 검색 바에 기기 ID를 입력하고 찾은 기기를 클릭한 후 채널 링크를 클릭하여 채널을 선택합니다. development, 팀원에게 앱을 다시 열어달라고 요청하고 30초 후에 앱을 닫고 다시 열어보세요.

그녀는 당신의 버전을 받을 것입니다.

자동화된 방법

이 방법은 베타 테스터에게 유용할 수 있습니다. 그러나 구현하는 데 시간이 더 걸립니다.

이 방법은 수동 방법과 동일합니다. 기기 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)
}

POST 메서드를 사용하여 URL에 device_id를 보낼 뿐만 아니라 DELETE 메서드를 사용하여 삭제할 수 있습니다.

이제 설정이 완료되었습니다. 앱에 버튼을 추가하여 채널에 가입할 수 있는 옵션을 제공하고, 웹 앱에서 설정이 적용되었는지 확인하세요.

또한 null override를 제거하기 위해

기기에 설정된 override를 확인하기 위해 URL에 GET 요청을 보내면 override 정보를 확인할 수 있습니다.

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으로 계속 진행하세요.

Capgo를 사용하여 특정 사용자 또는 그룹에게 업데이트를 전송하는 방법에 대한 지침을 참조하세요. 채널 라우팅과 스테이지드 롤아웃을 계획하고자 하는 경우 Channels 채널 라우팅과 스테이지드 롤아웃에 대한 구현 세부 사항을 참조하세요. 채널 채널 채널 베타 테스트 솔루션 채널 버전 목표 솔루션 기사 기여 마틴 도나디우

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

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

마틴의 인간 지원

시작하기

최신 블로그

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