Einstieg
Eine Einrichtungsvorschlag mit den Installationsanweisungen und der vollständigen Markdown-Guideline für dieses 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.
Install
InstallationSie können unsere AI-gestützte Einrichtung verwenden, um das Plugin zu installieren. Fügen Sie den Capgo-Fähigkeiten Ihre AI-Tool mithilfe der folgenden Befehl hinzu:
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 die manuelle Einrichtung bevorzugen, installieren Sie das Plugin, indem Sie die folgenden Befehle ausführen und folgen Sie den unten angegebenen plattform-spezifischen Anweisungen:
npm install @capgo/capacitor-network-diagnosticsnpx cap syncImport
Importimport { NetworkDiagnostics } from '@capgo/capacitor-network-diagnostics';Einen vollständigen Diagnosebericht ausführen
Abschnitt mit dem Titel „Einen vollständigen Diagnosebericht ausführen“runDiagnostics Dies ist die schnellste Möglichkeit, 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 Validierte 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 API Erreichbarkeit
Abschnitt mit dem Titel „Testen Sie die API Erreichbarkeit“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 Gesundheitsendpunkt Ihres Backends. Ein Browser-only-Check kann durch WebView, CORS, Proxy oder Captive-Portal-Verhalten versteckt werden, während dieser Plugin native Netzwerke verwendet.
Testen Sie einen TCP-Port
Abschnitt mit dem Titel „Testen Sie einen TCP-Port“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 wird.
Testen Sie die WebSocket-Verbindung
Abschnitt mit dem Titel „Testen Sie die WebSocket-Verbindung“const socket = await NetworkDiagnostics.testWebSocket({ url: 'wss://ws.example.com/socket', timeoutMs: 5000,});
console.log(socket.open, socket.statusCode);Verwenden Sie dies, wenn Proxys oder Captive-Portale HTTPS-Seiten zulassen, aber WebSocket-Upgrade-Anforderungen blockieren.
Messung der Herunterladegeschwindigkeit
Abschnitt mit dem Titel „Messung der Herunterladegeschwindigkeit“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 Dateien-Endpunkt, so dass das Ergebnis den Netzwerkweg widerspiegelt, den Ihre App benötigt.
Paketverlust abschätzen
Abschnitt mit dem Titel „Paketverlust abschätzen“const loss = await NetworkDiagnostics.testPacketLoss({ mode: 'tcp', host: 'api.example.com', port: 443, count: 10, timeoutMs: 3000, intervalMs: 250,});
console.log(loss.lossPercent);Der Roh-ICMP-Ping ist in App Store- und Play Store-Anwendungen nicht portable. Diese Methode misst den Anwendungslevel-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 URL-Überprüfungen können durch CORS-Beschränkungen eingeschränkt sein. Verwenden Sie iOS- oder Android-Builds für echte Diagnoseunterstützung.