मैं ऐप्पल से Reachability class का उपयोग कर रहा हूं ताकि नेटवर्क ऐप की कार्यक्षमता में पता चल सके जो मेरे ऐप की कार्यक्षमता में प्रभाव डालती है। यह एक वीओआईपी ऐप है जो setKeepAliveTimeout का उपयोग करता है, इसलिए प्रत्येक ~ 10 मिनट जागता है नेटवर्क की स्थिति को पढ़ता है और यह तय करता है कि कनेक्शन रीफ्रेश किया जाना चाहिए या नहीं।आईओएस रीचबिलिटी कोई वाईफाई रिपोर्ट नहीं करता है, जब वाईफाई सक्रिय होता है
BOOL res = [app setKeepAliveTimeout:600 handler:^{
[[WIFI instance] isWifiConnected];
[[AClass an_instance] refresh];
}
}];
तो हर 10 मिनट में वाईफाई कनेक्ट किया जाता है और ऐप नेटवर्क स्थिति को फिर से पढ़ता है।
- (BOOL) isWifiConnected {
self.wifiReach = [Reachability reachabilityForLocalWiFi];
NetworkStatus wifiStatus = [self.wifiReach currentReachabilityStatus];
switch (wifiStatus) {
case NotReachable: {
m_wifiConnected = NO;
LOG(@"NetStatus:NotReachable");
break;
}
case ReachableViaWiFi: {
m_wifiConnected = YES;
m_wwanConnected = NO;
LOG(@"NetStatus:ReachableViaWiFi");
break;
}
}
return m_wifiConnected;
}
हालांकि मैं डिवाइस कॉल झूठी रिटर्न में वाईफ़ाई है, कोई WiFi यानी, और शुद्ध की स्थिति के लिए इसके अलावा NotReachable।
हालांकि बहुत कम समय अंतराल के बाद पहुंच क्षमता कॉलबैक को फिर से बुलाया जाता है और वाईफ़ाई कनेक्ट होता है। हालांकि, मैंने त्रुटि मान के कारण पहले से ही एक ईवेंट निकाल दिया है और ऐप सर्वर के साथ कनेक्शन बंद कर देता है कि कोई वाई-फाई नहीं है।
कुछ शोध यह मैं Reachability.m फ़ाइल (एप्पल से प्रदान की गई)
डिफ़ॉल्ट रूप से की रीडमी फ़ाइल में इस पाया कर, आवेदन अपने दूरस्थ होस्ट के लिए www.apple.com उपयोग करता है। आप VisualHostName वैरिएबल में -viewDidLoad में मान को संशोधित करके APLViewController.m में उपयोग किए गए होस्ट को बदल सकते हैं।
महत्वपूर्ण: गम्यता से पहले होस्ट नाम को हल करने में यह है कि मेजबान के गम्यता निर्धारित कर सकते हैं DNS का उपयोग करना चाहिए, और यह निश्चित नेटवर्क कनेक्शन वाले समय लग सकता है। इस वजह से, एपीआई वापस लौटाएगा जब तक कि नाम समाधान पूरा नहीं हो जाता है। यह देरी कुछ नेटवर्कों पर इंटरफ़ेस में दिखाई दे सकती है
।
क्या यह समस्या हो सकती है? डीएनएस लुकअप में देरी? या क्या मुझे अपना कोड भी बढ़ाने की ज़रूरत है?
मैं अनुप्रयोग प्रारंभ जब मैं इस
self.hostReach = [Reachability reachabilityWithHostName: @"www.apple.com"];
फोन अगर मैं का उपयोग इस तरह एक आईपी पता सही है?
self.hostReach = [Reachability reachabilityWithHostName: @"1.2.3.4"];
क्या यह सार्वजनिक आईपी का उपयोग करना सुरक्षित है? उदाहरण के लिए "17.178.96.5 9" apple.com
के लिए nslookup का परिणाम है Reachability क्लास में एक विधि है जो एप्पल के डेमो से उपयोग की जाने वाली प्रतीत होती है।
- (BOOL)connectionRequired
{
NSAssert(_reachabilityRef != NULL, @"connectionRequired called with NULL reachabilityRef");
SCNetworkReachabilityFlags flags;
if (SCNetworkReachabilityGetFlags(_reachabilityRef, &flags))
{
return (flags & kSCNetworkReachabilityFlagsConnectionRequired);
}
return NO;
}
कनेक्शन की आवश्यकता क्यों है? समस्या का समाधान करने के लिए इस्तेमाल किया जा सकता है?
आप हर 10 मिनट के बाद विधियों को क्यों बुला रहे हैं, तो आप https://github.com/ashleymills/Reachability.swift –
का उपयोग कर सकते हैं मुझे हर 10 मिनट में लगभग – cateof