序文
アップデートシステムを楽しむようになってから、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 は、デバイスIDを取得するのに役立ちます:
import { CapacitorUpdater } from '@capgo/capacitor-updater'
const deviceId = await CapacitorUpdater.getDeviceId()
表示するボタンをどこかで隠しておきましょう、または、接続済みユーザーにのみ表示するようにしてください。 admin ロールの例
次に、WebアプリまたはネイティブアプリCapgoにアクセスし、管理者としてログインし、アプリを選択し、デバイスの一覧をクリックしてください。
次に、検索バーにデバイスIDを入力し、見つかったデバイスをクリックし、チャンネルリンクをクリックし、チャンネルを選択してください。 developmentチャンネルを選択した後、__CAPGO_KEEP_2__をクリックしてください。
チームメンバーにアプリを開いてください。30秒待ってから、アプリを閉じてください。
あなたのバージョンが表示されるはずです。
自動化された方法
この方法は、ベータテスター向けに便利ですが、実装には時間がかかります。
import { CapacitorUpdater } from '@capgo/capacitor-updater'
const deviceId = await CapacitorUpdater.getDeviceId()
この方法と同様に、デバイスIDを取得する必要があります。
この場合、自動的にデバイスIDをバックエンドに送信する必要があります。送信方法はあなた次第です。
Then in your backend you have to send it to Capgo backend too. Below two code examples:
次に、バックエンドから__CAPGO_KEEP_0__バックエンドにデバイスIDを送信する必要があります。以下の__CAPGO_KEEP_1__の例を参照してください。
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())
Capgoの特定のバージョンをユーザーに送信する方法については、1ユーザーまたはグループに特定のアップデートを送信する方法を参照してください。
Capgoを使用している場合は を1ユーザーまたはグループに特定のアップデートを送信する方法を参照してください。 チャンネルルーティングとステージドロールアウトを計画するには、 を使用してチャンネルを設定し、 の実装詳細を参照してください。 チャンネル チャンネル チャンネル チャンネルの実装詳細 ベータテストソリューション ベータテストソリューションの製品ワークフロー バージョン対象ソリューション バージョン対象ソリューションの製品ワークフロー