Iniziare
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/it/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.
-
Installa il pacchetto
Terminal window npm i @capgo/capacitor-wifiTerminal window pnpm add @capgo/capacitor-wifiTerminal window yarn add @capgo/capacitor-wifiTerminal window bun add @capgo/capacitor-wifi -
Sincronizza con i progetti nativi
Terminal window npx cap syncTerminal window pnpm cap syncTerminal window yarn cap syncTerminal window bunx cap sync -
Configura i permessi
Android: Aggiungi a
AndroidManifest.xml:<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: Aggiungi a
Info.plist:<key>NSLocationWhenInUseUsageDescription</key><string>Abbiamo bisogno dell'accesso alla posizione per scansionare le reti WiFi</string>
Utilizzo
Section titled “Utilizzo”Importa il plugin e gestisci la connettività WiFi:
import { CapacitorWifi } from '@capgo/capacitor-wifi';
// Ottieni informazioni sulla connessione WiFi correnteconst getWifiInfo = async () => { const info = await CapacitorWifi.getWifiInfo(); console.log('Connesso a:', info.ssid); console.log('Indirizzo IP:', info.ip);};
// Scansiona le reti disponibiliconst scanNetworks = async () => { const { networks } = await CapacitorWifi.scan(); networks.forEach(network => { console.log(`SSID: ${network.ssid}, Segnale: ${network.level}`); });};
// Connettiti a una reteconst connectToWifi = async () => { await CapacitorWifi.connect({ ssid: 'MiaRete', password: 'miapassword' });};Riferimento API
Section titled “Riferimento API”getWifiInfo()
Section titled “getWifiInfo()”Ottiene informazioni sulla rete WiFi attualmente connessa.
interface WifiInfo { ssid: string; // Nome rete bssid: string; // Indirizzo MAC del punto di accesso ip: string; // Indirizzo IP del dispositivo frequency: number; // Frequenza rete (MHz) linkSpeed: number; // Velocità connessione (Mbps) signalStrength: number; // Potenza del segnale (0-100)}
const info = await CapacitorWifi.getWifiInfo();scan()
Section titled “scan()”Scansiona le reti WiFi disponibili.
interface WifiNetwork { ssid: string; // Nome rete bssid: string; // Indirizzo MAC level: number; // Livello del segnale (dBm) frequency: number; // Frequenza rete capabilities: string; // Capacità di sicurezza}
const { networks } = await CapacitorWifi.scan();connect(options)
Section titled “connect(options)”Connette a una rete WiFi.
interface ConnectOptions { ssid: string; // Nome rete password?: string; // Password rete (se protetta) isHiddenSsid?: boolean; // Se l'SSID è nascosto}
await CapacitorWifi.connect({ ssid: 'MiaRete', password: 'miapassword'});disconnect()
Section titled “disconnect()”Disconnette dalla rete WiFi corrente.
await CapacitorWifi.disconnect();getSSID()
Section titled “getSSID()”Ottiene l’SSID della rete attualmente connessa.
const { ssid } = await CapacitorWifi.getSSID();console.log('Connesso a:', ssid);getIP()
Section titled “getIP()”Ottiene l’indirizzo IP corrente del dispositivo.
const { ip } = await CapacitorWifi.getIP();console.log('Indirizzo IP:', ip);Esempio completo
Section titled “Esempio completo”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('Impossibile ottenere informazioni WiFi:', error); return null; } }
async scanAndConnect(targetSsid: string, password: string) { try { // Scansiona le reti const { networks } = await CapacitorWifi.scan();
// Trova la rete di destinazione const targetNetwork = networks.find(n => n.ssid === targetSsid);
if (!targetNetwork) { throw new Error(`Rete ${targetSsid} non trovata`); }
console.log(`Rete trovata con segnale: ${targetNetwork.level} dBm`);
// Connetti alla rete await CapacitorWifi.connect({ ssid: targetSsid, password: password });
console.log('Connesso con successo!'); return true; } catch (error) { console.error('Connessione fallita:', error); return false; } }
async findBestNetwork(preferredNetworks: string[]) { const { networks } = await CapacitorWifi.scan();
// Filtra per reti preferite const available = networks.filter(n => preferredNetworks.includes(n.ssid) );
if (available.length === 0) { return null; }
// Ordina per potenza del segnale 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); } };
// Controlla ogni 5 secondi const interval = setInterval(checkConnection, 5000);
// Controllo iniziale await checkConnection();
// Restituisce la funzione di pulizia return () => clearInterval(interval); }
private getSignalQuality(strength: number): string { if (strength >= 80) return 'Eccellente'; if (strength >= 60) return 'Buono'; if (strength >= 40) return 'Discreto'; return 'Scarso'; }
async getNetworkSecurity(ssid: string): Promise<string> { const { networks } = await CapacitorWifi.scan(); const network = networks.find(n => n.ssid === ssid);
if (!network) { return 'Sconosciuto'; }
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 'Aperta'; }}Utilizzo avanzato
Section titled “Utilizzo avanzato”Valutazione della qualità della rete
Section titled “Valutazione della qualità della rete”const assessNetworkQuality = async () => { const info = await CapacitorWifi.getWifiInfo();
const quality = { signal: info.signalStrength >= 70 ? 'Eccellente' : info.signalStrength >= 50 ? 'Buono' : info.signalStrength >= 30 ? 'Discreto' : 'Scarso', speed: info.linkSpeed >= 100 ? 'Veloce' : info.linkSpeed >= 50 ? 'Medio' : 'Lento', frequency: info.frequency >= 5000 ? '5GHz' : '2.4GHz' };
console.log('Qualità della rete:', quality); return quality;};Connessione automatica alle reti preferite
Section titled “Connessione automatica alle reti preferite”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(`Connesso a ${preferred.ssid}`); return true; } catch (error) { console.error(`Impossibile connettersi a ${preferred.ssid}`); } } }
return false;};Rilevamento cambio rete
Section titled “Rilevamento cambio rete”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)); }}Best practices
Section titled “Best practices”- Permessi: Richiedi i permessi di localizzazione prima di scansionare le reti
- Gestione errori: Racchiudi sempre le operazioni WiFi in blocchi try-catch
- Feedback utente: Mostra indicatori di caricamento durante le operazioni di rete
- Sicurezza: Non archiviare mai le password WiFi in testo normale
- Test: Testa su dispositivi reali poiché le API WiFi potrebbero non funzionare negli emulatori
Differenze tra piattaforme
Section titled “Differenze tra piattaforme”- Richiede permessi di localizzazione per scansionare le reti
- Non può connettersi programmaticamente alle reti (aprirà le Impostazioni)
- Accesso limitato ai dettagli della rete
Android
Section titled “Android”- Controllo WiFi programmatico completo
- Richiede permessi di localizzazione per la scansione delle reti
- Può connettersi/disconnettersi programmaticamente
Risoluzione dei problemi
Section titled “Risoluzione dei problemi”Problemi comuni
Section titled “Problemi comuni”La scansione restituisce vuoto: Verifica che i permessi di localizzazione siano stati concessi Impossibile connettersi alla rete: Verifica che la password sia corretta e la rete sia nel raggio d’azione getWifiInfo fallisce: Assicurati che il dispositivo sia connesso a una rete WiFi Permesso negato: Aggiungi i permessi richiesti ai file di configurazione della piattaforma