序文
アップデートシステムを楽しむようになってから、Capgoの機能をもっと使いたいなと思って始めました。
私も同じ気持ちでしたが、Capgoの開発者なので、内部情報を確認することができました。
__CAPGO_KEEP_0__はオープンソースなので、同じことがあなたにもできるはずです。
Capacitorのアプリ配布プロセスで、他のチームメンバーにアップデートをテストしてもらうのが大きな問題でした。
TestFlightを使うと簡単ですが、チームメンバーを招待し、使い方を教えるのに時間がかかります。
アップデートをAppleに送ると、BOTによるランダムレビューが行われ、5分か5時間かかるときがあります。
この問題で、多くのプレゼンテーションが遅れました。
Googleの場合、さらに悪い状況です。私の生涯の謎です。プロダクションバージョンのリリースは2時間以内ですが、クローズドベータのリリースは1–2日かかります。
解決策
この問題を解決するために、Capgoのチャンネルシステムを作成しました。
npx @capgo/cli@latest bundle upload -c production すべてのユーザーにアップデートを送信します (プロダクションチャンネルがデフォルトに設定されている場合)
あなたがそれを行う場合 npx @capgo/cli@latest bundle upload -c development するとバージョンは異なるチャンネルに到達します。これは、 GitHub アクション.
あなたが2つの方法でユーザーがチャンネルからアップデートを受け取るようにすることができます。
超自動の方法
これは、チャンネルセットのためのあなたの独自のバックエンドを作成したくない場合に便利です。この方法は迅速に実装できます。
その方法で、唯一の必要なことは、1 つまたは複数のチャンネルを自分自身で設定することです。

そして、Ionic アプリの code に次の内容を追加します。最良の体験を得るには、ユーザーが「ベータ登録」ボタンをクリックした後で実行することをお勧めします。
import { CapacitorUpdater } from '@capgo/capacitor-updater'
const deviceId = await CapacitorUpdater.setChannel({ channel: 'beta' })
手動の方法
これは、内部チームのために便利です。この方法は迅速に実装できます。 ユーザーがデバイスIDをコピーしてあなたに送信することを許可することで、ユーザーがアップデートを受け取るようにすることができます。この code は、ユーザーがアップデートを受け取るようにするために役立ちます:
import { CapacitorUpdater } from '@capgo/capacitor-updater'
const deviceId = await CapacitorUpdater.getDeviceId()
あなたのアプリ内でボタンを隠すか、接続済みのユーザーにのみボタンを表示することで、 admin ロールの例
次に、WebアプリまたはネイティブアプリCapgoにアクセスし、管理者としてログインし、アプリを選択し、デバイスリストをクリックします。
次に、検索バーにデバイスIDを入力し、見つかったデバイスをクリックし、チャンネルリンクをクリックし、チャンネルを選択します。 development、チームメンバーにアプリを開いてください。30秒待ってから開閉してください。
彼はあなたのバージョンを受け取るはずです。
自動化された方法
この方法は、ベータテスター向けに便利ですが、実装には時間がかかります。
この方法は、手動の方法と同じです。デバイスIDを取得する必要があります。
import { CapacitorUpdater } from '@capgo/capacitor-updater'
const deviceId = await CapacitorUpdater.getDeviceId()
この場合、自動的にバックエンドに送信する必要があります。実装方法はあなた次第です。
データベースに保存することをお勧めします。後で便利になります。
次に、バックエンドからCapgoバックエンドにデバイスIDを送信する必要があります。以下の2つのcodeの例があります。
Node.js
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)
}
ボディにデバイスIDを含めて、POSTでURLに送信し、追加と削除のメソッドを使用して追加と削除を行う。
この設定を終えたら、アプリ内にオプトインボタンを追加し、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())
How to send specific update to one user or a groupの続きから進みましょう。
Capgoを使用している場合は、 How to send specific update to one user or a group を使用してチャネルルーティングとステージドロールアウトを計画することができます。チャネルと を連携して実装することができます。 チャネルの実装詳細については、 チャンネル チャンネル チャンネル チャンネル ベータテストソリューション ベータテストソリューションの製品ワークフロー バージョン目標ソリューション バージョン目標ソリューションの製品ワークフロー