본문 바로가기
대안 비교

특정 사용자 또는 그룹에 업데이트를 전송하는 방법

TestFlight나 Google 베타 프로세스 없이 사용자가 베타 버전을 사용해 볼 수 있습니다. Ionic 앱에 버튼 하나만 추가하면 바로 참여할 수 있습니다!

특정 사용자나 그룹에 특정 업데이트를 보내는 방법 Capgo 블로그 일러스트

서문

저처럼 앱에 Capgo 업데이트 시스템을 활용하기 시작하면, “더 원하면 어떡하지?”라는 생각이 들기 시작할 겁니다.

저도 똑같은 생각을 했지만, Capgo의 제작자라 직접 확인해 볼 수 있었죠!

모두 오픈 소스이니, 여러분도 이걸 직접 할 수 있습니다 :)

Capacitor 앱 배포 과정에서 마주한 다음 문제는 바로 팀원들에게 업데이트를 테스트하게 만드는 것이었습니다!

TestFlight의 경우 문제는 간단합니다. 팀원을 초대하고 받는 방법을 이해시키는 데 시간이 너무 많이 걸리죠!

게다가 Apple에 제출할 때마다 봇의 검토 과정을 거쳐야 하는데, 이게 5분 만에 끝날지 5시간이 걸릴지 알 수 없죠.

이 때문에 발표 일정이 밀린 적도 한두 번이 아닙니다...

Google은 더 심각합니다. 제 인생의 큰 미스터리인데, 프로덕션 버전 배포는 2시간도 안 걸리는데 클로즈드 베타 배포는 1~2일이나 걸리죠.

솔루션

이 문제를 해결하기 위해 Capgo에 Channel 시스템을 만들었습니다.

npx @capgo/cli@latest bundle upload -c production 모든 사용자에게 업데이트됩니다 (production 채널이 기본값인 경우)

그렇게 하면 npx @capgo/cli@latest bundle upload -c development 해당 버전은 다른 채널로 전달됩니다. 이는 ~에서 자동화할 수 있습니다. GitHub 액션.

사용자가 채널을 통해 업데이트를 받는 방법은 두 가지가 있습니다.

완전 자동 방식

채널 설정을 위한 백엔드를 직접 구축하고 싶지 않을 때 유용하며, 구현이 매우 빠릅니다.

이 방식을 사용하려면 채널 중 하나에서 self set을 허용하기만 하면 됩니다.

Capgo에서 set self 허용하기

그다음 Ionic 앱의 code에 이를 추가하세요. 최상의 경험을 위해 사용자가 “베타 등록” 같은 버튼을 클릭한 뒤 사용하는 것이 좋습니다.

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

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

수동 방식

내부 팀에 유용하며 구현이 빠릅니다. 사용자가 앱에서 deviceID를 복사해 직접 보내도록 하세요. 다음 code를 사용하면 deviceID를 받는 데 도움이 됩니다:

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

const deviceId = await CapacitorUpdater.getDeviceId()

앱 어딘가에 버튼을 숨기거나, 예를 들어 특정 admin role이 있는 접속 사용자에게만 버튼을 보여주세요.

그다음 웹 앱 또는 네이티브 앱 Capgo로 이동해 앱 관리자로 로그인한 뒤, 앱을 선택하고 기기 목록을 클릭하세요.

그다음 검색창에 deviceID를 입력해 검색된 기기를 클릭한 뒤, Channel 링크를 클릭하고 development채널을 선택한 뒤, 팀원에게 앱을 다시 열어달라고 요청하고 30초 기다렸다가 앱을 껐다 켜게 하세요.

그 사용자는 당신의 버전을 받게 됩니다.

자동 방식

베타 테스터에게 유용하지만, 구현하는 데 시간이 더 걸립니다.

수동 방식과 마찬가지로 deviceID를 가져와야 합니다.

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의 body에 device_id를 보내 추가하고, DELETE 메서드로 삭제하면 됩니다.

설정이 완료되면 앱에 채널 참여 버튼을 추가해 보고, 웹 앱에서 정상적으로 설정되었는지 확인하세요.

다음과 같이 보낼 수도 있습니다 null override를 제거하려면

기기에 설정된 override를 프로그래밍 방식으로 확인해야 하는 경우, 동일한 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의 구현 세부 사항은 다음을 참고하세요: Beta Testing 솔루션 Beta Testing 솔루션의 제품 워크플로우를 위한, 그리고 버전 타겟팅 솔루션 Version Targeting Solution의 제품 워크플로우용.

Capacitor 앱용 Live updates

웹 레이어 버그가 라이브 상태라면, 앱 스토어 승인을 며칠씩 기다리지 말고 Capgo를 통해 수정 사항을 배포하세요. 네이티브 변경 사항은 정상 리뷰 절차를 그대로 따르는 반면, 사용자는 백그라운드에서 업데이트를 받습니다.

블로그 최신 글

Capgo는 정말 프로페셔널한 모바일 앱을 만드는 데 필요한 최고의 인사이트를 제공합니다.