- This topic has 1개 답변, 2명 참여, and was last updated 10 months, 1 week 전에 by Kobe.
-
글쓴이글
-
-
짱이 배참가자
- 글작성 : 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
}
2023-06-25 오후 6:45 #58713 -
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; } } }
참고 자료
2024-01-12 오후 12:58 #61088
-
-
글쓴이글
- 답변은 로그인 후 가능합니다.