序文
When you start to enjoy the update system of Capgo, like me for my apps, you will start to get the feeling “What if I want more?”
私もその気持ちを感じていましたが、Capgoのメーカーとして、実際に確認することができました。
すべてがオープンソースなので、あなたもその力を手に入れることができます。
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 すると、バージョンは異なるチャンネルに到達します。このプロセスは__CAPGO_KEEP_0__アクションで自動化できます。 GitHub アクション.
超自動の方法
__CAPGO_KEEP_0__はCapacitorのLive Update機能です。
この機能は、チャンネルセット用のバックエンドを作成しなくても便利です。この実装は速いです。
その場合、チャンネルを 1 つだけ許可する必要があります。

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