2011-11-11 9 views
7

मैं वर्तमान में viewDidLoad पर नेटवर्क कनेक्शन की जाँच कर रहा हूँ इस का उपयोग करते हुए:पहुंच योग्यता के साथ नेटवर्क में परिवर्तन का पता कैसे लगाया जाए?

-(BOOL)reachable { 
    ReachabilityDRC *r = [ReachabilityDRC reachabilityWithHostName:@"google.com"]; 
    NetworkStatus internetStatus = [r currentReachabilityStatus]; 
    if(internetStatus == NotReachable) { 
     return NO; 
    } 
    return YES; 
} 

लेकिन मैं यह भी अगर वहाँ नेटवर्क का एक परिवर्तन है, इस तरह के रूप वाईफाई गिरा दिया, या वाईफाई वापस आ गया है सूचना प्राप्त करना चाहते, तो मैं कर सकते हैं तदनुसार बदलता है।

मैं ऐसा कुछ करने के लिए अपनी विधि कैसे समायोजित कर सकता हूं?

+0

संभावित डुप्लिकेट: http://stackoverflow.com/questions/784582/easiest-way-to-determine-whether-iphone-internet-connection-is- उपलब्ध – 0x8badf00d

उत्तर

6

एक अन्य संभावित समाधान "आवेदन didfinishlaunching" में एक एन एस अधिसूचना को जोड़ने के लिए है:

Reachability *reachability = [Reachability reachabilityForInternetConnection]; 
    [reachability startNotifier]; 

    NetworkStatus remoteHostStatus = [reachability currentReachabilityStatus]; 

    if(remoteHostStatus == NotReachable) { 
     //Do something 
    } 
    else if (remoteHostStatus == ReachableViaWiFi) { 
    // Do something 
} 
    else{ 

// Else do something else 
} 
+1

यह इरादे के अनुसार काम नहीं करेगा। Reachability प्रारंभिकरण और startNotifier appDidFinishLaunching में जाना चाहिए, क्योंकि अगर आप नोटिफ़ायर प्रारंभ नहीं करते हैं तो चेकफोर रीचैबिलिटी नहीं कहा जाएगा। –

0

मैं गम्यता के लिए उत्कृष्ट विस्तार का उपयोग किया है:

[[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(checkForReachability) name:kReachabilityChangedNotification object:nil]; 

और checkForReachability विधि में ऐसा कक्षा जो डोनहो डिजाइन समूह ने एक साथ रखा है। इसमें अधिसूचनाएं हैं जो नेटवर्क स्थिति में परिवर्तन होने पर आपको सतर्क होने की अनुमति देती हैं।

http://blog.ddg.com/?p=24

गुड लक

9

1- आपके प्रोजेक्ट में SystemConfiguration.framework जोड़ें। से GitHub

Reachability.h 
Reachability.m 

3-

2- डाउनलोड निम्न फ़ाइलें अपनी परियोजनाओं में इन फ़ाइलों को जोड़े

4- YourViewController.h

#import <UIKit/UIKit.h> 

@class Reachability; 

5- में @class Reachability; जोड़ने चर Reachability* internetReachable;YourViewController.h में

#import <UIKit/UIKit.h> 

@class Reachability; 

@interface YourViewController : UIViewController { 
    Reachability* internetReachable; 
} 

6- Reachability.h-(void)ViewDidLoad में YourViewController.m

#import "YourViewController.h" 
#import "Reachability.h" 

7- ऐड निम्नलिखित लाइनों में में YourViewController.m

-(void)ViewDidLoad { 
    [[NSNotificationCenter defaultCenter] 
         addObserver:self 
         selector:@selector(checkNetworkStatus:) 
         name:kReachabilityChangedNotification 
         object:nil]; 

    internetReachable = [Reachability reachabilityForInternetConnection]; 
    [internetReachable startNotifier]; 
} 

8- ऐड समारोह पालन करने के बाद -(void)viewDidLoad

-(void) checkNetworkStatus:(NSNotification *)notice 
{ 
    // called after network status changes 
    NetworkStatus internetStatus = [internetReachable currentReachabilityStatus]; 
    switch (internetStatus) 
    { 
     case NotReachable: 
     { 
      NSLog(@"The internet is down."); 
      break; 
     } 
     case ReachableViaWiFi: 
     { 
      NSLog(@"The internet is working via WIFI."); 
      break; 
     } 
     case ReachableViaWWAN: 
     { 
      NSLog(@"The internet is working via WWAN."); 
      break; 
     } 
    } 
} 

अब पहले से जोड़ने वाई इंटरनेट कनेक्शन का परिवर्तन आप लॉग इन कंसोल देखेंगे।

+1

@ सलीम, एक आकर्षण की तरह मजाक .... धन्यवाद आदमी –