본문으로 바로 가기
대안

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

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

마틴 도나디유

마틴 도나디유

콘텐츠 마케터

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

인용문

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

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

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

The next pain I got in the Capacitor app distribution process is to make other teammates test the updates!

TestFlight을 사용하면 문제가 간단합니다. 팀원들을 끌어들이고 그들에게 어떻게 얻을 수 있는지 이해시키는 데 시간이 걸립니다.

Apple에 제출할 때마다 봇이 랜덤으로 리뷰 프로세스를 진행하고, 5분이 걸리거나 5시간이 걸릴 수 있습니다. 그 누구도 예측할 수 없습니다.

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

Google의 경우 thậm chí còn tồi tệ hơn, cuộc sống của tôi là bí ẩn, việc phát hành phiên bản sản xuất chỉ mất hơn 2 giờ, nhưng việc phát hành phiên bản beta gần gũi có thể mất 1-2 ngày.

Solution

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

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

그렇다면 버전은 다른 채널로 이동할 수 있습니다. 이 작업은 __CAPGO_KEEP_0__ 액션에서 자동화할 수 있습니다. npx @capgo/cli@latest bundle upload -c development 그런 다음 사용자들이 채널에서 업데이트를 받는 방법은 2가지가 있습니다. GitHub에서 2 가지 방법이 있습니다..

__CAPGO_KEEP_0__에서 2 가지 방법이 있습니다.

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를 클릭하고 채널 링크를 클릭하세요.

그것은 당신의 버전을 가져야합니다.

자동 방식

이것은 베타 테스터에게 유용할 수 있으며, 구현하는 데 더 오랜 시간이 걸립니다.

수동 방식과 동일하게, 장치 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)
}

배포된 URL에 POST를 사용하여 추가하고 삭제 메소드를 삭제하기 위해 장치 ID만 본문에 보내세요.

이것이 구성되면, 앱에 옵트인 버튼을 추가하고 웹 앱에서 그것이 설정되었는지 확인하세요.

또한 전송할 수 있습니다 null __CAPGO_KEEP_0__

프로그램적으로 장치에 설정된 오버라이드가 무엇인지 확인해야 하는 경우, 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 앱

웹层 버그가 활성화된 경우 Capgo을 통해修정을 배포하는 대신 앱 스토어 승인까지 며칠 기다리지 말고.

사용자는 배경에서 업데이트를 받으면서 네이티브 변경 사항은 일반적인 검토 경로에 남아있다.

시작하기

Capgo gives you the best insights you need to create a truly professional mobile app.