2016-10-23 10 views
5

मैं एक webservice को कॉल करने के लिए अलामोफ़ीयर का उपयोग कर रहा हूं जो लोड करने में काफी लंबा समय लेता है। यदि ऐप पृष्ठभूमि में जाता है तो मैं ऐप पर वापस आने पर अपने लोडर से फंस जाता हूं। मुझे कल्पना है कि ऐसा इसलिए है क्योंकि कॉल मेरे पूरा होने वाले हैंडलर को कभी भी कुछ नहीं देता है। मैं इस समस्या को कैसे हल कर सकता हूं?पृष्ठभूमि में प्रवेश करते समय अलामोफ़ीयर अनुरोध अटक गया?

+0

http://stackoverflow.com/questions/34328678/web-service-call-in-background-mode -यो – Sofeda

+0

http://redth.codes/ios7-recipe-background-fetching/ – Sofeda

+0

ये आपकी मदद कर सकते हैं – Sofeda

उत्तर

4

आप इस समस्या को हल करने के लिए पृष्ठभूमि लाने का उपयोग कर सकते हैं। इसे स्विफ्ट 3:

var backgroundTask: UIBackgroundTaskIdentifier? // global variable   

    backgroundTask = UIApplication.shared.beginBackgroundTask(withName: "backgroundTask") { 
     // Cleanup code should be written here so that you won't see the loader 

     UIApplication.shared.endBackgroundTask(self.backgroundTask!) 
     self.backgroundTask = UIBackgroundTaskInvalid 
    } 

इस लाइन के बाद अपनी अलामोफ़ीयर सेवा पर कॉल करें। पूरा करने वाले हैंडलर में, नीचे दी गई रेखाओं का उपयोग करके कार्य को समाप्त करें।

UIApplication.shared.endBackgroundTask(self.backgroundTask!) 
    self.backgroundTask = UIBackgroundTaskInvalid 

कृपया ध्यान दें एप्लिकेशन कुछ पृष्ठभूमि समय (backgroundTimeRemaining संपत्ति) शेष होने से पहले ही निष्क्रिय राज्य में प्रवेश करती है। आपको उस समय से पहले अपना काम करना होगा। शेष पृष्ठभूमि समय शून्य तक पहुंचने से पहले ही हैंडलर को बुलाया जाता है। साथ ही, विधि beginBackgroundTask(withName:){} पर प्रत्येक कॉल को endBackgroundTask: विधि पर मिलान करने वाली कॉल द्वारा संतुलित किया जाना चाहिए।

ऊपर दिए गए कोड को बनाने के लिए, आपको अपने ऐप में सेटिंग्स समायोजित करने की आवश्यकता है। "लक्ष्य" में जाओ और निम्नलिखित बनाने के लिए "क्षमताओं" पर क्लिक करें बदलता है

Changes to made in "Target" section

उसके बाद, अपनी Info.plist फाइल करने के लिए जाना है, और इसे खोलने के रूप में स्रोत निम्नलिखित कोड जोड़ने के लिए।

enter image description here

मुझे आशा है कि यह आप में मदद करता है। आप अधिक विस्तृत जानकारी की जरूरत है, इन कड़ियों मदद कर सकता है

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