WI-FI scan 질문 드립니다.

1 답변 글타래를 보이고 있습니다
  • 글쓴이
    • 짱이 배
      참가자
      • 글작성 : 1
      • 답글작성 : 0

      안녕하세요. IoT 프로젝트를 하고 있는데 도저히 답을 찾기 어려워 이 곳에 질문 드립니다.

      사용자 주변의 WI-FI 리스트를 가져오고 싶은데 iOS 14 버전 이후로 CNCopyCurrentNetworkInfo 가 Deprecated 되어

      어떻게 가져와야 할 지 방법을 찾지 못하고 있습니다. 

      구글링으로 많이 있는 예제로 구현을 해봐도 리스트를 가져오지 못해 14버전 이후로 어떻게 가져와야 될지 아시는 분이 계시다면 

      알려주시면 정말로 감사드리겠습니다 ㅠㅠ 

      struct NetworkInfo {

           var interface: String

           var succress: Bool = false

           var ssid: String?

           var bssid: String?

      }

      func fetchNetworkInfo() -> [NetworkInfo]? {

                if let interfaces: NSArray = CNCopySupportedInterfaces() {

                     var networkInfos = NetworkInfo

                     print(“interfaces: (interfaces)”)

                     for interface in interfaces {

                          let interfaceName = interface as! String

                          var networkInfo =  NetworkInfo(interface: interfaceName

                                                         , succress: false

                                                         , ssid: nil

                                                         , bssid:nil)

                          if let dict = CNCopyCurrentNetworkInfo(interfaceName as CFString) as NSDictionary? {

                               networkInfo.succress = true

                               networkInfo.bssid = dict[kCNNetworkInfoKeySSID as String] as? String

                               networkInfo.bssid = dict[kCNNetworkInfoKeyBSSID as String] as? String

                          }

                          networkInfos.append(networkInfo)

                     }

                     return networkInfos

                }

                return nil

           }

    • Kobe
      참가자
      • 글작성 : 0
      • 답글작성 : 2

      안녕하세요 🙂

      stack overflow에서 비슷한 질문을 한 게시글을 찾았습니다.

      질문은 다음과 같았습니다:

      “안녕하세요, 저는 연결된 Wi-Fi 네트워크의 데이터(SSID, BSSID)를 얻기 위해 CNCopyCurrentNetworkInfo를 사용하고 있습니다. 하지만 이 링크 CNCopyCurrentNetworkInfo 공식문서에 따르면 이 메소드는 Deprecated(더 이상 사용되지 않음)되었고,

      대신 HotspotHelper의 메소드인 fetchCurrentWithCompletionHandler 공식문서를 사용하는 것이 가능한 해결책으로 제시되어 있습니다.

      저는 HotspotHelper에서 사용되는 권한 (com.apple.developer.networking.HotspotHelper)을 받기 위해 networkextension@apple.com에 이메일을 보냈지만 거절당했습니다.

      다른 가능한 해결책이 있을까요?”

      그에 대한 답변은 아래와 같았습니다:

      apple developer forums 답변을 받았습니다.

      fetchCurrentWithCompletionHandler: 는 Hotspot Helper 권한을 요구하지 않습니다.

      불행히도 이 사실은 공식적으로 문서화되어 있지 않습니다 (r. 74976266).

      다행히, <NetworkExtension/NEHotspotNetwork.h>의 문서 주석에 이 메소드에 대한 많은 유용한 정보가 있습니다.

      여기 구현된 예시가 있습니다:

      if (@available(iOS 14.0, *)) {
      [NEHotspotNetwork fetchCurrentWithCompletionHandler:^(NEHotspotNetwork * _Nullable currentNetwork) {
      NSString *strSSID = [currentNetwork SSID];
      }];
      } else {
      
      NSArray *ifs = (__bridge_transfer NSArray *)CNCopySupportedInterfaces();
      
      NSDictionary *info;
      
      for (NSString *ifnam in ifs) {
      
      info = (__bridge_transfer NSDictionary *)CNCopyCurrentNetworkInfo((__bridge CFStringRef)ifnam);
      
      if (info && [info count]) {
      
      NSString *strSSID = [info objectForKey:@"SSID"];
      break;
      }
      }
      }
      

      참고 자료

1 답변 글타래를 보이고 있습니다
  • 답변은 로그인 후 가능합니다.

logo landscape small

사업자번호 : 743-81-02195
통신판매업 신고번호 : 제 2022-충북청주-1278 호
고객센터 : 카카오톡채널 @yagom