본문으로 바로가기
대안

한 명의 사용자 또는 그룹에게 특정 업데이트를 보내는 방법

사용자에게 베타 버전을 시도할 수 있도록 허용하려면 TestFlight 또는 Google Beta 프로세스가 필요하지 않습니다. 단지 Ionic 앱에 버튼을 추가하면 끝입니다!

마틴 도나디유

마틴 도나디유

콘텐츠 마케터

한 명의 사용자 또는 그룹에게 특정 업데이트를 보내는 방법

개정판

업데이트 시스템을 즐기기 시작하면 Capgo와 같은 앱을 만들 때 “더 많은 것을 원한다면?”하는 생각이 들게 됩니다.

저도 그 생각을 했지만 Capgo의 제작자이기 때문에 더 많은 것을 할 수 있었습니다.

모든 것이 오픈 소스이기 때문에 당신도 그 능력을 가지고 있습니다 :)

다음으로 Capacitor 앱 배포 프로세스에서 다른 팀원들이 업데이트를 테스트하는 것을 관리하는 것이 가장 큰 고통입니다.

TestFlight의 경우 이슈가 간단합니다. 팀원들을 끌어들이고 업데이트를 받는 방법을 이해시키는 데 시간이 걸립니다.

애플에 업데이트를 제출할 때마다 봇이 랜덤으로 리뷰 프로세스를 진행하고 5분에서 5시간까지 걸릴 수 있습니다. 언제 어떤 리뷰를 받을지 알 수 없습니다.

이로 인해 여러 번 발표가 지연되었습니다.

구글의 경우 thậm chí còn tồi tệ hơn, 내 삶의 큰 bí ẩn, sản xuất 버전을 릴리즈하는 데는 2시간 미만이 걸리지만, 근접 베타 버전을 릴리즈하는 데는 1-2일이 걸립니다.

해결책

이 문제를 해결하기 위해, 나는 Capgo에서 채널 시스템을 만들었습니다.

npx @capgo/cli@latest bundle upload -c production 모든 사용자에게 업데이트를 적용할 것입니다 (제품 채널이 기본값으로 설정되어 있다면)

그렇다면 버전은 다른 채널로 이동할 수 있습니다. 이 과정을 자동화하는 것은 __CAPGO_KEEP_0__ 액션에서 가능합니다. npx @capgo/cli@latest bundle upload -c development 이제 사용자가 채널에서 업데이트를 받는 방법이 2가지가 있습니다. GitHub action.

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

Super automatic Way

이 기능을 사용하면 채널 세트에 대한 백엔드를 직접 만들지 않아도 되며, 구현이 빠릅니다.

백엔드가 필요하지 않은 채널 세트를 위해 이 기능을 사용할 수 있습니다. 구현이 빠릅니다.

Capgo에서 하나의 채널을 자가 설정으로 허용하세요.

code에 이 코드를 추가하세요. 사용자에게 '베타 등록' 버튼을 클릭한 후 사용자에게 최적의 경험을 제공하기 위해 이 코드를 사용하세요.

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

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

Manual way

이 기능은 내부 팀에 유용하며, 구현이 빠릅니다. code은 사용자가 앱에서 디바이스 ID를 복사하고, 그 디바이스 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__

자동화된 방법

__CAPGO_KEEP_2__

__CAPGO_KEEP_3__

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

const deviceId = await CapacitorUpdater.getDeviceId()

__CAPGO_KEEP_4__

__CAPGO_KEEP_5__

Then in your backend you have to send it to Capgo backend too. Below two code examples:

__CAPGO_KEEP_7__
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_9__

__CAPGO_KEEP_10__

__CAPGO_KEEP_11__ 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())
Capacitor 앱에 대한 실시간 업데이트

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

시작하기

블로그에서 최신 소식

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