Memulai
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/id/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.
-
Instal paket
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 -
Sinkronisasi dengan proyek asli
Terminal window npx cap syncTerminal window pnpm cap syncTerminal window yarn cap syncTerminal window bunx cap sync -
Konfigurasi izin
Android: Tambahkan ke
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: Tambahkan ke
Info.plist:<key>NSLocationWhenInUseUsageDescription</key><string>We need location access to scan WiFi networks</string>
Penggunaan
Section titled “Penggunaan”Impor plugin dan kelola konektivitas WiFi:
import { CapacitorWifi } from '@capgo/capacitor-wifi';
// Get current WiFi connection infoconst getWifiInfo = async () => { const info = await CapacitorWifi.getWifiInfo(); console.log('Connected to:', info.ssid); console.log('IP Address:', info.ip);};
// Scan for available networksconst scanNetworks = async () => { const { networks } = await CapacitorWifi.scan(); networks.forEach(network => { console.log(`SSID: ${network.ssid}, Signal: ${network.level}`); });};
// Connect to a networkconst connectToWifi = async () => { await CapacitorWifi.connect({ ssid: 'MyNetwork', password: 'mypassword' });};API Referensi
Section titled “API Referensi”dapatkan InfoWi-Fi()
Section titled “dapatkan InfoWi-Fi()”Mendapatkan informasi tentang jaringan WiFi yang saat ini terhubung.
interface WifiInfo { ssid: string; // Network name bssid: string; // MAC address of access point ip: string; // Device IP address frequency: number; // Network frequency (MHz) linkSpeed: number; // Connection speed (Mbps) signalStrength: number; // Signal strength (0-100)}
const info = await CapacitorWifi.getWifiInfo();pemindaian()
Section titled “pemindaian()”Memindai jaringan WiFi yang tersedia.
interface WifiNetwork { ssid: string; // Network name bssid: string; // MAC address level: number; // Signal level (dBm) frequency: number; // Network frequency capabilities: string; // Security capabilities}
const { networks } = await CapacitorWifi.scan();sambungkan (opsi)
Section titled “sambungkan (opsi)”Terhubung ke jaringan WiFi.
interface ConnectOptions { ssid: string; // Network name password?: string; // Network password (if secured) isHiddenSsid?: boolean; // Whether SSID is hidden}
await CapacitorWifi.connect({ ssid: 'MyNetwork', password: 'mypassword'});putuskan sambungan()
Section titled “putuskan sambungan()”Terputus dari jaringan WiFi saat ini.
await CapacitorWifi.disconnect();dapatkanSSID()
Section titled “dapatkanSSID()”Mendapatkan SSID dari jaringan yang saat ini terhubung.
const { ssid } = await CapacitorWifi.getSSID();console.log('Connected to:', ssid);dapatkan IP()
Section titled “dapatkan IP()”Mendapatkan alamat IP perangkat saat ini.
const { ip } = await CapacitorWifi.getIP();console.log('IP Address:', ip);Contoh Lengkap
Section titled “Contoh Lengkap”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('Failed to get WiFi info:', error); return null; } }
async scanAndConnect(targetSsid: string, password: string) { try { // Scan for networks const { networks } = await CapacitorWifi.scan();
// Find target network const targetNetwork = networks.find(n => n.ssid === targetSsid);
if (!targetNetwork) { throw new Error(`Network ${targetSsid} not found`); }
console.log(`Found network with signal: ${targetNetwork.level} dBm`);
// Connect to network await CapacitorWifi.connect({ ssid: targetSsid, password: password });
console.log('Connected successfully!'); return true; } catch (error) { console.error('Connection failed:', error); return false; } }
async findBestNetwork(preferredNetworks: string[]) { const { networks } = await CapacitorWifi.scan();
// Filter to preferred networks const available = networks.filter(n => preferredNetworks.includes(n.ssid) );
if (available.length === 0) { return null; }
// Sort by signal strength 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); } };
// Check every 5 seconds const interval = setInterval(checkConnection, 5000);
// Initial check await checkConnection();
// Return cleanup function return () => clearInterval(interval); }
private getSignalQuality(strength: number): string { if (strength >= 80) return 'Excellent'; if (strength >= 60) return 'Good'; if (strength >= 40) return 'Fair'; return 'Poor'; }
async getNetworkSecurity(ssid: string): Promise<string> { const { networks } = await CapacitorWifi.scan(); const network = networks.find(n => n.ssid === ssid);
if (!network) { return 'Unknown'; }
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 'Open'; }}Penggunaan Lanjutan
Section titled “Penggunaan Lanjutan”Penilaian Kualitas Jaringan
Section titled “Penilaian Kualitas Jaringan”const assessNetworkQuality = async () => { const info = await CapacitorWifi.getWifiInfo();
const quality = { signal: info.signalStrength >= 70 ? 'Excellent' : info.signalStrength >= 50 ? 'Good' : info.signalStrength >= 30 ? 'Fair' : 'Poor', speed: info.linkSpeed >= 100 ? 'Fast' : info.linkSpeed >= 50 ? 'Medium' : 'Slow', frequency: info.frequency >= 5000 ? '5GHz' : '2.4GHz' };
console.log('Network Quality:', quality); return quality;};Sambung Otomatis ke Jaringan Pilihan
Section titled “Sambung Otomatis ke Jaringan Pilihan”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(`Connected to ${preferred.ssid}`); return true; } catch (error) { console.error(`Failed to connect to ${preferred.ssid}`); } } }
return false;};Deteksi Perubahan Jaringan
Section titled “Deteksi Perubahan Jaringan”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)); }}Praktik Terbaik
Section titled “Praktik Terbaik”- Izin: Minta izin lokasi sebelum memindai jaringan
- Penanganan Kesalahan: Selalu gabungkan operasi WiFi dalam blok coba-tangkap
- Umpan Balik Pengguna: Menampilkan indikator pemuatan selama operasi jaringan
- Keamanan: Jangan pernah menyimpan kata sandi WiFi dalam teks biasa
- Pengujian: Uji pada perangkat nyata karena API WiFi mungkin tidak berfungsi di emulator
Perbedaan Platform
Section titled “Perbedaan Platform”- Membutuhkan izin lokasi untuk memindai jaringan
- Tidak dapat terprogram terhubung ke jaringan (akan membuka Pengaturan)
- Akses terbatas ke detail jaringan
Android
Section titled “Android”- Kontrol WiFi terprogram penuh
- Membutuhkan izin lokasi untuk pemindaian jaringan
- Dapat menghubungkan/memutuskan sambungan secara terprogram
Pemecahan masalah
Section titled “Pemecahan masalah”Masalah Umum
Section titled “Masalah Umum”Pemindaian kembali kosong: Periksa apakah izin lokasi diberikan Tidak dapat terhubung ke jaringan: Pastikan kata sandi benar dan jaringan berada dalam jangkauan getWifiInfo gagal: Pastikan perangkat terhubung ke jaringan WiFi Izin ditolak: Tambahkan izin yang diperlukan ke file konfigurasi platform