序文
アップデートシステムを楽しむようになってから、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つあります。
超自動の方法
あなたがチャンネルを設定するためのバックエンドを作成したくない場合、この方法は実装が速いです。
その場合、チャンネルを設定するためのバックエンドを作成する必要はありません。

code
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()
__CAPGO_KEEP_0__ admin ロールの例
Then Go to the Web app or native app Capgo, connect as app admin, select your app, click on the device list.
検索バーにデバイス ID を入力し、検索結果からデバイスを選択し、チャンネルリンクをクリックしてください。 developmentテスト用のバージョンを取得するには、チームメンバーにアプリを開いて 30 秒間待って、再度アプリを開いてください。
自動的にバージョンを取得することができます。
この方法は、ベータ テスター向けに便利ですが、実装には時間がかかります。
デバイス ID を取得する必要があります。
この場合、自動的にデバイス ID をバックエンドに送信する必要があります。送信方法はあなた次第です。
import { CapacitorUpdater } from '@capgo/capacitor-updater'
const deviceId = await CapacitorUpdater.getDeviceId()
デバイス ID をデータベースに保存することをお勧めします。後で簡単に検索できます。
バックエンドから、__CAPGO_KEEP_0__ バックエンドにデバイス ID を送信する必要があります。以下の 2 つの例があります。
Then in your backend you have to send it to Capgo backend too. Below two code examples:
__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())
How to send specific update to one user or a groupの続きから進みましょう。
Capacitorを使用している場合は、 How to send specific update to one user or a group を使用してチャンネルルーティングとステージドロールアウトを計画することができます。チャンネルと接続してください。 チャンネル の実装詳細については、チャンネルを参照してください。 チャンネル チャンネル チャンネル Betaテストソリューション Betaテストソリューション バージョン対象ソリューション バージョン対象ソリューション 著者