2015-11-23 11 views
6

मैं alamofire टाइमआउट तरीकों के बारे में सवाल है, सब से पहले, मेरी अंग्रेजी काफी अच्छा तुम लोगों को समझने के लिए जाने के लिए नहीं हो सकता है मैं क्या कहा ... लेकिन मैं अपने प्रश्न की व्याख्या करने के थक गया होगातेज 2.1 alamofire टाइमआउट विधि

मेरी परियोजना में, मैंने अलामोफायर का इस्तेमाल किया, किसी कारण से, मुझे यह सुनिश्चित करना होगा कि मेरा ऐप खराब कनेक्शन क्षेत्र का काम कर रहा हो। तो मैं टाइमआउट विधि का उपयोग कर सोच रहा हूँ।

मैंने देखा कि कुछ लोग, कहा समाधान 1 का उपयोग कर रहे हैं:

let configuration = NSURLSessionConfiguration.defaultSessionConfiguration() 
    configuration.timeoutIntervalForRequest = 2 // seconds 
    self.alamofireManager = Alamofire.Manager(configuration: configuration) 
    self.alamofireManager!.request(.GET, "http://example.com/") 
.response { (request, response, data, error) in 

इच्छा समस्या हल हो, लेकिन मेरे मामले में, मैं डिबग क्षेत्र कहा मेरे अनुरोध "अभी नहीं" है

देखा तो मैं एक और समाधान जो मैं यहाँ (stackoverflow) समाधान 2 पर देखा की कोशिश की:

let manager = Alamofire.Manager.sharedInstance 
    manager.session.configuration.timeoutIntervalForRequest = 5 
    manager.request(.POST, url, parameters: params, encoding: .JSON, headers: nil).response(queue: dispatch_get_main_queue()) { (Request, res, data, error) -> Void in{} 

इस विधि लगता है काम करना चाहिए, लेकिन केवल अगर मैं मेरे ऐप को पृष्ठभूमि में जाने और मेरे ऐप पर प्रतिक्रिया करने दें, डीबग क्षेत्र शो "टाइमआउट" का अनुरोध करता है, अन्यथा डीबग क्षेत्र ने कुछ भी नहीं दिखाया, जब तक कि मैं इसे पृष्ठभूमि में स्विच नहीं करता और ऐप को प्रतिक्रिया देता हूं।

मैं Xcode 7.1 और ios 9.0 का उपयोग कर रहा

अद्यतन: अगर मैं समाधान 2 का इस्तेमाल किया, अगर मैं requesttimeout = 5 चलो, डिबग क्षेत्र "टाइमआउट त्रुटि" दिखाई देगा, लेकिन यह से ज्यादा लेना 5 सेकंड ... कभी-कभी यह लगभग 30 मिनट दिखाएगा, लेकिन कभी-कभी 1 मिनट से अधिक ....

अद्यतन 2: मुझे पता चला कि समस्या क्या है। समस्या यह है कि यदि आप कनेक्ट स्थिति का पता लगाने के लिए पहुंचने योग्य ढांचे का उपयोग कर रहे हैं, तो सिस्टम कनेक्ट का पता लगा सकता है कि कनेक्ट चालू है या नहीं, तो यह अनुरोध के बाद अनुरोध टाइमआउट दिखाएगा (इसमें 1 मिनट तक का समय लग सकता है)।

+0

@oleg, समझाने के लिए धन्यवाद मेरे मामले में, मैं अपने प्रोजेक्ट में इस तरह मेट्रो या भूमिगत के रूप में, गरीब कनेक्ट क्षेत्र पर काम कर बनाने के लिए कोशिश कर रहा था सुरंग इसलिए मैंने आईफोन सेटिंग पर डेवलपर किट खोला, जहां नेटवर्क लिंक कंडीशनर। कॉन्फ़िगरेशन को 100% नुकसान के रूप में बनाएं। इसलिए मुझे नहीं पता कि मुझे इतना समय क्यों लगा कि मुझे पता चल गया है .... –

+0

क्या आप एक समाधान समाधान ढूंढने में सक्षम थे? –

उत्तर

0

NSURLSessionConfiguration Class Reference

यह गुण के आधार पर इस विन्यास के आधार पर सत्र के भीतर सभी कार्य के लिए अनुरोध का समय समाप्त अंतराल निर्धारित करता है। अनुरोध टाइमआउट अंतराल नियंत्रित करता है कि छोड़ने से पहले पहुंचने के लिए अतिरिक्त डेटा के लिए किसी कार्य को कितनी देर तक (सेकंड में) प्रतीक्षा करनी चाहिए। से जुड़े टाइमर जब भी नया डेटा आता है तो यह मान रीसेट हो जाता है। जब अनुरोध टाइमर कोई नया डेटा प्राप्त किए बिना निर्दिष्ट अंतराल तक पहुंचता है, तो यह एक टाइमआउट ट्रिगर करता है।

जब भी नया डेटा आता है तो टाइमर रीसेट हो जाता है और यही कारण है कि आपके पास अलग-अलग त्रुटि समय है।

इसके अलावा, आप अनुरोध के लिए एक और पैरामीटर सेट कर सकते हैं:

manager.session.configuration.timeoutIntervalForResource = 5 
संबंधित मुद्दे