Quan trọng : Kiểm tra này phải luôn được thực hiện không đồng bộ. Phần lớn các câu trả lời dưới đây là đồng bộ, vì vậy hãy cẩn thận nếu không bạn sẽ đóng băng ứng dụng của mình.
Nhanh
1) Cài đặt qua Cốc Cốc hoặc Carthage: https://github.com/ashleymills/Reachability.swift
2) Kiểm tra khả năng tiếp cận thông qua việc đóng cửa
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")
}
Mục tiêu-C
1) Thêm SystemConfiguration
khung cho dự án nhưng đừng lo lắng về việc đưa nó vào bất cứ đâu
2) Thêm phiên bản Reachability.h
và Reachability.m
dự án của Tony Million (tìm thấy tại đây: https://github.com/tonymillion/Reachability )
3) Cập nhật phần giao diện
#import "Reachability.h"
// Add this to the interface in the .m file of your view controller
@interface MyViewController ()
{
Reachability *internetReachableFoo;
}
@end
4) Sau đó, thực hiện phương thức này trong tệp .m của trình điều khiển xem của bạn mà bạn có thể gọi
// 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];
}
Lưu ý quan trọng: Các Reachability
lớp là một trong những lớp học sử dụng nhiều nhất trong các dự án, do đó bạn có thể chạy vào đặt tên xung đột với các dự án khác. Nếu điều này xảy ra, bạn sẽ phải đổi tên một trong các cặp Reachability.h
vàReachability.m
tệp thành một thứ khác để giải quyết vấn đề.
Lưu ý: Tên miền bạn sử dụng không quan trọng. Nó chỉ đang thử nghiệm một cổng vào bất kỳ miền nào.
return (BOOL)URLString;
, hoặc thậm chí tốt hơn,return !!URLString
hoặcreturn URLString != nil