2013-11-01 17 views
5

BECOMES internet mevcut olduğunda uygulamamın içinde bir bildirim veya bir şey almak mümkün mü? Ulaşılabilirliğin ve her türlü şeyin farkındayım. Ama istediğim, internet cihazda kullanılabilir hale geldiğinde, bazı bekleyen NSUrlConnections'lara başlamak. Bunu yapmanın kolay bir yolu var, çünkü sürekli erişilebilirlik için kontrol eden bir döngü ipliği kullanmak istemiyorum. Baska öneri?Internet iOS iOS'ta mevcut olduğunda bildirim

+2

neden Ulaşılabilirlik kullanarak ve ReachabilityChangedNotification ler çalışmaz için kayıt anlamıyorum: Burada – Alex

+1

[Ulaşılabilirlik] (https://developer.apple.com/Library/ios/samplecode/Reachability/Introduction/Intro.html) gerçekten başka bir göz atmaya değer. Döngülememelisiniz, daha çok, bu kod örneği gibi, 'startNotifier'ı çağırın ve İnternet bağlantısı değiştiğinde bir bildirim alacaksınız. – Rob

+0

Bu sorunun kopyalandığını kabul etmiyorum. Sağlanan yanıt, Erişilebilirlik kullanımı hakkındadır, ancak soru bağlantı durumu güncellemesi almakla ilgilidir. Cevabımda yazdığım gibi, Ulaşılabilirlik bir şey garanti etmez, daha çok yardımcıdır. Herkese önermek, Ulaşılabilirliğin doğru bir cevap olması, uygulamada istenmeyen durumlara yol açabilir! –

cevap

2

Tamam, burada ulaşılabilirlik konusunda çok güzel post: http://www.mikeash.com/pyblog/friday-qa-2013-06-14-reachability.html (aşağıdaki yorumları kontrol!)
TLDR: bağlantı geri olduğunda bloğu ateş, ancak bu çözüm mükemmel değildir. Bunu yapmak için% 100 güvenilir bir yol yoktur (döngü içinde çalışmak dışında), ancak bu yaklaşımları karıştırmayı deneyebilirsiniz.

Düzenleme:
Ulaşılabilirlik size hem bağlantı bildirim hataları verebilir: @ Jonah.at.GoDaddy cevap Comment yanlış pozitif ve yanlış negatif (eğer Hangisi hatırlamıyorum, WWDC 2011 oturumu adresten kontrol edebilirsiniz; Ağ hakkında iki tane var). Öyleyse benim amacım: asla bu bildirime güvenmemelisin. Durum değişikliği için yenilemeyi tetikleyebilirsiniz, ancak bunu yapmanın başka bir yolu olmalıdır (kullanıcı etkileşimi veya bir tür aktif bekleme). Sorunuzun itibaren

-(void)checkNetworkStatus 
{ 
    // check for internet connection 
    [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(checkNetworkStatus:) name:kReachabilityChangedNotification object:nil]; 

    // check if a pathway to a random host exists 
    self.hostReachable = [Reachability reachabilityWithHostname:@"google.com"]; 
    [self.hostReachable startNotifier]; 
} 


-(void) checkNetworkStatus:(NSNotification *)notice 
{ 
    NetworkStatus hostStatus = [self.hostReachable currentReachabilityStatus]; 
    switch (hostStatus) 
    { 
     case NotReachable: 
     { 
      DDLogInfo(@"A gateway to the host server is down."); 
      if(self.canReachGoogle) 
      { 
       UIAlertView *alert = [[UIAlertView alloc] initWithTitle: LOCALIZED_NoInternetConnection 
                  message: LOCALIZED_ConnectionNeeded 
                  delegate:self cancelButtonTitle:LOCALIZED_Ok otherButtonTitles:nil]; 
       [alert show]; 
      } 
      self.canReachGoogle = NO; 
      break; 
     } 
     case ReachableViaWiFi: 
     { 
      DDLogInfo(@"A gateway to the host server is working via WIFI."); 
      self.canReachGoogle = YES; 

      break; 
     } 
     case ReachableViaWWAN: 
     { 
      DDLogInfo(@"A gateway to the host server is working via WWAN."); 
      self.canReachGoogle = YES; 

      break; 
     } 
    } 
    DDLogInfo(@"Network connection has changed and is now: %@", self.canReachGoogle ? @"enabled" : @"disabled"); 
} 
0

ihtiyacınız biraz fazla olabilir ... Kullandığım bazı kod . Reachability'nin sunmadığı şey nedir?
+0

Evet, ancak bu Google'a güveniyor. En iyi yaklaşım değil. Ayrıca, belirli bir zamanda ulaşılabilirlik için değil, erişilebilirlikteki değişiklikleri istedim. – user2387149