중요 :이 점검은 항상 비동기 적으로 수행 해야합니다 . 아래 답변의 대부분은 동기식이므로 그렇지 않으면 앱이 중지됩니다.
빠른
1) CocoaPods 또는 Carthage를 통해 설치 하십시오 : https://github.com/ashleymills/Reachability.swift
2) 폐쇄를 통한 접근성 테스트
let reachability = Reachability()!
reachability.whenReachable = { reachability in
if reachability.connection == .wifi {
print("Reachable via WiFi")
} else {
print("Reachable via Cellular")
}
}
reachability.whenUnreachable = { _ in
print("Not reachable")
}
do {
try reachability.startNotifier()
} catch {
print("Unable to start notifier")
}
목표 -C
1) SystemConfiguration
프로젝트에 프레임 워크를 추가 하지만 어디서나 포함시키는 것에 대해 걱정하지 마십시오.
2)의 토니 만의 버전을 추가 Reachability.h
하고 Reachability.m
프로젝트에 (여기 : https://github.com/tonymillion/Reachability )
3) 인터페이스 섹션 업데이트
#import "Reachability.h"
// Add this to the interface in the .m file of your view controller
@interface MyViewController ()
{
Reachability *internetReachableFoo;
}
@end
4) 그런 다음이 메소드를 호출 할 수있는 뷰 컨트롤러의 .m 파일에 구현하십시오.
// Checks if we have an internet connection or not
- (void)testInternetConnection
{
internetReachableFoo = [Reachability reachabilityWithHostname:@"www.google.com"];
// Internet is reachable
internetReachableFoo.reachableBlock = ^(Reachability*reach)
{
// Update the UI on the main thread
dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"Yayyy, we have the interwebs!");
});
};
// Internet is not reachable
internetReachableFoo.unreachableBlock = ^(Reachability*reach)
{
// Update the UI on the main thread
dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"Someone broke the internet :(");
});
};
[internetReachableFoo startNotifier];
}
중요 참고 :Reachability
다른 프로젝트와 이름 충돌로 실행할 수 있도록 클래스를 프로젝트에 가장 많이 사용되는 클래스 중 하나입니다. 이 경우, 당신은 쌍 중 하나의 이름을 변경해야 Reachability.h
하고Reachability.m
문제를 해결하려면 파일 파일 합니다.
참고 : 사용 하는 도메인은 중요하지 않습니다. 모든 도메인에 대한 게이트웨이를 테스트하고 있습니다.
return (BOOL)URLString;
, 또는 더 나은,return !!URLString
또는return URLString != nil