Erste Schritte
Kopiere einen Setup-Prompt mit den Installationsschritten und dem vollständigen Markdown-Guide für dieses 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.
Installieren
Abschnitt „Installation“Du kannst unser KI-gestütztes Setup nutzen, um das Plugin zu installieren. Füge die Capgo Skills mit dem folgenden Befehl deinem KI-Tool hinzu:
bunx skills add https://github.com/Cap-go/capgo-skills --skill capacitor-pluginsNutze dann diesen Prompt:
Use the `capacitor-plugins` skill from `Cap-go/capgo-skills` to install the `@capgo/capacitor-network-diagnostics` plugin in my project.Wenn du ein manuelles Setup bevorzugst, installiere das Plugin mit den folgenden Befehlen und befolge die plattformspezifischen Anweisungen unten:
bun add @capgo/capacitor-network-diagnosticsbunx cap syncImportieren
Abschnitt mit dem Titel „Import“import { NetworkDiagnostics } from '@capgo/capacitor-network-diagnostics';Quickstart
Abschnitt „Quick start“import { NetworkDiagnostics } from '@capgo/capacitor-network-diagnostics';
const result = await NetworkDiagnostics.getNetworkStatus();console.log(result);Beispiel: testUrl
Abschnitt „Beispiel: testUrl“import { NetworkDiagnostics } from '@capgo/capacitor-network-diagnostics';
const result = await NetworkDiagnostics.testUrl({ url: 'https://example.com' });console.log(result);Beispiel: testPort
Abschnitt „Beispiel: testPort“import { NetworkDiagnostics } from '@capgo/capacitor-network-diagnostics';
const result = await NetworkDiagnostics.testPort({ host: 'example.com', port: 8080,});console.log(result);Häufige Stolperfallen
Abschnitt „Häufige Fallstricke“- Nativer Sync: ausführen
bunx cap syncnach Plugin-Upgrades. - Single Source of Truth: Vertrauen
src/definitions.tsim GitHub Repo.
Vollständigen Diagnosebericht erstellen
Abschnitt mit dem Titel „Einen vollständigen Diagnosebericht erstellen“runDiagnostics ist der schnellste Weg, um einen Support-Bericht für einen Nutzer in einem eingeschränkten Netzwerk zu erstellen.
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);Aktuellen Netzwerkstatus prüfen
Abschnitt mit dem Titel „Aktuellen Netzwerkstatus prüfen“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 validiertes Internet und den Captive-Portal-Status melden. iOS meldet Path-Status, Interface-Typ, expensive und constrained Paths über Network.framework.
Erreichbarkeit von API testen
Abschnitt mit dem Titel „Erreichbarkeit von API testen“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);}Nutze einen echten Health-Endpoint aus deinem Backend. Ein reiner Browser-Check kann durch WebView, CORS, Proxies oder Captive-Portal-Verhalten verfälscht werden, während dieses Plugin natives Networking nutzt.
TCP-Port testen
Abschnitt mit dem Titel „Einen TCP-Port testen“const port = await NetworkDiagnostics.testPort({ host: 'api.example.com', port: 443, timeoutMs: 3000,});
console.log(port.open, port.durationMs);Das ist hilfreich, wenn ein Wi-Fi-Access-Point zwar normales Surfen erlaubt, aber Nicht-Standard-Ports, MQTT, Custom Gateways oder ein privates Backend blockiert.
WebSocket-Verbindung testen
Abschnitt mit dem Titel „WebSocket-Konnektivität testen“const socket = await NetworkDiagnostics.testWebSocket({ url: 'wss://ws.example.com/socket', timeoutMs: 5000,});
console.log(socket.open, socket.statusCode);Verwende dies, wenn Proxys oder Captive Portals HTTPS-Seiten zulassen, aber WebSocket-Upgrade-Anfragen blockieren.
Download-Geschwindigkeit messen
Abschnitt mit dem Titel „Download-Geschwindigkeit messen“const speed = await NetworkDiagnostics.testDownloadSpeed({ url: 'https://speed.example.com/5mb.bin', maxBytes: 5 * 1024 * 1024, timeoutMs: 30000,});
console.log(speed.mbps);Nutze deinen eigenen statischen Datei-Endpoint, damit das Ergebnis den Netzwerkpfad widerspiegelt, den deine App braucht.
Paketverlust abschätzen
Abschnitt mit dem Titel „Packet Loss 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 portabel. Diese Methode misst Packet Loss auf Anwendungsebene durch wiederholte TCP- oder HTTP-Probes.
Web-Fallback
Abschnitt mit dem Titel „Web-Fallback“Die Web-Implementierung ist nur für die Entwicklung gedacht. Browser können keine rohen TCP-Sockets öffnen, und URL-Checks können durch CORS eingeschränkt sein. Nutze iOS- oder Android-Builds für echte Support-Diagnosen.