수색…
비고
Reachability.h
및 Reachability.m
대한 소스 코드는 Apple의 개발자 설명서 사이트 에서 찾을 수 있습니다.
주의 사항
다른 플랫폼과 달리, Apple은 아직 iOS 기기의 네트워크 상태를 파악하고 위에 링크 된 코드 예제 만 제공하는 표준 API 세트를 제공하지 않습니다. 소스 파일은 시간이 지남에 따라 변경되지만 일단 앱 프로젝트로 가져 오면 개발자가 거의 업데이트하지 않습니다.
이러한 이유로 대부분의 앱 개발자는 접근성을 위해 많은 Github / Cocoapod 유지 관리 라이브러리 중 하나를 사용하는 경향이 있습니다.
Apple은 Reachability / SCNetworkReachability를 사용하여 오류를 진단하거나 연결이 반환되기를 기다리기 전에 항상 사용자가 요청한 연결에 대해 먼저 연결을 시도 할 것을 권장합니다.
도달 가능성 리스너 만들기
Apple의 Reachability 클래스는 주기적으로 네트워크 상태를 확인하고 관찰자에게 변경 사항을 알립니다.
Reachability *internetReachability = [Reachability reachabilityForInternetConnection];
[internetReachability startNotifier];
네트워크 변경에 관찰자 추가
Reachability
은 NSNotification
메시지를 사용하여 네트워크 상태가 변경되었을 때 관찰자에게 경고합니다. 당신의 수업은 관찰자가되어야합니다.
[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityChanged:) name:kReachabilityChangedNotification object:nil];
클래스의 다른 곳에서 메소드 서명 구현
- (void) reachabilityChanged:(NSNotification *)note {
//code which reacts to network changes
}
네트워크를 사용할 수 없으면 경고
- (void)reachabilityChanged:(NSNotification *)note {
Reachability* reachability = [note object];
NetworkStatus netStatus = [reachability currentReachabilityStatus];
if (netStatus == NotReachable) {
NSLog(@"Network unavailable");
}
}
연결이 WIFI 또는 셀룰러 네트워크가되면 경고
- (void)reachabilityChanged:(NSNotification *)note {
Reachability* reachability = [note object];
NetworkStatus netStatus = [reachability currentReachabilityStatus];
switch (netStatus) {
case NotReachable:
NSLog(@"Network unavailable");
break;
case ReachableViaWWAN:
NSLog(@"Network is cellular");
break;
case ReachableViaWiFi:
NSLog(@"Network is WIFI");
break;
}
}
네트워크에 연결되어 있는지 확인
빠른
import SystemConfiguration
/// Class helps to code reuse in handling internet network connections.
class NetworkHelper {
/**
Verify if the device is connected to internet network.
- returns: true if is connected to any internet network, false if is not
connected to any internet network.
*/
class func isConnectedToNetwork() -> Bool {
var zeroAddress = sockaddr_in()
zeroAddress.sin_len = UInt8(sizeofValue(zeroAddress))
zeroAddress.sin_family = sa_family_t(AF_INET)
let defaultRouteReachability = withUnsafePointer(&zeroAddress) {
SCNetworkReachabilityCreateWithAddress(nil, UnsafePointer($0))
}
var flags = SCNetworkReachabilityFlags()
if !SCNetworkReachabilityGetFlags(defaultRouteReachability!, &flags) {
return false
}
let isReachable = (flags.rawValue & UInt32(kSCNetworkFlagsReachable)) != 0
let needsConnection = (flags.rawValue & UInt32(kSCNetworkFlagsConnectionRequired)) != 0
return (isReachable && !needsConnection)
}
}
if NetworkHelper.isConnectedToNetwork() {
// Is connected to network
}
목표 -C :
몇 줄의 코드에서 네트워크 연결을 확인할 수 있습니다.
-(BOOL)isConntectedToNetwork
{
Reachability *networkReachability = [Reachability reachabilityForInternetConnection];
NetworkStatus networkStatus = [networkReachability currentReachabilityStatus];
if (networkStatus == NotReachable)
{
NSLog(@"There IS NO internet connection");
return false;
} else
{
NSLog(@"There IS internet connection");
return true;
}
}
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow