
이 프로젝트는 더 이상 유지 관리되지 않는 https://github.com/robwalkerco/react-native-wifi를 기반으로 합니다.
$ npm install react-native-wifi-reborn --save
올바른 프로필을 사용하여 WIFI 정보 액세스를 활성화해야 합니다. 네트워크에 연결하려면 핫스팟 구성이 필요합니다
설정 -> 정보에서 "개인 정보 - 사용 시 위치 사용 설명" 또는 "개인 정보 - 항상 위치 및 사용 시 사용 설명"을 입력해야 합니다.
Android 6부터 기기의 Wi-Fi 검색 및 관리 기능을 사용하려면 런타임에 ACCESS_FINE_LOCATION 권한을 요청해야 합니다. 이를 달성하기 위해 PermissionsAndroid API 또는 React Native Permissions를 사용할 수 있습니다.
Example
import { PermissionsAndroid } from 'react-native';
const granted = await PermissionsAndroid.request(
PermissionsAndroid.PERMISSIONS.ACCESS_FINE_LOCATION,
{
title: 'Location permission is required for WiFi connections',
message:
'This app needs location permission as this is required ' +
'to scan for wifi networks.',
buttonNegative: 'DENY',
buttonPositive: 'ALLOW',
},
);
if (granted === PermissionsAndroid.RESULTS.GRANTED) {
// You can now use react-native-wifi-reborn
} else {
// Permission denied
}
이 라이브러리는 React Native 60+ 🎉에서 올바르게 자동 링크됩니다.
$ react-native link react-native-wifi-reborn
include ':react-native-wifi-reborn'
project(':react-native-wifi-reborn').projectDir = new File(rootProject.projectDir, '../node_modules/react-native-wifi-reborn/android')
implementation project(':react-native-wifi-reborn')
이 패키지는 사용자 정의 네이티브 코드가 필요하기 때문에 "Expo Go" 앱에서 사용할 수 없습니다.
이 npm 패키지를 설치한 후 app.json 또는 app.config.js의 플러그인 배열에 구성 플러그인을 추가하세요.
{
"expo": {
"plugins": ["react-native-wifi-reborn"]
}
}
그런 다음 "사용자 정의 네이티브 코드 추가" 가이드에 설명된 대로 앱을 다시 빌드하세요.
플러그인은 추가 사용자 정의를 위한 소품을 제공합니다. 소품이나 플러그인을 변경할 때마다 기본 앱을 다시 빌드(및 사전 빌드)해야 합니다. 추가 속성이 없으면 기본값이 사용됩니다.
FineLocationPermission (false | undefine): false인 경우 android.permission.ACCESS_FINE_LOCATION이 AndroidManifest.xml에 추가되지 않습니다.{
"plugins": [
[
"react-native-wifi-reborn",
{
"fineLocationPermission": false
}
]
]
}
import WifiManager from "react-native-wifi-reborn";
WifiManager.connectToProtectedWifiSSID(ssid, password, isWep).then(
() => {
console.log("Connected successfully!");
},
() => {
console.log("Connection failed!");
}
);
WifiManager.getCurrentWifiSSID().then(
ssid => {
console.log("Your current connected wifi SSID is " + ssid);
},
() => {
console.log("Cannot get current SSID!");
}
);
API 문서화가 진행 중입니다.
다음 방법은 Android와 iOS 모두에서 작동합니다.
선택적 매개변수가 포함된 새 버전
connectToProtectedWifiSSID({
ssid: string;
password: string | null;
isWEP?: boolean;
isHidden?: boolean;
timeout?: number
;}): Promise
Wi-Fi 네트워크에 연결할 수 없을 때 연결될 때 해결되거나 오류와 함께 거부되는 Promise를 반환합니다.
SSID
Type: string
연결할 Wi-Fi 네트워크의 SSID입니다.
password
Type: string
연결할 Wi-Fi 네트워크의 비밀번호입니다.
isWep
Type: boolean
iOS에서 사용됩니다. true인 경우 네트워크는 WEP Wi-Fi입니다. 그렇지 않으면 WPA 또는 WPA2 개인 Wi-Fi 네트워크입니다.
isHidden
Type: boolean
안드로이드에서 사용됩니다. true인 경우 해당 네트워크는 숨겨진 Wi-Fi 네트워크입니다.
timeout
새로운 버전만
Type: number
Android에서 시간 초과를 초 단위로 설정하는 데 사용됩니다. 기본값은 15초입니다.
Errors
- unavailableForOSVersion : iOS 11부터 NEHotspotConfigurationError를 사용할 수 있습니다.
- invalid : 알 수 없는 오류가 발생한 경우
- invalidSSID : SSID가 유효하지 않은 경우
- invalidSSIDPrefix : SSID 접두사가 잘못된 경우
- invalidPassphrase : 암호가 유효하지 않은 경우
- userDenied : 사용자가 요청한 네트워크 가입 요청을 취소한 경우
- locationPermissionDenied : iOS 13부터 위치 접근 권한이 거부됩니다
- locationPermissionRestricted : iOS 13부터 위치 접근 권한이 제한됩니다.
- couldNotDetectSSID : SSID를 감지할 수 없는 경우
- locationPermissionMissing : Android 6부터 Wi-Fi 검색을 위해서는 위치 권한을 부여해야 합니다.
- locationServicesOff : Android 6부터 Wi-Fi 네트워크를 검색하려면 위치 서비스가 켜져 있어야 합니다.
- couldNotEnableWifi : Android 10부터 앱에서 더 이상 Wi-Fi를 활성화할 수 없습니다. 사용자가 수동으로 이 작업을 수행해야 합니다.
- couldNotScan : Android 9부터는 포그라운드 앱에서 2분당 4번만 스캔할 수 있습니다.
- didNotFindNetwork : Wi-Fi 네트워크가 범위 내에 없으면 보안 유형을 알 수 없으며 WifiUtils는 네트워크 연결을 지원하지 않습니다.
- authenticationErrorOccurred : 연결을 시도하는 동안 인증 오류가 발생했습니다. 비밀번호가 올바르지 않거나 사용자가 다른 비밀번호로 저장된 네트워크 구성을 가지고 있을 수 있습니다!
- android10ImmediatelyDroppedConnection :OnePlus의 펌웨어 버그로 인해 일부 펌웨어 버전에서는 연결되지 않습니다. 추가 정보: ThanosFisherman/WifiUtils#63.
- timeoutOccurred : 시간 초과 기간 동안 연결할 수 없습니다. - 새로운 버전만
- unableToConnect : 알 수 없는 오류가 발생했을 때.
getCurrentWifiSSID(): Promise
현재 WiFi 네트워크의 SSID를 반환합니다.
- couldNotDetectSSID : 연결되거나 연결되지 않습니다.
다음 방법은 iOS에서만 작동합니다.
connectToSSID(ssid: string): Promise
connectToSSIDPrefix(ssid: string): Promise
disconnectFromSSID(ssid: string): Promise
connectToProtectedSSIDOnce(SSID: string, password: string, isWEP: boolean, joinOnce: boolean): Promise
connectToProtectedSSIDPrefix(SSIDPrefix: string, password: string, isWep: boolean): Promise
알려진 SSID 접두사를 일치시키되 전체 SSID가 없을 때 이 기능을 사용합니다. 시스템이 SSID 문자열이 주어진 접두사와 일치하는 여러 Wi-Fi 네트워크를 발견하면 신호 강도가 가장 큰 네트워크를 선택합니다.
SSIDPrefix
유형: string Wi-Fi 네트워크의 SSID와 일치하는 접두사 문자열입니다.
password
유형: string 연결할 와이파이 네트워크의 암호입니다.
isWep
유형: boolean iOS에서 사용됩니다. 예를 들어, 네트워크는 WEP Wi-Fi이고, 그렇지 않으면 WPA 또는 WPA2 개인 Wi-Fi 네트워크입니다.
joinOnce
유형: boolean iOS에서 사용됩니다. 옵션 매개 변수. 기본값: false. joinOnce를 true로 설정하면 핫스팟은 구성된 애플리케이션이 포그라운드에서 실행되는 동안에만 구성되고 연결된 상태로 유지됩니다. 다음 이벤트가 발생하면 핫스팟의 연결이 끊어지고 핫스팟의 구성이 제거됩니다.
오류:
unavailableForOSVersion: iOS 11부터는 NE Hotspot Configuration Error를 사용할 수 있습니다.
invalid: 알 수 없는 오류가 발생한 경우.
invalidSSID: SSID가 유효하지 않은 경우.
invalidSSIDPrefix: SSID 접두사가 잘못된 경우.
invalidPassphrase: 암호가 유효하지 않은 경우.
userDenied: 사용자가 요청한 네트워크 가입 요청을 취소한 경우.
locationPermissionDenied: iOS 13부터는 위치 허가가 거부됩니다.
locationPermissionRestricted: iOS 13부터는 위치 허가가 제한됩니다.
couldNotDetectSSID: SSID를 감지할 수 없는 경우.
unableToConnect: 알 수 없는 오류가 발생했을 때.
다음 방법은 Android에서만 작동합니다
loadWifiList(): Promise<Array<WifiEntry>>
근처 WiFI 네트워크 목록을 반환합니다.
오류:
reScanAndLoadWifiList(): Promise<Array<WifiEntry>>
loadWifiList 와 비슷합니다. 그러나 강제적으로 새로운 WiFi 검색을 시작하고 검색이 완료된 경우에만 결과를 전달합니다.
isEnabled(): Promise<boolean>
WiFi가 활성화되어 있는지 확인하는 방법.
const enabled = await WifiManager.isEnabled(); this.setState({wifiIsEnabled: enabled});
setEnabled(enabled: boolean)
사용자의 장치에서 WiFi를 켜거나 끄는 방법.
WifiManager.setEnabled(true); //set WiFi ON WifiManager.setEnabled(false); //set WiFi OFF
connectionStatus(): Promise<boolean>
장치가 현재 WiFi 네트워크에 연결되어 있는지 여부를 반환합니다.
disconnect()
현재 연결된 WiFi 네트워크의 연결을 끊습니다.
getBSSID(): Promise<string>
현재 연결된 WiFi 네트워크의 BSSID(기본 서비스 집합 식별자)를 반환합니다.
getCurrentSignalStrength(): Promise<number>
현재 연결된 WiFi 네트워크의 RSSI(수신 신호 강도 표시기)를 반환합니다.
getFrequency(): Promise<number>
현재 연결된 WiFi 네트워크의 주파수를 반환합니다.
getIP(): Promise<number>
현재 연결된 WiFi 네트워크의 IP를 반환합니다.
isRemoveWifiNetwork(ssid: String): Promise<boolean>
이 방법은 와이파이 네트워크 구성을 제거합니다. 해당 네트워크에 연결되어 있으면 연결이 끊어집니다.
오류:
locationPermissionMissing: Android 6부터 Wi-Fi에 대해 위치 허가가 필요합니다.
forceWifiUsage(useWifi: boolean): Promise<void>
권장되지 않습니다. forceWifiUsageWithOptions를 참조하십시오.
forceWifiUsageWithOptions(useWifi: boolean, options<Record<string, unknown>): Promise<void>
이를 사용하여 인터넷에 액세스할 수 없는 Wi-Fi 네트워크에 대한 API 호출을 실행합니다. IoT 장치의 커미셔닝에 유용합니다. 이렇게 하면 모든 앱 네트워크 요청이 (모바일 연결 대신) 네트워크로 라우팅됩니다. 앱이 와이파이 네트워크에서 연결이 끊어져도 모든 것을 와이파이로 계속 라우팅하므로 사용 후 다시 비활성화하는 것이 중요합니다.
옵션들
noInternet: Boolean: 와이파이 네트워크에 인터넷 연결이 없음을 나타냅니다.
Anuglar JS Git Commit 규칙이 사용됩니다. 자세한 내용은 https://gist.github.com/stephenparish/9941e89d80e2bc58a153#recognizing-unimportant-commits 을 참조하십시오.