Zum Inhalt springen

Einstieg

GitHub

Sie können unsere KI-gestützte Einrichtung verwenden, um das Plugin zu installieren. Fügen Sie den Capgo-Fähigkeiten Ihrer KI-Werkzeug mit der folgenden Befehl hinzu:

Terminal-Fenster
npx skills add https://github.com/Cap-go/capgo-skills --skill capacitor-plugins

Verwenden Sie dann 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:

Terminalfenster
npm install @capgo/capacitor-network-diagnostics
npx cap sync
import { NetworkDiagnostics } from '@capgo/capacitor-network-diagnostics';

runDiagnostics ist der schnellste Weg, um 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);
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.

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 realen Health-Endpunkt aus Ihrem Backend. Ein Browser-only-Check kann durch WebView, CORS, Proxy oder Captive-Portal-Verhalten versteckt werden, während dieser Plugin native Netzwerke verwendet.

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 Browsing noch zulässt.

const socket = await NetworkDiagnostics.testWebSocket({
url: 'wss://ws.example.com/socket',
timeoutMs: 5000,
});
console.log(socket.open, socket.statusCode);

Wenden Sie sich an diesen, wenn Proxys oder Captive-Portale HTTPS-Seiten zulassen, aber WebSocket-Upgrade-Anforderungen blockieren.

Herunterladegeschwindigkeit messen

Sektion: 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 Dateiendpunkt, damit das Ergebnis die Netzwerkpfade widerspiegelt, die Ihre App benötigt.

Paketverlust schätzen

Sektion: 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);

Roter ICMP-Ping ist in App-Store- und Play-Store-Anwendungen nicht portable. Diese Methode misst Anwendungslevel-Paketverlust, indem TCP- oder HTTP-Proben wiederholt werden.

Die Web-Implementierung ist für die Entwicklung gedacht. Browser können keine roten TCP-Sockets öffnen und URL-Überprüfungen können durch CORS limitiert sein. Verwenden Sie iOS- oder Android-Builds für echte Diagnoseunterstützung.