メインコンテンツにスキップ
代替

特定のユーザーまたはグループにアップデートを送信する方法

ユーザーにベータ版を試すことを許可する機能を追加することで、TestFlightやGoogleのベータプロセスを必要とせずに実現できます。

マーティン・ドナディエ

マーティン・ドナディエ

コンテンツマーケター

特定のユーザーまたはグループにアップデートを送信する方法

序文

あなたがCapgoのアップデートシステムを楽しむようになると、自分が作ったアプリで同じ感覚を味わうようになります。「もっと欲しいな」という気持ちが生まれるでしょう。

私も同じ気持ちでしたが、Capgoのメーカーだからこそ、内部を見てみました。

すべてがオープンソースなので、あなたもこの力を手に入れられます :)

Capacitorのアプリ配布プロセスで私が感じた次の痛みは、他のチームメンバーにアップデートをテストしてもらうことです。

TestFlightを使うと簡単ですが、チームに人を呼び、使い方を教えるのに時間がかかります。

Appleに送ると、BOTによるランダムレビューが5分か5時間かかると、毎回プレゼンテーションが遅れました…。

Googleの場合、生産版をリリースするのに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 __CAPGO_KEEP_0__ アクション GitHub action.

スーパー自動的な方法

あなたがすると、チャンネルを設定するためのバックエンドを作成する必要がなくなるため、実装が速くなります。

あなたがすると、チャンネルを設定するためのバックエンドを作成する必要がなくなるため、実装が速くなります。

あなたがすると、チャンネルを設定するためのバックエンドを作成する必要がなくなるため、実装が速くなります。

Allow set self in Capgo

And then add this in the code of your Ionic app, for best experience, use this after the user clicks on a button like “register for beta”

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

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

あなたがすると、内部チームのために使用することができます。この方法は実装が速いです。

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()

内部チームのために使用することができます。この方法は実装が速いです。 admin role, for example.

Then Go to the Web app or native app Capgo, connect as app admin, select your app, click on the device list.

Then put in the search bar the deviceID click on the one found and then click on the Channel link choose the development, ask your teammate to open the app again, wait 30 sec and open close.

He should get your version.

Automatic way

This can be useful for your beta testers, this is longer to implement.

Same as the manual way, you have to get the deviceID

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

const deviceId = await CapacitorUpdater.getDeviceId()

But this time you have to send it automatically to your backend, I let you decide how you do that.

I will just suggest you to store it in a database, that will facilitate your life later.

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

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)
}

ボディにdevice_idを含めてPOSTで送信し、URLにADDとDELETEメソッドを使用して追加と削除を行います。

この設定が完了したら、アプリ内にオプトインボタンを追加し、Webアプリで設定が有効かどうかを確認してください。

また、オーバーライドを削除することもできます。 null オーバーライドを削除するには

デバイス上に設定されているオーバーライドを確認するには、同じURLにGETリクエストを送信してください。

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())

1つのユーザーまたはグループに特定の更新を送信する方法については、次の記事を参照してください。

チャネルを使用している場合 1つのユーザーまたはグループに特定の更新を送信する方法については、次の記事を参照してください。 チャネルルーティングとステージドロールアウトを計画するには、 チャネル チャネルに関する実装詳細は、チャネルを参照してください。 チャンネル チャンネルの実装詳細について チャンネル チャンネルの実装詳細について ベータテスト ソリューション ベータテスト ソリューションの製品ワークフローについて バージョン ターゲット ソリューション バージョン ターゲット ソリューションの製品ワークフローについて

Capacitorアプリ向けのリアルタイムアップデート

ウェブ層のバグが生じた場合、App Storeの承認待ちの日数を待たずに、Capgoを通じて修正を配信することができます。ユーザーはバックグラウンドでアップデートを受け取り、ネイティブの変更は通常のレビューのパスを通じて残ります。

今すぐ始めましょう

ブログの最新記事

Capgoは、プロフェッショナルなモバイルアプリを作成するために必要な最良の洞察を提供します。