본문 바로가기
Study/Apple Swift

[SWIFT] 네트워크 연결되어 있는지 확인하기

by Answer Choi 2016. 1. 21.
반응형


IOS는 안드로이드와 많이 다르네용.


일단 몇일 해보니 좀 어려운듯, 정보도 많이 없고.


네트워크 연결 여부 알아보는 샘플코드는 Stack Over Flow를 참고 했습니다.


예전엔 Reachability를 썼던 것 같은데 지금은 SCNetworkReachability를 써야하네용.


첫화면을 스플래쉬로 사용하여 3초후 페이지가 바뀝니다.


그리고 바뀐페이지에서는 네트워크가 연결되어있는지 여부를 판단하여 Text로 나타나게 하였습니다.


타이머는 이전 포스팅에서 했으니 넘어가겠습니다.


타이머를 작동시켜 3초후 segue를 이용하여 오른쪽의 페이지가 보여지게 됩니다.


1
2
3
4
5
if(connectedToNetwork()){
    networkText.text="Conneted Network"
}else{
    networkText.text="NotConneted Network"
}
cs


그리고 네트워크가 연결되었는지를 판단하여 연결여부를 텍스트로 나타나게 합니다.


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
func connectedToNetwork() -> Bool {
    
    var zeroAddress = sockaddr_in()
    zeroAddress.sin_len = UInt8(sizeofValue(zeroAddress))
    zeroAddress.sin_family = sa_family_t(AF_INET)
    
    guard let defaultRouteReachability = withUnsafePointer(&zeroAddress, {
        SCNetworkReachabilityCreateWithAddress(nil, UnsafePointer($0))
    }) else {
        return false
    }
    
    var flags : SCNetworkReachabilityFlags = []
    
    if !SCNetworkReachabilityGetFlags(defaultRouteReachability, &flags) {
        return false
    }
    
    let isReachable = flags.contains(.Reachable)
    let needsConnection = flags.contains(.ConnectionRequired)
    return (isReachable && !needsConnection)
}
cs


이 코드가 네트워크 연결여부를 판단하여 연결되었으면 true를 안되었으면 false를 반환해 줍니다.


Line 7 : guard는 if문보다 강력한 if문의 역할을 한다고 합니다.


자세한건 guard 알아보기


그리고 중요한건 SystemConfiguration을 import해줘야 합니다.


1
import SystemConfiguration
cs


실행시켜서 연결이 되면 아래와 같은 화면이 나타납니다.



반응형

'Study > Apple Swift' 카테고리의 다른 글

[SWIFT] 현재시간 구하기  (0) 2016.01.26
[SWIFT] Floating 연산 오류(?)  (0) 2016.01.22
[SWIFT] 화면전환 (데이터 전달)  (0) 2016.01.19
[ SWIFT ] 타이머 만들기  (0) 2016.01.18
swift 간단한 Text 입력하기  (0) 2016.01.14

인기글