Per iniziare
Copia un prompt di configurazione con i passaggi di installazione e la guida markdown completa per questo plugin.
Set up this Capacitor plugin in the project.
Use the package manager already used by the project.
Install these package(s): `@capgo/capacitor-network-diagnostics`
Run the required Capacitor sync/update step after installation.
Read this markdown guide for the full setup steps: https://raw.githubusercontent.com/Cap-go/website/refs/heads/main/apps/docs/src/content/docs/docs/plugins/network-diagnostics/getting-started.mdx
Use that guide for platform-specific steps, native file edits, permissions, config changes, imports, and usage setup.
If that guide references other docs pages, read them too.
Puoi usare il nostro setup assistito dall'IA per installare il plugin. Aggiungi le skill Capgo al tuo strumento di IA usando il seguente comando:
bunx skills add https://github.com/Cap-go/capgo-skills --skill capacitor-pluginsPoi usa il seguente prompt:
Use the `capacitor-plugins` skill from `Cap-go/capgo-skills` to install the `@capgo/capacitor-network-diagnostics` plugin in my project.Se preferisci la configurazione manuale, installa il plugin eseguendo questi comandi e segui le istruzioni specifiche per piattaforma qui sotto:
bun add @capgo/capacitor-network-diagnosticsbunx cap syncImporta
Sezione intitolata “Import”import { NetworkDiagnostics } from '@capgo/capacitor-network-diagnostics';Avvio rapido
Sezione intitolata “Quick start”import { NetworkDiagnostics } from '@capgo/capacitor-network-diagnostics';
const result = await NetworkDiagnostics.getNetworkStatus();console.log(result);Esempio: testUrl
Sezione intitolata “Esempio: testUrl”import { NetworkDiagnostics } from '@capgo/capacitor-network-diagnostics';
const result = await NetworkDiagnostics.testUrl({ url: 'https://example.com' });console.log(result);Esempio: testPort
Sezione intitolata “Esempio: testPort”import { NetworkDiagnostics } from '@capgo/capacitor-network-diagnostics';
const result = await NetworkDiagnostics.testPort({ host: 'example.com', port: 8080,});console.log(result);Errori comuni
Sezione intitolata “Errori comuni”- Sync nativo: esegui
bunx cap syncdopo gli aggiornamenti dei plugin. - Fonte di verità: fidati
src/definitions.tsnel repo GitHub.
Esegui un report diagnostico completo
Sezione intitolata “Esegui un report diagnostico completo”runDiagnostics è il modo più veloce per raccogliere un report di supporto per un utente su una rete limitata.
const report = await NetworkDiagnostics.runDiagnostics({ urls: [{ url: 'https://api.example.com/health', method: 'HEAD' }], ports: [{ host: 'api.example.com', port: 443 }], websockets: [{ url: 'wss://ws.example.com/socket' }], download: { url: 'https://speed.example.com/5mb.bin', maxBytes: 5 * 1024 * 1024, }, packetLoss: { mode: 'tcp', host: 'api.example.com', port: 443, count: 10, },});
console.log(report.status.connectionType);console.log(report.issues);Controlla lo stato attuale della rete
Sezione intitolata “Controlla lo stato attuale della rete”const status = await NetworkDiagnostics.getNetworkStatus();
console.log(status.connected);console.log(status.connectionType);console.log(status.internetReachable);console.log(status.captivePortal);I flag esatti dipendono dalla piattaforma. Android può riportare lo stato di internet validato e del captive portal. iOS riporta lo stato del path, il tipo di interfaccia, i path costosi e i path con restrizioni tramite Network.framework.
Test della raggiungibilità di API
Sezione intitolata “Test della raggiungibilità di API”const result = await NetworkDiagnostics.testUrl({ url: 'https://api.example.com/health', method: 'HEAD', timeoutMs: 5000, followRedirects: true,});
if (!result.reachable) { console.warn(result.errorCode, result.errorMessage);}Usa un vero endpoint di health check del tuo backend. Un controllo solo via browser può essere mascherato da WebView, CORS, proxy o dal comportamento del captive portal, mentre questo plugin usa il networking nativo.
Test di una porta TCP
Sezione intitolata “Test di una porta TCP”const port = await NetworkDiagnostics.testPort({ host: 'api.example.com', port: 443, timeoutMs: 3000,});
console.log(port.open, port.durationMs);È utile quando un access point Wi-Fi blocca porte non standard, MQTT, gateway personalizzati o un backend privato, pur permettendo la normale navigazione.
Verifica connettività WebSocket
Sezione intitolata “Test della connettività WebSocket”const socket = await NetworkDiagnostics.testWebSocket({ url: 'wss://ws.example.com/socket', timeoutMs: 5000,});
console.log(socket.open, socket.statusCode);Usalo quando proxy o captive portal consentono le pagine HTTPS ma bloccano le richieste di upgrade WebSocket.
Misura la velocità di download
Sezione intitolata “Misura la velocità di download”const speed = await NetworkDiagnostics.testDownloadSpeed({ url: 'https://speed.example.com/5mb.bin', maxBytes: 5 * 1024 * 1024, timeoutMs: 30000,});
console.log(speed.mbps);Usa un tuo endpoint di file statici in modo che il risultato rifletta il percorso di rete utilizzato dalla tua app.
Stima la perdita di pacchetti
Sezione intitolata “Stima la perdita di pacchetti”const loss = await NetworkDiagnostics.testPacketLoss({ mode: 'tcp', host: 'api.example.com', port: 443, count: 10, timeoutMs: 3000, intervalMs: 250,});
console.log(loss.lossPercent);Il ping ICMP raw non è supportato nelle app per App Store e Play Store. Questo metodo misura la perdita di pacchetti a livello applicativo ripetendo i probe TCP o HTTP.
Fallback web
Sezione intitolata “Web fallback”L'implementazione web è pensata per lo sviluppo. I browser non possono aprire socket TCP raw e i controlli URL potrebbero essere limitati da CORS. Usa build iOS o Android per una diagnostica completa.