序文
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の作成者である私はその可能性を実現することができました。
すべてがオープンソースであるため、あなたもその力を手に入れることができます。
The next pain I got in the Capacitor app distribution process is to make other teammates test the updates!
TestFlightでは、問題は簡単です。チームに人を呼び、アップデートを取得する方法を理解させるのに時間がかかります。
そして、Appleに送るたびに、BOTによるランダムレビュープロセスがあります。5分か5時間かかってもわかりません。
これにより、多くの場合、プレゼンテーションは遅延します。
Googleの場合、さらに悪化します。私の生涯の謎は、プロダクションバージョンのリリースは2時間以下で、クローズバータのリリースは1-2日かかるということです。
Solution
この問題を解決するために、Capgoでチャンネルシステムを実装しました。
npx @capgo/cli@latest bundle upload -c production すべてのユーザーにアップデートを適用します (プロダクションチャンネルがデフォルトに設定されている場合)
あなたが npx @capgo/cli@latest bundle upload -c development すると、バージョンは異なるチャンネルに到達します。このことが自動化できます。 GitHubアクション.
そして、ユーザーがチャンネルからアップデートを取得する方法は2つあります
自動化された方法
この機能は、チャンネルセット用に独自のバックエンドを作成しない場合に便利です。この実装は速いです。
その場合、チャンネルを 1 つだけ自律化する必要があります。

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_KEEP_0__にアクセスし、アプリ管理者としてログインし、アプリを選択し、デバイスの一覧をクリックします。
Then Go to the Web app or native app Capgo, connect as app admin, select your app, click on the device list.
チームメンバーにアプリを開いて 30 秒待って閉じるように指示します。 developmentチームメンバーにアプリを開いて 30 秒待って閉じるように指示します。
彼はあなたのバージョンを取得するようにするべきです。
自動的な方法
この方法は、ベータテスターに便利ですが、実装するには時間がかかります。
手動の方法と同じですが、デバイスIDを取得する必要があります
import { CapacitorUpdater } from '@capgo/capacitor-updater'
const deviceId = await CapacitorUpdater.getDeviceId()
しかし今回は自動的にバックエンドに送る必要があります。方法はあなたに任せます。
データベースに保存することをお勧めします。後で役に立つでしょう。
あなたのバックエンドでは、Capgo バックエンドにも送る必要があります。以下の2つの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で送信し、bodyにデバイスIDを含めて、追加と削除の両方のメソッドを使用してください。
設定が完了したら、ボタンを追加してチャンネルに参加するようにアプリに求めることができます。Webアプリでチェックしてみてください。
デバイスIDを送信することもできます。 null overrideを削除する
デバイスに設定されているoverrideを確認する必要がある場合、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())