Anfangen
Ein Setup-Prompt mit den Installationsanweisungen und der vollständigen Markdown-Guideline für diesen Plugin kopieren.
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.
Installieren
Abschnitt mit dem Titel “Installieren”Sie können unser AI-gestütztes Setup verwenden, um das Plugin zu installieren. Fügen Sie die Capgo-Fähigkeiten zu Ihrem AI-Tool hinzu, indem Sie die folgende Kommandozeilenanweisung verwenden:
npx skills add https://github.com/Cap-go/capgo-skills --skill capacitor-pluginsDann verwenden Sie die folgende Anfrage:
Use the `capacitor-plugins` skill from `Cap-go/capgo-skills` to install the `@capgo/capacitor-network-diagnostics` plugin in my project.Wenn Sie eine manuelle Einrichtung bevorzugen, installieren Sie das Plugin, indem Sie die folgenden Befehle ausführen und die unten angegebenen plattform-spezifischen Anweisungen befolgen:
npm install @capgo/capacitor-network-diagnosticsnpx cap syncImportieren
Abschnitt mit dem Titel „Importieren“import { NetworkDiagnostics } from '@capgo/capacitor-network-diagnostics';Durchführen eines vollständigen Diagnoseberichts
Abschnitt mit dem Titel „Durchführen eines vollständigen Diagnoseberichts“runDiagnostics ist der schnellste Weg, einen Supportbericht für einen Benutzer auf einem eingeschränkten Netzwerk zu sammeln.
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);Überprüfen Sie den aktuellen Netzwerkstatus
Abschnitt mit dem Titel “Überprüfen Sie den aktuellen Netzwerkstatus”const status = await NetworkDiagnostics.getNetworkStatus();
console.log(status.connected);console.log(status.connectionType);console.log(status.internetReachable);console.log(status.captivePortal);Die genauen Flags hängen von der Plattform ab. Android kann das geprüfte Internet- und Captive-Portal-Zustand melden. iOS meldet den Pfadstatus, den Schnittstellen-Typ, teure Pfade und eingeschränkte Pfade über Network.framework.
Testen Sie die Erreichbarkeit von API
Abschnitt mit dem Titel “Testen Sie die Erreichbarkeit von 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);}Verwenden Sie einen echten Health-Endpunkt von Ihrem Backend. Ein Browser-only-Check kann durch WebView, CORS, Proxy oder Captive-Portal-Verhalten versteckt werden, während dieser Plugin native Netzwerkeinstellungen verwendet.
Testen Sie eine TCP-Verbindung
Abschnitt mit dem Titel “Testen Sie eine TCP-Verbindung”const port = await NetworkDiagnostics.testPort({ host: 'api.example.com', port: 443, timeoutMs: 3000,});
console.log(port.open, port.durationMs);Dies ist nützlich, wenn ein Wi-Fi-Zugangspunkt nichtstandardmäßige Ports, MQTT, benutzerdefinierte Gateways oder einen privaten Backend blockiert, während normalen Surfen erlaubt ist.
Testen Sie die WebSocket-Verbindung
Abschnitt mit dem Titel “WebSocket-Verbindung testen”const socket = await NetworkDiagnostics.testWebSocket({ url: 'wss://ws.example.com/socket', timeoutMs: 5000,});
console.log(socket.open, socket.statusCode);Verwenden Sie diesen, wenn Proxys oder Captive-Portale HTTPS-Seiten zulassen, aber WebSocket-Upgrade-Anforderungen blockieren.
Herunterladegeschwindigkeit messen
Abschnitt mit dem Titel “Herunterladegeschwindigkeit messen”const speed = await NetworkDiagnostics.testDownloadSpeed({ url: 'https://speed.example.com/5mb.bin', maxBytes: 5 * 1024 * 1024, timeoutMs: 30000,});
console.log(speed.mbps);Verwenden Sie Ihren eigenen statischen Datei-Endpunkt, damit das Ergebnis die Netzwerk-Pfad Ihres Apps widerspiegelt.
Paketverlust schätzen
Abschnitt mit dem Titel “Paketverlust schätzen”const loss = await NetworkDiagnostics.testPacketLoss({ mode: 'tcp', host: 'api.example.com', port: 443, count: 10, timeoutMs: 3000, intervalMs: 250,});
console.log(loss.lossPercent);Rohes ICMP-Ping ist in App-Store- und Play-Store-Apps nicht portable. Diese Methode misst Anwendungs-Ebene-Paketverlust, indem TCP- oder HTTP-Proben wiederholt werden.
Web-Fallback
Abschnitt mit dem Titel “Web-Fallback”Die Web-Implementierung ist für die Entwicklung gedacht. Browser können keine Roh-TCP-Sockets öffnen und die URL-Überprüfungen können durch CORS eingeschränkt sein. Verwenden Sie iOS- oder Android-Builds für echte Unterstützungsdiagnosen.