iOS
नेटवर्क कनेक्टिविटी के लिए जाँच करना
खोज…
टिप्पणियों
Reachability.h
और Reachability.m
के लिए स्रोत कोड Apple के डेवलपर प्रलेखन साइट पर पाया जा सकता है।
चेतावनियां
अन्य प्लेटफार्मों के विपरीत, Apple को iOS डिवाइस के नेटवर्क की स्थिति निर्धारित करने और ऊपर दिए गए इन कोड उदाहरणों की पेशकश करने के लिए API का एक मानक सेट प्रदान करना बाकी है। स्रोत फ़ाइल समय के साथ बदल जाती है, लेकिन एक बार एक ऐप प्रोजेक्ट में आयात होने के बाद, वे डेवलपर्स द्वारा शायद ही कभी अपडेट किए जाते हैं।
इस कारण से अधिकांश ऐप डेवलपर कई Github / Cocoapod में से किसी एक का उपयोग करने के लिए पुस्तकालयों को पुन: उपयोग करने की प्रवृत्ति रखते हैं।
उपयोगकर्ता के इशारे पर किए गए अनुरोधों के लिए भी Apple अनुशंसा करता है, कि आप हमेशा असफलता का निदान करने या कनेक्शन के वापस आने के लिए प्रतीक्षा करने के लिए Reachability / SCNetworkReachability का उपयोग करने से पहले हमेशा एक कनेक्शन का प्रयास करें ।
एक पुनर्संयोजन श्रोता बनाना
Apple का रीचैबिलिटी क्लास समय-समय पर नेटवर्क की स्थिति की जाँच करता है और पर्यवेक्षकों को परिवर्तनों के प्रति सचेत करता है।
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");
}
}
चेतावनी जब कनेक्शन एक वाईफ़ाई या सेलुलर नेटवर्क बन जाता है
- (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
}
उद्देश्य सी:
हम कोड की कुछ पंक्तियों के भीतर नेटवर्क कनेक्टिविटी की जांच कर सकते हैं:
-(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;
}
}