WiFi 지원 기능이 활성화되어 있는지 확인하려고합니다. 일부 데이터를 얻기 위해 내 액세스 포인트에 연결되어있을 때 문제가 있습니다. 연결 상태가 불량하면 셀룰러 데이터가 사용되며 액세스 포인트가 간섭합니다. 이 옵션이 활성화되어 있는지 확인하는 방법이 있습니까?iOS WiFi 지원 기능이 활성화되어 있는지 확인하십시오.
답변
좋아, 조금 도와 줄 수있을 것 같아. 내가 생각하기에, 당신은 check SCNetworkReachabilityFlags
을 필요로합니다. 플래그의 특정 조합이 될 것입니다. WI-FI와 Cellular를 사용하고 있음을 나타내는 플래그의 조합을 지원하는 설명서를 찾지 못했습니다. 또한 해당 설정을 직접 확인할 수있는 설명서를 찾지 못했습니다.
이전 경험에 비추어 볼 때 Apple은 아마도 직접 설정을 확인할 수있는 방법이 없을 것입니다.
그럼 ... 여기에 우리를 시작할 수있는 간단한 코드가 있습니까?
public enum InternetStatus {
case notReachable
case reachableViaWWAN
case reachableViaWiFi
case wifiAssist
}
그리고 원하는 확장명으로 정의 할 수있는 변수. (어쩌면 URLSession
?)
static public var internetStatus: InternetStatus {
var zeroAddress = sockaddr_in()
zeroAddress.sin_len = UInt8(MemoryLayout<sockaddr_in>.size)
zeroAddress.sin_family = sa_family_t(AF_INET)
guard let defaultRouteReachability = withUnsafePointer(to: &zeroAddress, {
$0.withMemoryRebound(to: sockaddr.self, capacity: 1) {
SCNetworkReachabilityCreateWithAddress(nil, $0)
}
}) else {
return .notReachable
}
var flags: SCNetworkReachabilityFlags = []
if flags.contains(.connectionOnDemand) {
print("Connection On Demand")
}
if flags.contains(.connectionAutomatic) {
print("Connection Automatic")
}
if flags.contains(.connectionOnTraffic) {
print("Connection On Traffic")
}
if flags.contains(.connectionRequired) {
print("Connection Required")
}
if flags.contains(.interventionRequired) {
print("Intervention Required")
}
if flags.contains(.isDirect) {
print("isDirect")
}
if flags.contains(.isLocalAddress) {
print("Local Address")
}
if flags.contains(.isWWAN) {
print("WWAN")
}
if flags.contains(.reachable) {
print("Reachable")
}
if flags.contains(.transientConnection) {
print("Transient Connection")
}
if !SCNetworkReachabilityGetFlags(defaultRouteReachability, &flags) {
return .notReachable
}
if flags.contains(.reachable) == false {
// The target host is not reachable.
return .notReachable
}
else if flags.contains(.isWWAN) == true {
// WWAN connections are OK if the calling application is using the CFNetwork APIs.
return .reachableViaWWAN
}
else if flags.contains(.connectionRequired) == false {
// If the target host is reachable and no connection is required then we'll assume that you're on Wi-Fi...
return .reachableViaWiFi
}else if flags.contains(.connectionRequired) && flags.contains(.isWWAN) {
// Not sure here, maybe Wi-Fi assist is currently being utilized? Will need to test.
return .wifiAssist
}else if (flags.contains(.connectionOnDemand) == true || flags.contains(.connectionOnTraffic) == true) && flags.contains(.interventionRequired) == false {
// The connection is on-demand (or on-traffic) if the calling application is using the CFSocketStream or higher APIs and no [user] intervention is needed
return .reachableViaWiFi
}
else {
return .notReachable
}
}
당신이 Wi-Fi를 활성화 지원하고 플래그를 관찰 알고 곳 트릭 설정에서 디버깅하는 것입니다. 아니면 나보다 똑똑하고 그들이 무엇인지 압니다. 누군가가 지적하면이 대답을 업데이트하거나 올바른 플래그 조합을 알아낼 것입니다.
감사합니다. Jon, 도움이되었습니다. 우리 팀의 누군가가 이것을 가이드로 사용하여 뭔가를 얻을 수있었습니다. 애플이 이것에 대한 공식적인 지침을 제공하기를 바랍니다. 그동안 레이다 문제는 ... –
@NicholasHart 듣기 좋게! 코드를 게시하거나 게시물을 편집하거나 수정 사항을 보내 주시면 완벽한 답변을 드릴 수 있습니다. –
- 1. 프록시가 활성화되어 있는지 확인하십시오.
- 2. 다운로드가 활성화되어 있는지 확인하십시오.
- 3. BlackBerry gps가 활성화되어 있는지 확인하십시오.
- 4. Cassandra에서 JNA가 활성화되어 있는지 확인하십시오.
- 5. 여러 쿠키가 활성화되어 있는지 확인하십시오.
- 6. PHP 세션이 활성화되어 있는지 확인하십시오.
- 7. wifi 어댑터가 활성화되어 있는지 검색하는 배치 파일
- 8. 복사 및 붙여 넣기가 활성화되어 있는지 확인하십시오.
- 9. VimL : 기능이 있는지 확인하십시오.
- 10. 원격 데스크톱이 일괄 처리로 활성화되어 있는지 확인하십시오.
- 11. 양식 열기시 Winforms BackgroundWorker가 활성화되어 있는지 확인하십시오.
- 12. 프로그램 내에서 hdd가 활성화되어 있는지 확인하십시오.
- 13. 서버에서 PATH_INFO가 활성화되어 있는지 PHP로 확인하십시오.
- 14. 장치에서 iTunes Match가 활성화되어 있는지 확인하십시오.
- 15. CSS 스타일을 사용하여 쿠키가 활성화되어 있는지 확인하십시오.
- 16. 인터넷 익스플로러에서 쿠키가 활성화되어 있는지 확인하십시오.
- 17. 어떤 CSS 호버 상태가 활성화되어 있는지 확인하십시오.
- 18. Pylons 응용 프로그램에서 디버그가 활성화되어 있는지 확인하십시오.
- 19. Windows 업데이트가 활성화되어 있는지 .NET에서 확인하십시오.
- 20. 가능성있는 파이프 라이닝이 활성화되어 있는지 확인하십시오.
- 21. Magento - 템플릿 파일에서 카테고리가 활성화되어 있는지 확인하십시오.
- 22. Zend 모듈이 설치되어 있고 활성화되어 있는지 확인하십시오.
- 23. PowerPoint 스마트 가이드가 활성화되어 있는지 확인하십시오.
- 24. Codeigniter - 세션과 쿠키가 활성화되어 있는지 확인하십시오.
- 25. 안드로이드에서 인터넷 연결이 활성화되어 있는지 확인하십시오.
- 26. 서버의 현재 시간대에 DST가 활성화되어 있는지 확인하십시오.
- 27. Windows에서 IPv6이 활성화되어 있는지 프로그래밍 방식으로 확인하십시오.
- 28. Windows 양식 버튼이 활성화되어 있는지 확인하십시오.
- 29. Android 애플리케이션을 사용하여 블루투스가 활성화되어 있는지 확인하십시오.
- 30. CredSSP가 Powershell을 통해 원격으로 활성화되어 있는지 확인하십시오.
wifi를 확인 하시겠습니까? 아니면 올바르게 설정되어 있지 않습니까? –
아니요, 설정 -> 셀룰러 -> WiFi 지원이 활성화되어 있는지 확인하고 싶습니다. – Flipper