Panoramica App Nativa
Come Appo trasforma la tua web app in un'app mobile nativa.
Come Funziona
Un'app può essere creata dalla CLI (appo new), dal server MCP, dalla dashboard Appo o da un plugin di piattaforma. Appo genera un'app mobile nativa che carica il sito web all'interno di una WebView. Il livello nativo collega le funzionalità del dispositivo (notifiche push, biometria, fotocamera, posizione e altre) al codice JavaScript dell'app attraverso un protocollo basato su messaggi.
L'applicazione si scrive come una web app standard, con l'SDK Appo dove servono funzionalità native. Il wrapper nativo gestisce gli aspetti specifici della piattaforma: permessi, accesso all'hardware, pacchettizzazione per gli store e integrazione dell'UI nativa.
Architettura
┌─────────────────────────────────────────┐
│ La tua Web App │
│ │
│ appo.push.requestPermission() │
│ │ │
│ ▼ │
│ ┌──────────────────────────────┐ │
│ │ @appolabs/sdk SDK │ │
│ │ postMessage({ type, id }) │ │
│ └──────────────┬───────────────┘ │
└─────────────────┼────────────────────────┘
│ window.ReactNativeWebView.postMessage()
▼
┌─────────────────────────────────────────┐
│ App Nativa (gestita da Appo) │
│ │
│ WebView.onMessage(event) │
│ │ │
│ ▼ │
│ ┌──────────────────────────────┐ │
│ │ Message Dispatcher │ │
│ │ type → Feature Handler │ │
│ └──────────────┬───────────────┘ │
│ │ │
│ ┌────────────┼────────────┐ │
│ ▼ ▼ ▼ │
│ expo- expo- expo- │
│ notifications location haptics ... │
│ │
│ Risposta inviata tramite injectJavaScript │
└─────────────────────────────────────────┘Flusso dei Messaggi
- La tua web app invoca un metodo dell'SDK (es.
appo.push.requestPermission()). - L'SDK serializza la richiesta come messaggio JSON con un ID univoco e lo invia tramite
postMessage. - La WebView nativa riceve il messaggio attraverso il suo handler
onMessage. - Il message dispatcher instrada la richiesta al gestore di funzionalità appropriato in base al tipo del messaggio.
- Il gestore invoca l'API nativa corrispondente.
- Il risultato viene inviato alla WebView tramite
injectJavaScript, associato all'ID della richiesta originale. - L'SDK risolve la Promise in sospeso con i dati della risposta.
Per la specifica completa del protocollo dei messaggi, vedi Architettura.
Sezioni
- Configurazione — Impostazioni dell'app, permessi e deep link
- Gestori Funzionalità — Come i gestori nativi processano le richieste dell'SDK
- Trasmissione Eventi — Consegna degli eventi dal nativo al web