2012-03-07 13 views
6

मुझे कोई समस्या है। मैं इंटरनेट उपलब्धता का पता लगाने के लिए पहुंच क्षमता के पहुंचने योग्यता का उपयोग कर रहा हूं लेकिन इसके बजाय मुझे कनेक्शन की स्थिति मिल रही है और इंटरनेट की स्थिति नहीं है। मेरा मतलब है कि अगर मैं अपना वाईफाई कनेक्शन चालू करता हूं, तो विधि मुझे सही संकेत देती है कि मेरे पास कनेक्शन नहीं है लेकिन अगर वाईफाई चालू है और इंटरनेट कनेक्शन काम नहीं कर रहा है, तो यह काम नहीं कर रहा है। कोई उपाय?रीचैबिलिटी पहुंचने योग्यता के साथ इंटरनेट कनेक्शन का पता नहीं लगा सकता है .InternetConnection

बेस्ट सादर

+0

मैं इस तरह के मुद्दे का भी अनुभव करते हुए, मुझे आश्चर्य है कि लोग आमतौर पर इसका समाधान क्यों नहीं करते हैं और केवल पहुंच योग्यता का उपयोग करते हैं। मेरा मतलब है कि वहां ऐप के साथ क्या होता है यदि यह वाईफ़ाई से कनेक्ट है और इंटरनेट वास्तव में काम नहीं कर रहा है। और वे इस मामले को –

उत्तर

3

गम्यता केवल कि क्या iPhone इंटरनेट का प्रवेश द्वार के लिए एक कनेक्शन है पता लगाने के लिए इस्तेमाल किया जा सकता। गेटवे के पीछे क्या है, यह आपको नहीं बताएगा। क्या होगा यदि लैन पहुंच योग्य है लेकिन आपके पास इंटरनेट से बाहर निकलना नहीं है? आईफोन कैसे अनुमान लगा सकता है कि यह क्या देखता है (लैन) पूरे इंटरनेट नहीं है?

आपको वास्तविक साइट पर कुछ वास्तविक अनुरोध करना चाहिए। यदि यह विफल हो जाता है, तो इंटरनेट से कनेक्ट करने में कुछ समस्याएं होती हैं, और पहुंच योग्यता के परिणामों के साथ आप यह भी समझ सकते हैं कि समस्या कहां है। सबसे आसान तरीका NSUrlRequest के साथ अनुरोध करना है उदाहरण के लिए http://www.google.com पर। (गूगल मर जाता है, तो आप वहाँ बड़ी समस्याओं हैं कि लगता है कि हो सकता है फिर अपने ऐप के कनेक्टिविटी :)

+0

कैसे संभालते हैं यदि मेरे ऐप का उपयोग दुनिया भर के लाखों लोगों द्वारा किया जा रहा है? क्या मुझे इन नेटवर्क की स्थिति के बारे में एक बड़ा गुच्छा (यदि मेरे ऐप का उपयोग कर हजारों उपयोगकर्ता एक समय में) भेजना चाहिए, तो मेरे ऐप से Google या Apple पर अनुरोध अनुरोध करें? क्या ऐसा करना ठीक है? – Aqueel

+0

यह इस बात पर निर्भर करता है कि आपको कितनी बार अपने ऐप की पहुंच की जांच करनी है - जितनी बार संभव हो उतनी बार कम करने की कोशिश करें। अन्यथा मुझे लगता है कि हाँ, यह ठीक है - http://www.google.com हर मिनट में लोगों के _billions_ द्वारा पूछताछ की जा रही है .... – MrTJ

+0

@Aqueel - संभवतः आपके पास एक वास्तविक अनुरोध है? आपको इसे बनाना चाहिए यह जानने का एकमात्र तरीका है कि यह काम करेगा या नहीं। अगर आप वास्तविक अनुरोध करना चाहते हैं तो Google यह पहुंचने का मुद्दा क्या है कि foobar.org/users?1213321321312&images=med है? – hooleyhoop

2

मैं अपने अनुप्रयोग में इस का उपयोग करें:

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

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

// Check if a pathway to a random host exists 
hostReachable = [Reachability reachabilityWithHostName: @"www.apple.com"]; 
[hostReachable startNotifier]; 

और:

- (void) checkNetworkStatus:(NSNotification *)notice 
{ 
    // Called after network status changes 
    NetworkStatus internetStatus = [internetReachable currentReachabilityStatus]; 
    switch (internetStatus) 
    { 
      // Case: No internet 
     case NotReachable: 
     { 
      internetActive = NO; 

      // Switch to the NoConnection page 
      NoConnectionViewController *notConnected = [[NoConnectionViewController alloc] initWithNibName:@"NoConnectionViewController" bundle:[NSBundle mainBundle]]; 

      notConnected.modalTransitionStyle = UIModalTransitionStyleFlipHorizontal; 
      [self presentModalViewController:notConnected animated:NO]; 

      break; 
     } 
     case ReachableViaWiFi: 
     { 
      internetActive = YES; 
      break; 
     } 
     case ReachableViaWWAN: 
     { 
      internetActive = YES; 
      break; 
     } 
    } 

    // Check if the host site is online 
    NetworkStatus hostStatus = [hostReachable currentReachabilityStatus]; 
    switch (hostStatus) 
    { 
     case NotReachable: 
     { 
      hostActive = NO; 
      break; 
     } 
     case ReachableViaWiFi: 
     { 
      hostActive = YES; 
      break; 
     } 
     case ReachableViaWWAN: 
     { 
      hostActive = YES; 
      break; 
     } 
    } 
} 
+5

क्या होगा यदि मेरे ऐप का उपयोग दुनिया भर के लाखों लोगों द्वारा किया जा रहा है? क्या मुझे इन नेटवर्क की स्थिति के बारे में एक बड़ा गुच्छा (यदि मेरे ऐप का उपयोग कर हजारों उपयोगकर्ता एक समय में) भेजना चाहिए, तो मेरे ऐप से Google या Apple पर अनुरोध अनुरोध करें? क्या ऐसा करना ठीक है? – Aqueel

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