2013-07-23 2 views
9

हाय मैं, जब भी उपयोगकर्ता इस मैं जोड़ लिया है सेब गम्यता वर्ग के लिए अपने आवेदन में एक नेटवर्क कनेक्टिविटी हो जाता है और नीचे टुकड़ा मैं अपने AppDelegate वर्ग didFinishLaunchingWithOptions विधि में उपयोग कर रहा हूँ है पर कब्जा करने केआईओएस पहुंच योग्यता कक्षा से नेटवर्क कनेक्शन अधिसूचना में परिवर्तन कैसे प्राप्त करें?

Reachability* reachability = [Reachability reachabilityForInternetConnection]; 
     [reachability startNotifier]; 
     [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(reachabilityChanged:) name:kReachabilityChangedNotification object:nil]; 

और मेरे reachabilityChanged चयनकर्ता चाहते हैं विधि

- (void)reachabilityChanged:(NSNotification*)notification 
{ 
    Reachability* reachability = notification.object; 
    if(reachability.currentReachabilityStatus == NotReachable) 
     NSLog(@"Internet off"); 
    else 
     NSLog(@"Internet on"); 
} 

नीचे के रूप में है, लेकिन यहाँ मैं अधिसूचना के किसी भी प्रकार जब मैं अपने हवाई जहाज मोड बंद है और जब मैं अपने फोन में एक नेटवर्क कनेक्टिविटी मिल नहीं मिल रहा है।

क्या मुझे कुछ याद आ रही है?

+0

यह http://stackoverflow.com/a/10184617/1635315 देखें। यह वास्तव में आपकी मदद करेगा। – iKT

उत्तर

6

शायद तुम startnotifier से पहले पर्यवेक्षक जोड़ना चाहिए

[[NSNotificationCenter defaultCenter] addObserver: self selector: @selector(handleNetworkChange:) name: kReachabilityChangedNotification object: nil]; 
reachability = [Reachability reachabilityForInternetConnection]; 
[reachability startNotifier]; 
13

मैं AppDelegate में एक चर का प्रयोग कर एक bool

@property (nonatomic, assign) BOOL hasInet; 

मीटर

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions 
{ 
    [self setUpRechability]; 
} 


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

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

    NetworkStatus remoteHostStatus = [reachability currentReachabilityStatus]; 

    if   (remoteHostStatus == NotReachable)  {NSLog(@"no");  self.hasInet-=NO; } 
    else if  (remoteHostStatus == ReachableViaWiFi) {NSLog(@"wifi"); self.hasInet-=YES; } 
    else if  (remoteHostStatus == ReachableViaWWAN) {NSLog(@"cell"); self.hasInet-=YES; } 

} 

- (void) handleNetworkChange:(NSNotification *)notice 
{ 
    NetworkStatus remoteHostStatus = [reachability currentReachabilityStatus]; 

    if   (remoteHostStatus == NotReachable)  {NSLog(@"no");  self.hasInet-=NO; } 
    else if  (remoteHostStatus == ReachableViaWiFi) {NSLog(@"wifi"); self.hasInet-=YES; } 
    else if  (remoteHostStatus == ReachableViaWWAN) {NSLog(@"cell"); self.hasInet-=YES; } 

// if (self.hasInet) { 
//  UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"Net avail" message:@"" delegate:self cancelButtonTitle:OK_EN otherButtonTitles:nil, nil]; 
//  [alert show]; 
// } 
} 
+0

हैंडलनेटवर्क चेंज कई बार संभवतः वाईफाई कनेक्शन उपलब्ध नहीं है, इसे कैसे नियंत्रित करें –

0

के रूप में वर्तमान नेटवर्क स्थिति स्टोर करने के लिए जब भी सह में कोई परिवर्तन होता है तो आप ब्लॉक आधारित कॉलबैक प्राप्त करने के लिए पहुंचने पर इस रैपर का उपयोग कर सकते हैं कनेक्टिविटी की स्थिति।

GitHub: UHBConnectivityManager

आप cocoapods उपयोग कर रहे हैं। तरीकों में से

pod 'UHBConnectivityManager' 
0

सरल:

reach = [Reachability reachabilityWithHostName:@"www.google.com"]; 
reach.reachableBlock = ^(Reachability *reach){ 
    NSLog(@"Reachable"); 
}; 

reach.unreachableBlock = ^(Reachability *reach){ 
    NSLog(@"Unreachable"); 
}; 
[reach startNotifier]; 

हर नेटवर्क में कोई परिवर्तन होता है, संबंधित ब्लॉक बुलाया जाएगा।

0

स्थानीय चर के बजाय आपकी संपत्ति के रूप में पहुंच योग्यता बनाएं। यह काम करेगा।

संबंधित मुद्दे