
Company News
Socket Joins New OpenJS Program to Fund Node.js Security Work
Socket is joining the OpenJS Security Stewardship Program to fund Node.js vulnerability research, maintainer remediation, and security releases.
rnww-plugin-wifi
Advanced tools
React Native WebView WiFi Plugin with Expo support - Get WiFi information and manage connections
React Native WebView WiFi 정보 조회 및 연결 관리 플러그인
npm install rnww-plugin-wifi
import { registerWifiHandlers } from 'rnww-plugin-wifi';
registerWifiHandlers({
bridge: yourBridgeImplementation,
platform: { OS: Platform.OS },
});
현재 연결된 WiFi 정보를 조회합니다.
const result = await bridge.call('getCurrentWifiInfo');
// {
// success: true,
// data: {
// ssid: 'MyWiFi',
// bssid: 'AA:BB:CC:DD:EE:FF',
// rssi: -45,
// signalLevel: 80,
// frequency: 5180,
// linkSpeed: 433,
// ipAddress: '192.168.1.100',
// isConnected: true,
// networkId: 1,
// security: 'WPA2'
// }
// }
사용 가능한 WiFi 네트워크 목록을 스캔합니다. (Android only)
const result = await bridge.call('getWifiList');
// {
// success: true,
// data: [
// {
// ssid: 'MyWiFi',
// bssid: 'AA:BB:CC:DD:EE:FF',
// rssi: -45,
// signalLevel: 80,
// frequency: 5180,
// security: 'WPA2',
// channel: 36
// },
// ...
// ]
// }
WiFi 활성화 상태를 확인합니다.
const result = await bridge.call('isWifiEnabled');
// {
// success: true,
// isEnabled: true,
// wifiState: 'ENABLED'
// }
WiFi 네트워크에 연결합니다.
const result = await bridge.call('connectToWifi', {
ssid: 'MyWiFi',
password: 'mypassword',
isHidden: false
});
// {
// success: true,
// wifiInfo: { ssid: 'MyWiFi', ... }
// }
현재 WiFi 연결을 해제합니다.
const result = await bridge.call('disconnect');
// { success: true }
WiFi 관련 권한 상태를 확인합니다.
const result = await bridge.call('checkWifiPermission');
// {
// locationGranted: true,
// canAccessWifiInfo: true,
// requiredPermissions: [],
// details: {
// fineLocation: true,
// coarseLocation: true
// }
// }
WiFi 관련 권한을 요청합니다.
const result = await bridge.call('requestWifiPermission');
// {
// locationGranted: true,
// canAccessWifiInfo: true,
// requiredPermissions: []
// }
WiFi 상태 변경 시 이벤트를 수신합니다.
bridge.on('onWifiStateChange', (event) => {
console.log('WiFi state changed:', event);
});
interface WifiStateChangeEvent {
type: 'WIFI_STATE_CHANGED' | 'CONNECTION_STATE_CHANGED' | 'NETWORK_INFO_CHANGED';
wifiState?: 'DISABLED' | 'DISABLING' | 'ENABLED' | 'ENABLING' | 'UNKNOWN';
connectionState?: 'DISCONNECTED' | 'CONNECTING' | 'CONNECTED' | 'DISCONNECTING' | 'UNKNOWN';
wifiInfo?: WifiInfo;
timestamp: number;
}
interface WifiInfo {
ssid: string | null;
bssid: string | null;
rssi: number | null; // 신호 강도 (dBm)
signalLevel: number | null; // 신호 레벨 (0-100)
frequency: number | null; // 주파수 (MHz)
linkSpeed: number | null; // 링크 속도 (Mbps)
ipAddress: string | null;
isConnected: boolean;
networkId?: number;
security?: WifiSecurityType;
}
interface WifiNetwork {
ssid: string;
bssid: string;
rssi: number;
signalLevel: number;
frequency: number;
security: WifiSecurityType;
channel?: number;
}
type WifiSecurityType =
| 'OPEN'
| 'WEP'
| 'WPA'
| 'WPA2'
| 'WPA3'
| 'WPA_WPA2'
| 'WPA2_WPA3'
| 'UNKNOWN';
interface ConnectOptions {
ssid: string;
password?: string;
security?: WifiSecurityType;
isHidden?: boolean;
timeout?: number;
}
interface PermissionStatus {
locationGranted: boolean;
canAccessWifiInfo: boolean;
requiredPermissions: string[];
details?: {
fineLocation?: boolean;
coarseLocation?: boolean;
backgroundLocation?: boolean;
};
}
type WifiErrorCode =
| 'PERMISSION_DENIED'
| 'WIFI_DISABLED'
| 'NETWORK_NOT_FOUND'
| 'AUTHENTICATION_FAILED'
| 'CONNECTION_FAILED'
| 'TIMEOUT'
| 'INVALID_SSID'
| 'INVALID_PASSWORD'
| 'NOT_SUPPORTED'
| 'MODULE_NOT_AVAILABLE'
| 'UNKNOWN';
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_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
Note: Android 8.0 이상에서 WiFi SSID를 가져오려면 위치 권한이 필요합니다.
Info.plist에 추가:
<key>NSLocationWhenInUseUsageDescription</key>
<string>WiFi 정보를 가져오기 위해 위치 권한이 필요합니다.</string>
Xcode에서 Signing & Capabilities에 다음 추가:
getWifiList)은 Android에서만 지원됩니다.getWifiList)은 iOS에서 지원되지 않습니다.async function showWifiInfo() {
// 권한 확인
const permission = await bridge.call('checkWifiPermission');
if (!permission.canAccessWifiInfo) {
await bridge.call('requestWifiPermission');
}
// WiFi 정보 조회
const result = await bridge.call('getCurrentWifiInfo');
if (result.success && result.data) {
console.log(`Connected to: ${result.data.ssid}`);
console.log(`Signal: ${result.data.signalLevel}%`);
console.log(`IP: ${result.data.ipAddress}`);
}
}
async function connectWifi(ssid: string, password: string) {
const result = await bridge.call('connectToWifi', {
ssid,
password
});
if (result.success) {
console.log('Connected successfully!');
} else {
console.error(`Connection failed: ${result.error}`);
}
}
bridge.on('onWifiStateChange', (event) => {
switch (event.type) {
case 'WIFI_STATE_CHANGED':
console.log(`WiFi state: ${event.wifiState}`);
break;
case 'CONNECTION_STATE_CHANGED':
console.log(`Connection: ${event.connectionState}`);
if (event.wifiInfo) {
console.log(`SSID: ${event.wifiInfo.ssid}`);
}
break;
}
});
MIT
FAQs
React Native WebView WiFi Plugin with Expo support - Get WiFi information and manage connections
We found that rnww-plugin-wifi demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 1 open source maintainer collaborating on the project.

Company News
Socket is joining the OpenJS Security Stewardship Program to fund Node.js vulnerability research, maintainer remediation, and security releases.

Security News
Two compromised GitHub Actions were re-enabled with malicious tags intact, exposing thousands of downstream repositories to Mini Shai-Hulud.

Research
/Security News
A malicious Firefox extension fetches its payload after installation to evade detection, steal Google session cookies, and automate account takeover.