序文
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?”
I got the feeling too, but since I’m the maker of Capgo, I was able to take a look!
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日かかるということです。
解決策
この問題を解決するために、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' })
Ionicアプリの__CAPGO_KEEP_0__に追加し、ベータ登録のボタンをクリックした後、最適なエクスペリエンスを実現するために使用することをお勧めします。
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()
内部チーム向けに便利な方法で、実装が速い。
ユーザーがデバイスIDをコピーして、手動で送信することを許可する。
__CAPGO_KEEP_0__は、デバイスIDを取得するのに役立ちます。 admin アプリ内でボタンを隠す、またはロールに基づいて接続済みユーザーにのみボタンを表示する。
WebアプリまたはネイティブアプリCapgoにアクセスし、アプリ管理者としてログインし、アプリを選択し、デバイスリストをクリックします。
検索バーにデバイスIDを入力し、検索結果のデバイスをクリックし、チャンネルリンクをクリックし、チャンネルを選択します。 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)
}
POSTメソッドでURLにデバイス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())
__CAPGO_KEEP_0__から続けて、特定のユーザーまたはグループにアップデートを送信する方法について説明します。
Channelsを使用している場合 特定のユーザーまたはグループにアップデートを送信する方法について説明します。 Channelsのルーティングとステージドロールアウトを計画するには、Cloudflareに接続してください。 Channels Channelsの実装詳細については、 Channels Channelsの実装詳細については、 Channels Channelsの実装詳細については、 ベータテスト ソリューション __CAPGO_KEEP_0__ バージョン ターゲット ソリューション __CAPGO_KEEP_0__