[swift] Reachability를 사용한 로그인 여부 확인하기
하나의 핵심적인 기능은 앱 사용자가 로그인 상태인지 확인하는 것입니다. 이를 위해 네트워크 상태를 체크하여 오프라인인 경우에는 로그인 버튼을 비활성화시켜야 합니다. 이때 Reachability를 사용하면 네트워크 연결 상태를 간단하게 확인할 수 있습니다.
Reachability 클래스 추가하기
다음과 같이 Reachability 클래스를 추가합니다. 이 예제에서는 Reachability.swift 파일을 사용합니다.
import Foundation
import SystemConfiguration
public class Reachability {
class func isConnectedToNetwork() -> Bool {
var zeroAddress = sockaddr_in()
zeroAddress.sin_len = UInt8(MemoryLayout.size(ofValue: zeroAddress))
zeroAddress.sin_family = sa_family_t(AF_INET)
guard let defaultRouteReachability = withUnsafePointer(to: &zeroAddress, {
$0.withMemoryRebound(to: sockaddr.self, capacity: 1) { zeroSockAddress in
SCNetworkReachabilityCreateWithAddress(nil, zeroSockAddress)
}
}) 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)
}
}
Reachability를 사용하여 네트워크 상태 확인하기
앱의 뷰 컨트롤러에서 다음 코드를 사용하여 네트워크 상태를 확인하고 로그인 버튼을 활성화/비활성화시킬 수 있습니다.
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var loginButton: UIButton!
override func viewDidLoad() {
super.viewDidLoad()
// Reachability를 사용하여 네트워크 상태 확인
if Reachability.isConnectedToNetwork() {
loginButton.isEnabled = true
} else {
loginButton.isEnabled = false
}
}
}
위의 예제에서는 Reachability 클래스의 isConnectedToNetwork()
메서드를 사용하여 네트워크 상태를 확인합니다. 만약 네트워크에 연결되어 있으면 로그인 버튼을 활성화시키고, 그렇지 않으면 비활성화시킵니다.
이제 앱이 로그인 상태일 때만 로그인 버튼을 활성화할 수 있으며, 네트워크 연결 상태에 따라 적절한 조치를 취할 수 있습니다.
더 많은 정보 및 상세한 사용법은 Reachability 라이브러리의 문서를 참고하세요.