Saltare al contenuto principale

Sviluppa app multitenanti e white-label

Condividi un codice per tutti gli affitti

Dare a ogni affittuario, marchio o ubicazione il proprio canale Capgo. Aggiornare la layer web di un affittuario senza toccare gli altri e costruire gusci nativi con Capgo Build.

1 codice di base
App condivisa Capacitor per ogni tenant
1 canale per tenant
Proprio bundle, storia e rollback
Costruzioni Cloud
Flussi Android e schemi iOS

Shell

App Capacitor

Tennenti

Canali

Nativo

Capgo Costruzione

Il Problema

Il problema dei marchi bianchi si complica quando ogni cliente diventa una branca

Il marchio varianti moltiplicano rapidamente

Ogni cliente vuole il suo logo, tema, insieme di funzionalità, contenuto e data di lancio. Le separate fork trasformano quelle richieste in manutenzione che paghi per ogni rilascio.

Risorse dei clienti rallentano i fix dei tenant

Un errore di menu o una correzione di accesso per un tenant non dovrebbe attendere un nuovo binario e una revisione del negozio, spesso 24-48 ore, a volte molto più a lungo.

Le rilasci globali sono troppo grossolani

Un aggiornamento globale può rompere ogni marchio una volta. Una fork per marchio rallenta l'intero team. Avete bisogno di una strada di rilascio per ogni tenant.

Configurazioni comuni

Cos'è un marchio bianco in un'app Capgo

Applicazione SaaS con marchio del cliente

Ecco come ogni cliente aziendale ottiene il proprio logo, tema, copia di onboarding e set di funzionalità, e riceve aggiornamenti sul proprio canale.

App di franchise o di località

Ogni ristorante, clinica, palestra o filiale riceve menu, risorse e schermate di campagna aggiornate in tempo reale, senza un nuovo file eseguibile.

Mercato di app mini

Un'app host elenca ambienti di lavoro o mini-app e sposta il dispositivo sul canale corrispondente Capgo in esecuzione con setChannel().

La Soluzione

Una shell di app unica, un canale di rilascio per tenant

La shell nativa rimane condivisa. Ogni layer web del tenant si muove attraverso il proprio canale.

Canale per tenant

Ecco come ogni tenant, franchise o spazio di lavoro ottiene un canale. Invia a un tenant o a tutti di loro, e torna indietro a un canale senza toccare gli altri.

Documentazione sui canali

Assegnazione automatica in tempo reale

With self-assignment on, the app calls setChannel() to put a device on its tenant's channel. Capgo still validates the channel on every update check.

Riferimento a setChannel()

Target di versione across shells

I tenant spesso eseguono versioni native diverse. Blocca gli aggiornamenti principali per canale, o stabilisci una versione nativa minima, in modo che un bundle raggiunga solo le conchiglie che possono eseguirlo.

Documentazione per il targeting di versione

Capgo Costruisci per conchiglie marchiate

Costruisci ogni flavor di Android o schema di iOS nel cloud e caricalo nei negozi. Utilizza gli aggiornamenti in tempo reale per il layer web che cambia ogni settimana.

Opzioni di costruzione

Come funziona

Come le squadre di white-label inviano con Capgo

Un unico codice Capacitor, un canale per tenant. I comandi e code provengono dai documenti Capgo CLI e aggiornatore.

  1. Crea un canale per ogni tenant

    Ogni tenant riceve un canale con il proprio pacchetto e la propria storia. Consentire l'assegnazione auto-permessi affinché l'app possa spostare un dispositivo su di esso.

    npx @capgo/cli@latest channel add acme com.example.app --self-assign
    npx @capgo/cli@latest channel add globex com.example.app --self-assign
    Documentazione dei canali
  2. Caricare il pacchetto di ogni tenant

    Costruire la layer web con il tema e la configurazione del tenant, quindi caricarla solo nel canale di quel tenant. Gli altri tenant mantengono il loro pacchetto attuale.

    npx @capgo/cli@latest bundle upload --channel acme
    npx @capgo/cli@latest bundle upload --channel globex
    Documentazione dei rollback
  3. Spostare il dispositivo nel tenant di appartenenza al login

    After sign-in, call setChannel() with the tenant's channel. The choice is stored on the device and takes effect on the next update check.

    import { CapacitorUpdater } from '@capgo/capacitor-updater'
    
    await CapacitorUpdater.setChannel({
      channel: tenant.channel,
      triggerAutoUpdate: true,
    })
    Costruire gusci personalizzati in cloud
  4. Crea gusci personalizzati nel cloud

    When a tenant needs its own store listing, icon, or permissions, build that flavor or scheme with Capgo Build. No Mac of your own needed.

    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
    Documentazione per questo workflow

Applicazioni costruite con Capacitor

Applicazioni regionali e di carrier condiviscono una base comune ma richiedono controllo locale

Marchi di sport regionali, intrattenimento e telecomunicazioni possono riutilizzare una base di applicazione unica, modificando orari, campagne, supporto e contenuti specifici per ogni marchio o paese.

Icona dell'applicazione Tigo Sports Guatemala SPORTS

TiVo Sports Guatemala

App di media sportivi regionali dove gli orari e il contenuto locale richiedono il controllo del mercato.

Instalazioni Google Play
1,6M
Valutazione negli store
3.3
Icona dell'app TV SPIELFILM - TV-Programm ENTERTAINMENT

TV SPIELFILM - Programm televisivo

Guida all'intrattenimento dove il contenuto che emerge varia a seconda del mercato e della finestra di programmazione.

Instalazioni Google Play
12,1M
Valutazione della store
4.4
Icona dell'app Mi Orange TOOL

App Mi Orange

L'app di carrier dove sono ancora necessari contenuti di prodotto e supporto locali.

Installazioni di Google Play
9,3M
Valutazione della store
4.2

Prova dei clienti

Cosa dicono le squadre che utilizzano Capgo

5.0/5 valutato dalle squadre di sviluppatori 9,400+ team Leggi le recensioni

no-tone @ Webincode

Sviluppatore, Webincode

"Essere in grado di aggiungere gli ID dei dispositivi a certi gruppi e di inviare le modifiche a solo certi gruppi è un salvavita."

Nate van Jole

CTO, Privato

Eseguiamo la configurazione in meno di un giorno. I rilasci basati sul canale mi consentono di testare sul mio dispositivo prima che i prodotti raggiungano gli utenti in produzione.

Ritratto di Sergiu S

Sergiu S

Capo Sviluppatore, drivolino GmbH

Ecco come il plugin di aggiornamento Capgo Capacitor ci ha cambiato la vita: ora le nostre nuove versioni sono pronte in pochi minuti.

FAQ

Domande frequenti

Quali team chiedono prima di eseguire molti marchi su un unico setup Capgo.

Do we need a separate Capgo app for every brand?

Only when each brand has its own app ID in the stores. One store app that serves many tenants is one Capgo app with a channel per tenant. Separate branded store apps are separate Capgo apps, each with its own channels.

Canali documentazione

Possono gli utenti cambiare tenant all'interno dell'app?

Si. Se il canale del tenant consente l'assegnazione auto, chiamare setChannel() dall'app. Le scelte correnti sono memorizzate sul dispositivo e utilizzate alla prossima verifica di aggiornamento.

setChannel() riferimento

Cosa succede se alcuni tenant sono su una versione nativa più vecchia?

Use version targeting. Block major updates on a channel, or set a minimum native version on a bundle, so older shells keep a bundle they can run.

Versione di targeting - documentazione

Possono noi annullare un tenant senza influenzare gli altri?

Si. Ogni canale mantiene la sua storia di pacchetti. Annullare il canale del tenant a un pacchetto precedente e gli altri canali mantengono ciò che hanno.

Annullamento - documentazione

Cosa ancora richiede una rilascio di store?

Nomine dell'app, icone, autorizzazioni, plugin nativi e code nativi sono nel binario. Capgo Build può costruire ogni sapore o schema e caricarlo su App Store Connect e Google Play.

Capgo Build - documentazione

Prova i canali dei tenant sul tuo app

Durante il periodo di prova di 14 giorni, crea due canali di tenant, carica un bundle in ogni uno e passa un dispositivo di test tra loro con setChannel().