투케이2K

180. (Objective-C/objc) [간단 소스] NEHotspotConfigurationManager 사용해 특정 와이파이 SSID , PW 입력 후 다이렉트 AP 연결 본문

Objective-C

180. (Objective-C/objc) [간단 소스] NEHotspotConfigurationManager 사용해 특정 와이파이 SSID , PW 입력 후 다이렉트 AP 연결

투케이2K 2025. 2. 1. 10:24

[개발 환경 설정]

개발 툴 : XCODE

개발 언어 : OBJECTIVE-C

 

[소스 코드]

// --------------------------------------------------------------------------------------
[개발 및 테스트 환경]
// --------------------------------------------------------------------------------------

- 언어 : Objective-c

- 개발 툴 : Xcode

- 기술 구분 : 간단 소스 / NEHotspotConfigurationManager / WIFI / AP / SSID / PW

- 사전 권한 설정 : info.plist

  <key>NSLocationWhenInUseUsageDescription</key>
  <string>앱에서 Wi-Fi 연결을 설정하려면 위치 권한이 필요합니다.</string>

- 사전 Xcode 프로젝트에서 유료 결제 개발자 계정 사용 Capabillity Hotspot Configuration 사용 설정

  >> https://blog.naver.com/kkh0977/223669166907

- 사전 Xcode 프로젝트에서 Capabillity 개발 권한 추가 entitlements 속성 key , value 값 확인 방법

  >> https://blog.naver.com/kkh0977/223669259799

// --------------------------------------------------------------------------------------






// --------------------------------------------------------------------------------------
[호출 방법 소스 코드]
// --------------------------------------------------------------------------------------

// [WiFiManager 클래스 객체 생성 수행]
WiFiManager *wifiManager = [[WiFiManager alloc] init];

// [특정 WIFI 와이파이 SSID , PW 지정 후 다이렉트 연결 수행]
[wifiManager connectToWiFiWithSSID:@"TwokSSID" password:@"TwokPassword" isWEP:NO];

// --------------------------------------------------------------------------------------






// --------------------------------------------------------------------------------------
[클래스 소스 코드]
// --------------------------------------------------------------------------------------

#import <Foundation/Foundation.h>
#import <NetworkExtension/NetworkExtension.h>

@interface WiFiManager : NSObject

- (void)connectToWiFiWithSSID:(NSString *)ssid password:(NSString *)password isWEP:(BOOL)isWEP;

@end

@implementation WiFiManager


// [특정 와이파이 SSID , PW 입력해 다이렉트 AP 연결 수행]
- (void)connectToWiFiWithSSID:(NSString *)ssid password:(NSString *)password isWEP:(BOOL)isWEP {
    
    // [Ios 11 이상 사용 가능 분기 처리]
    if (@available(iOS 11.0, *)) {
        
        // [Wi-Fi 구성 생성]
        NEHotspotConfiguration *configuration;
        if (password.length > 0) {
            configuration = [[NEHotspotConfiguration alloc] initWithSSID:ssid passphrase:password isWEP:isWEP];
        } else {
            configuration = [[NEHotspotConfiguration alloc] initWithSSID:ssid];
        }
        
        // [자동 연결 설정]
        configuration.joinOnce = NO; // [YES 로 설정하면 한 번만 연결]
        
        // [Wi-Fi 연결]
        [[NEHotspotConfigurationManager sharedManager] applyConfiguration:configuration completionHandler:^(NSError * _Nullable error) {
            if (error != nil) {
                if ([error.domain isEqualToString:NEHotspotConfigurationErrorDomain] && error.code == NEHotspotConfigurationErrorAlreadyAssociated) {
                    NSLog(@"WiFiManager :: connectToWiFiWithSSID :: 이미 해당 Wi-Fi 에 연결되어 있습니다 :: %@", ssid);
                } else {
                    NSLog(@"WiFiManager :: connectToWiFiWithSSID :: Wi-Fi 연결 오류 :: %@", error.localizedDescription);
                }
            } else {
                NSLog(@"WiFiManager :: connectToWiFiWithSSID :: Wi-Fi 연결 성공 :: %@", ssid);
            }
        }];

    } else {
        NSLog(@"WiFiManager :: connectToWiFiWithSSID :: iOS 11 이상에서만 지원됩니다");
    }
}

@end

// --------------------------------------------------------------------------------------






// --------------------------------------------------------------------------------------
[참고 사이트]
// --------------------------------------------------------------------------------------

[Ios] 기기 QR 스캔 및 스키마 scheme 정보 활용 다이렉트 AP 연결 로직

https://blog.naver.com/kkh0977/223646728115?trackingCode=blog_bloghome_searchlist


[NEHotspotConfigurationManager 간단 설명 및 사용 옵션 정리]

https://blog.naver.com/kkh0977/223679071590?trackingCode=blog_bloghome_searchlist


[NEHotspotConfigurationManager 사용해 특정 WIFI 와이파이 다이렉트 연결 및 에러 발생 체크 분기 처리 수행]

https://blog.naver.com/kkh0977/223669296624?trackingCode=blog_bloghome_searchlist

// --------------------------------------------------------------------------------------
 
반응형
Comments