ブランドのバリエーションはすぐに増える
顧客はそれぞれ、ロゴ、テーマ、機能セット、コンテンツ、ローンチ日を独自に求めます。フォークを分けると、その要望はリリースのたびにメンテナンス負担になります。
ホワイトラベル・マルチテナントアプリ
テナント、ブランド、拠点ごとに専用の Capgo チャネルを用意。他のテナントに影響を与えず、特定のテナントのWebレイヤーだけを更新できます。さらに Capgo Build でブランド別のネイティブシェルを構築できます。
14日間無制限の無料トライアル。クレジットカード不要 14日間の返金保証。いつでも解約可能。
シェル
Capacitor アプリが
テナント
チャンネル
ネイティブ
Capgo のビルド
課題
顧客はそれぞれ、ロゴ、テーマ、機能セット、コンテンツ、ローンチ日を独自に求めます。フォークを分けると、その要望はリリースのたびにメンテナンス負担になります。
特定のテナントのメニューの誤字やonboardingの修正に、新しいバイナリやストア審査(通常24〜48時間、時にはそれ以上)を待つ必要はありません。
1回のグローバルアップデートで全ブランドが一度に壊れる可能性があります。ブランドごとにフォークを分けると、チーム全体の速度が落ちます。テナントごとのリリースレーンが必要です。
よくある構成
各法人顧客ごとに独自のロゴ、テーマ、onboarding コピー、機能セットを持ち、専用のチャンネルでアップデートを受け取ります。
各レストラン、クリニック、ジム、支店ごとに、新しいバイナリなしでローカルメニューやアセット、キャンペーン画面を Live Update として配信できます。
ホストアプリがワークスペースやミニアプリを一覧表示し、setChannel() で実行時に対応する Capgo チャンネルへデバイスを切り替えます。
ソリューション
ネイティブシェルは共通のまま。各テナントの Web レイヤーはそれぞれのチャンネルを通して配信されます。
テナント、フランチャイズ、ワークスペースごとにチャンネルを用意。1つのテナントにも全テナントにも配信でき、他のチャンネルに触れずに1つのチャンネルだけロールバックできます。
チャネルのドキュメントセルフアサインを有効にすると、アプリは setChannel() を呼び出してデバイスをテナントのチャンネルに割り当てます。Capgo はアップデートチェックのたびに引き続きチャンネルを検証します。
setChannel() リファレンステナントは異なるネイティブバージョンで稼働していることがよくあります。チャンネルごとにメジャーアップデートをブロックするか、最小ネイティブバージョンを設定することで、bundle を実行できるシェルにだけ届くようにできます。
バージョンターゲティングのドキュメント各 Android flavor や iOS scheme をクラウドでビルドしてストアにアップロードします。毎週変わるウェブレイヤーには Live Updates を使いましょう。
ビルドオプション仕組み
Capacitor のコードベースは1つ、テナントごとにチャンネルは1つ。コマンドと code は Capgo CLI と updater のドキュメントに記載されています。
各テナントには、独自の bundle と履歴を持つチャンネルが割り当てられます。アプリがデバイスをそのチャンネルへ移せるように、セルフアサインを許可します。
npx @capgo/cli@latest channel add acme com.example.app --self-assign
npx @capgo/cli@latest channel add globex com.example.app --self-assign チャネルのドキュメント テナントのテーマと設定で web レイヤーをビルドし、そのテナントのチャンネルにだけアップロードします。他のテナントは現在の bundle を維持します。
npx @capgo/cli@latest bundle upload --channel acme
npx @capgo/cli@latest bundle upload --channel globex ロールバックのドキュメント サインイン後、テナントのチャンネルを指定して setChannel() を呼び出します。選択内容はデバイスに保存され、次回のアップデートチェック時に有効になります。
import { CapacitorUpdater } from '@capgo/capacitor-updater'
await CapacitorUpdater.setChannel({
channel: tenant.channel,
triggerAutoUpdate: true,
}) setChannel() リファレンス テナントが独自のストア掲載情報、アイコン、権限を必要とする場合は、Capgo Build でその flavor や scheme をビルドします。自分の Mac は不要です。
npx @capgo/cli@latest build request com.acme.app --platform android --android-flavor acme
npx @capgo/cli@latest build request com.acme.app --platform ios --ios-scheme Acme ビルドオプション Capacitor で構築されたアプリ
地域のスポーツ、エンターテインメント、通信ブランドは、共通のアプリ基盤を使い回しながら、ブランドや国ごとにスケジュール、キャンペーン、サポート、市場に合わせたコンテンツを切り替えられます。
試合日程やローカルコンテンツの市場管理が求められる、地域スポーツメディアアプリ。
市場や番組枠によって表示されるコンテンツが変わるエンターテインメントガイド。
共通アカウントの仕組みを持ちながら、ローカルの製品・サポートコンテンツが必要なキャリアアプリ。
Webincode 開発者
「Device IDを特定のグループに追加して、そのグループにだけ変更をプッシュできるのは本当に助かります。」
CTO, プライベート
「セットアップは1日もかかりませんでした。チャンネルベースのロールアウトのおかげで、本番ユーザーに配信する前に自分のデバイスでテストできます。」
リードデベロッパー、drivolino GmbH
“Capgo Capacitor Updater pluginのおかげで、アップデートの配信方法が完全に変わりました。以前は何日もかかっていた作業が、今ではわずか数分で終わります。”
よくある質問
1つの Capgo 環境で多数のブランドを運用する前に、チームがよく聞く質問。
必要になるのは、各ブランドがストアで独自のApp IDを持っている場合だけです。複数のテナントを1つのストアアプリで提供するなら、テナントごとに1つのチャンネルを持つ1つの Capgo アプリになります。ブランド別のストアアプリは別々の Capgo アプリで、それぞれ独自のチャンネルを持ちます。
チャネルのドキュメントはい。テナントのチャンネルがセルフアサインを許可していれば、アプリから setChannel() を呼び出します。現在のプラグインバージョンでは、選択内容はデバイスに保存され、次回のアップデートチェック時に使用されます。
setChannel() リファレンスバージョンターゲティングを使用してください。チャンネルでメジャーアップデートをブロックするか、bundleに最小ネイティブバージョンを設定して、古いシェルでも実行できるbundleを維持します。
バージョンターゲティングのドキュメントはい。各チャンネルは独自のbundle履歴を保持しています。そのテナントのチャンネルを以前のbundleにロールバックしても、他のチャンネルはそのままです。
ロールバックのドキュメントアプリ名、アイコン、権限、ネイティブプラグイン、およびnative codeはバイナリに含まれます。Capgo Buildを使用すれば、各flavorやschemeをビルドしてApp Store ConnectとGoogle Playへアップロードできます。
Capgo Buildドキュメント14日間のトライアル期間中に、2つのテナントチャンネルを作成し、それぞれにbundleをアップロードして、setChannel()でテストデバイスをチャンネル間で切り替えてみてください。
1つの Capacitor codebaseから、テナントごとに Capgo live update チャンネルを運用。
Martinによる人的サポート
14日間無制限の無料トライアル。クレジットカード不要 14日間の返金保証。いつでも解約可能。
エンタープライズ向けのご相談は? チームに相談する