रीचैबिलिटी क्लास और -reachabilityWithHostname:
को यह निर्धारित करने के लिए एक त्वरित, असफल-तेज तंत्र के रूप में डिज़ाइन किया गया है कि आपके पास मेजबान के लिए मूल नेटवर्क कनेक्टिविटी है या नहीं। यदि आपको यह सत्यापित करने की आवश्यकता है कि एक विशेष यूआरएल डाउनलोड किया जा सकता है, तो आपको यह सत्यापित करने के लिए कि यह वास्तव में उपलब्ध है, यूआरएल की सामग्री को पुनः प्राप्त करने के लिए आपको NSURLConnection
का उपयोग करने की आवश्यकता है।
आप अग्रभूमि या पृष्ठभूमि में ऐसा करने की जरूरत है कि क्या आधार पर, आप सरल बल्कि अवरुद्ध उपयोग कर सकते हैं:
+ (NSData *)sendSynchronousRequest:(NSURLRequest *)request returningResponse:(NSURLResponse **)response error:(NSError **)error
या आप एक NSURLConnection वस्तु बनाने के और अधिक जटिल विधि का उपयोग कर सकते हैं, एक प्रतिनिधि की स्थापना सरल मामले के लिए प्रतिक्रियाओं प्राप्त करने के लिए और उन प्रतिक्रियाओं में आने के लिए इंतजार
:।
NSURL *myURL = [NSURL URLWithString: @"http://example.com/service.asmx"];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL: myURL];
[request setHTTPMethod: @"HEAD"];
NSURLResponse *response;
NSError *error;
NSData *myData = [NSURLConnection sendSynchronousRequest: request returningResponse: &response error: &error];
तुम वापस एक प्राप्त होता है ऑन-नील myData, आपको कुछ प्रकार की कनेक्टिविटी मिली है। response
और error
आपको बताएगा कि सर्वर ने आपको क्या जवाब दिया है (प्रतिक्रिया के मामले में और यदि आपको गैर-शून्य मायडाटा प्राप्त हुआ है) या किस प्रकार की त्रुटि हुई है, तो मेरे myData के मामले में।
गैर-मामूली मामले के लिए, आप ऐप्पल के Using NSURLConnection से अच्छा मार्गदर्शन प्राप्त कर सकते हैं।
यदि आप अपनी अग्रभूमि प्रक्रिया को रोकना नहीं चाहते हैं, तो आप इन दो अलग-अलग तरीकों से कर सकते हैं। उपर्युक्त दस्तावेज प्रतिनिधि को कार्यान्वित करने के तरीके के बारे में जानकारी प्रदान करेगा, आदि। हालांकि, पृष्ठभूमि थ्रेड पर सिंक्रोनस अनुरोध भेजने के लिए जीसीडी का उपयोग करना एक आसान कार्यान्वयन होगा, और फिर जब आप पूरा कर लें तो मुख्य थ्रेड पर स्वयं को संदेश दें।
कुछ इस तरह: आप इंटरनेट पहुँच है या नहीं
NSURL *myURL = [NSURL URLWithString: @"http://example.com/service.asmx"];
NSMutableURLRequest *request = [NSMutableURLRequest requestWithURL: myURL];
[request setHTTPMethod: @"HEAD"];
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, NULL), ^{
NSURLResponse *response;
NSError *error;
NSData *myData = [NSURLConnection sendSynchronousRequest: request returningResponse: &response error: &error];
BOOL reachable;
if (myData) {
// we are probably reachable, check the response
reachable=YES;
} else {
// we are probably not reachable, check the error:
reachable=NO;
}
// now call ourselves back on the main thread
dispatch_async(dispatch_get_main_queue(), ^{
[self setReachability: reachable];
});
});
गम्यता केवल वहाँ जाँच करने के लिए इस प्रकार आप उपयोगकर्ता को सचेत और फलस्वरूप संचित डेटा का उपयोग करना चाहिए निर्धारित कर सकते हैं। यह उपयोगकर्ता इंटरैक्शन के लिए ऐप्पल दिशानिर्देशों का हिस्सा है। यदि आप किसी विशिष्ट यूआरएल की जांच करना चाहते हैं, तो इसे एक्सेस करने का प्रयास करें, टाइमआउट को बहुत छोटा होने और त्रुटि को पकड़ने के लिए सेट करें। –