Erste Schritte
Copy a setup prompt with the install steps and the full markdown guide for this plugin.
Set up this Capacitor plugin in the project.
Use the package manager already used by the project.
Install these package(s): `@capgo/capacitor-wifi`
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/de/docs/plugins/wifi/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 Sie das Paket
Terminal-Fenster npm i @capgo/capacitor-wifiTerminal-Fenster pnpm add @capgo/capacitor-wifiTerminal-Fenster yarn add @capgo/capacitor-wifiTerminal-Fenster bun add @capgo/capacitor-wifi -
Mit nativen Projekten synchronisieren
Terminal-Fenster npx cap syncTerminal-Fenster pnpm cap syncTerminal-Fenster yarn cap syncTerminal-Fenster bunx cap sync -
Berechtigungen konfigurieren
Android: Fügen Sie zu
AndroidManifest.xmlhinzu:<uses-permission android:name="android.permission.ACCESS_WIFI_STATE" /><uses-permission android:name="android.permission.CHANGE_WIFI_STATE" /><uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" /><uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />iOS: Fügen Sie zu
Info.plisthinzu:<key>NSLocationWhenInUseUsageDescription</key><string>Wir benötigen Standortzugriff zum Scannen von WiFi-Netzwerken</string>
Verwendung
Section titled “Verwendung”Importieren Sie das Plugin und verwalten Sie die WiFi-Konnektivität:
import { CapacitorWifi } from '@capgo/capacitor-wifi';
// Aktuelle WiFi-Verbindungsinformationen abrufenconst getWifiInfo = async () => { const info = await CapacitorWifi.getWifiInfo(); console.log('Verbunden mit:', info.ssid); console.log('IP-Adresse:', info.ip);};
// Nach verfügbaren Netzwerken scannenconst scanNetworks = async () => { const { networks } = await CapacitorWifi.scan(); networks.forEach(network => { console.log(`SSID: ${network.ssid}, Signal: ${network.level}`); });};
// Mit einem Netzwerk verbindenconst connectToWifi = async () => { await CapacitorWifi.connect({ ssid: 'MeinNetzwerk', password: 'meinpasswort' });};API-Referenz
Section titled “API-Referenz”getWifiInfo()
Section titled “getWifiInfo()”Ruft Informationen über das aktuell verbundene WiFi-Netzwerk ab.
interface WifiInfo { ssid: string; // Netzwerkname bssid: string; // MAC-Adresse des Access Points ip: string; // Geräte-IP-Adresse frequency: number; // Netzwerkfrequenz (MHz) linkSpeed: number; // Verbindungsgeschwindigkeit (Mbps) signalStrength: number; // Signalstärke (0-100)}
const info = await CapacitorWifi.getWifiInfo();scan()
Section titled “scan()”Scannt nach verfügbaren WiFi-Netzwerken.
interface WifiNetwork { ssid: string; // Netzwerkname bssid: string; // MAC-Adresse level: number; // Signalpegel (dBm) frequency: number; // Netzwerkfrequenz capabilities: string; // Sicherheitsfähigkeiten}
const { networks } = await CapacitorWifi.scan();connect(options)
Section titled “connect(options)”Verbindet sich mit einem WiFi-Netzwerk.
interface ConnectOptions { ssid: string; // Netzwerkname password?: string; // Netzwerkpasswort (falls gesichert) isHiddenSsid?: boolean; // Ob SSID versteckt ist}
await CapacitorWifi.connect({ ssid: 'MeinNetzwerk', password: 'meinpasswort'});disconnect()
Section titled “disconnect()”Trennt die Verbindung vom aktuellen WiFi-Netzwerk.
await CapacitorWifi.disconnect();getSSID()
Section titled “getSSID()”Ruft die SSID des aktuell verbundenen Netzwerks ab.
const { ssid } = await CapacitorWifi.getSSID();console.log('Verbunden mit:', ssid);getIP()
Section titled “getIP()”Ruft die aktuelle Geräte-IP-Adresse ab.
const { ip } = await CapacitorWifi.getIP();console.log('IP-Adresse:', ip);Vollständiges Beispiel
Section titled “Vollständiges Beispiel”import { CapacitorWifi } from '@capgo/capacitor-wifi';
export class WifiService { async getCurrentNetwork() { try { const info = await CapacitorWifi.getWifiInfo(); return { name: info.ssid, strength: this.getSignalQuality(info.signalStrength), speed: `${info.linkSpeed} Mbps`, ip: info.ip }; } catch (error) { console.error('WiFi-Informationen konnten nicht abgerufen werden:', error); return null; } }
async scanAndConnect(targetSsid: string, password: string) { try { // Nach Netzwerken scannen const { networks } = await CapacitorWifi.scan();
// Zielnetzwerk finden const targetNetwork = networks.find(n => n.ssid === targetSsid);
if (!targetNetwork) { throw new Error(`Netzwerk ${targetSsid} nicht gefunden`); }
console.log(`Netzwerk mit Signal gefunden: ${targetNetwork.level} dBm`);
// Mit Netzwerk verbinden await CapacitorWifi.connect({ ssid: targetSsid, password: password });
console.log('Erfolgreich verbunden!'); return true; } catch (error) { console.error('Verbindung fehlgeschlagen:', error); return false; } }
async findBestNetwork(preferredNetworks: string[]) { const { networks } = await CapacitorWifi.scan();
// Auf bevorzugte Netzwerke filtern const available = networks.filter(n => preferredNetworks.includes(n.ssid) );
if (available.length === 0) { return null; }
// Nach Signalstärke sortieren available.sort((a, b) => b.level - a.level);
return available[0]; }
async monitorConnection(callback: (info: WifiInfo | null) => void) { const checkConnection = async () => { try { const info = await CapacitorWifi.getWifiInfo(); callback(info); } catch (error) { callback(null); } };
// Alle 5 Sekunden überprüfen const interval = setInterval(checkConnection, 5000);
// Erste Überprüfung await checkConnection();
// Aufräumfunktion zurückgeben return () => clearInterval(interval); }
private getSignalQuality(strength: number): string { if (strength >= 80) return 'Ausgezeichnet'; if (strength >= 60) return 'Gut'; if (strength >= 40) return 'Akzeptabel'; return 'Schwach'; }
async getNetworkSecurity(ssid: string): Promise<string> { const { networks } = await CapacitorWifi.scan(); const network = networks.find(n => n.ssid === ssid);
if (!network) { return 'Unbekannt'; }
const caps = network.capabilities.toLowerCase();
if (caps.includes('wpa3')) return 'WPA3'; if (caps.includes('wpa2')) return 'WPA2'; if (caps.includes('wpa')) return 'WPA'; if (caps.includes('wep')) return 'WEP';
return 'Offen'; }}Erweiterte Verwendung
Section titled “Erweiterte Verwendung”Netzwerkqualitätsbewertung
Section titled “Netzwerkqualitätsbewertung”const assessNetworkQuality = async () => { const info = await CapacitorWifi.getWifiInfo();
const quality = { signal: info.signalStrength >= 70 ? 'Ausgezeichnet' : info.signalStrength >= 50 ? 'Gut' : info.signalStrength >= 30 ? 'Akzeptabel' : 'Schwach', speed: info.linkSpeed >= 100 ? 'Schnell' : info.linkSpeed >= 50 ? 'Mittel' : 'Langsam', frequency: info.frequency >= 5000 ? '5GHz' : '2,4GHz' };
console.log('Netzwerkqualität:', quality); return quality;};Automatisches Verbinden mit bevorzugten Netzwerken
Section titled “Automatisches Verbinden mit bevorzugten Netzwerken”const autoConnect = async (preferredNetworks: Array<{ ssid: string, password: string }>) => { const { networks } = await CapacitorWifi.scan();
for (const preferred of preferredNetworks) { const found = networks.find(n => n.ssid === preferred.ssid);
if (found) { try { await CapacitorWifi.connect({ ssid: preferred.ssid, password: preferred.password }); console.log(`Verbunden mit ${preferred.ssid}`); return true; } catch (error) { console.error(`Verbindung mit ${preferred.ssid} fehlgeschlagen`); } } }
return false;};Netzwerkwechselerkennung
Section titled “Netzwerkwechselerkennung”class NetworkMonitor { private currentSsid: string | null = null; private listeners: Array<(ssid: string | null) => void> = [];
async start() { setInterval(async () => { try { const { ssid } = await CapacitorWifi.getSSID();
if (ssid !== this.currentSsid) { this.currentSsid = ssid; this.notifyListeners(ssid); } } catch (error) { if (this.currentSsid !== null) { this.currentSsid = null; this.notifyListeners(null); } } }, 3000); }
onNetworkChange(callback: (ssid: string | null) => void) { this.listeners.push(callback); }
private notifyListeners(ssid: string | null) { this.listeners.forEach(listener => listener(ssid)); }}Bewährte Methoden
Section titled “Bewährte Methoden”- Berechtigungen: Fordern Sie Standortberechtigungen an, bevor Sie Netzwerke scannen
- Fehlerbehandlung: Wickeln Sie WiFi-Operationen immer in try-catch-Blöcke ein
- Benutzer-Feedback: Zeigen Sie Ladeindikatoren während Netzwerkoperationen an
- Sicherheit: Speichern Sie WiFi-Passwörter niemals im Klartext
- Testen: Testen Sie auf echten Geräten, da WiFi-APIs möglicherweise nicht in Emulatoren funktionieren
Plattformunterschiede
Section titled “Plattformunterschiede”- Erfordert Standortberechtigungen zum Scannen von Netzwerken
- Kann nicht programmatisch mit Netzwerken verbinden (öffnet Einstellungen)
- Eingeschränkter Zugriff auf Netzwerkdetails
Android
Section titled “Android”- Vollständige programmatische WiFi-Kontrolle
- Erfordert Standortberechtigungen zum Scannen von Netzwerken
- Kann programmatisch verbinden/trennen
Fehlerbehebung
Section titled “Fehlerbehebung”Häufige Probleme
Section titled “Häufige Probleme”Scan gibt leer zurück: Überprüfen Sie, ob Standortberechtigungen erteilt wurden Kann nicht mit Netzwerk verbinden: Überprüfen Sie, ob das Passwort korrekt ist und das Netzwerk in Reichweite ist getWifiInfo schlägt fehl: Stellen Sie sicher, dass das Gerät mit einem WiFi-Netzwerk verbunden ist Berechtigung verweigert: Fügen Sie erforderliche Berechtigungen zu Plattformkonfigurationsdateien hinzu