2017-02-17 10 views
5

मैं NSURLSession के साथ मल्टीपार्ट फॉर्म डेटा का उपयोग कर सर्वर पर फ़ाइल अपलोड कर रहा हूं। जब एप्लिकेशन पृष्ठभूमि में जाता है तो मैं अनुरोध को निलंबित करना चाहता हूं और एप्लिकेशन फिर से अग्रभूमि में आने पर फिर से शुरू करना चाहता हूं। तो मैं बस [session suspend] और [session resume] करता हूं। यह ठीक काम कर रहा है जब ऐप केवल पृष्ठभूमि में जाता है। लेकिन अगर डिवाइस लॉक हो जाता है, जब अग्रभूमि में वापस जा रहा है और फिर से शुरू करने का प्रयास करता है, तो मुझे नेटवर्क कनेक्शन खो गया त्रुटि मिलती है। मैं समझता हूं कि जब डिवाइस लॉक हो जाता है, तो सभी खुले सॉकेट बंद होते हैं और इसलिए समस्या होती है, लेकिन शुरुआत से अपलोड शुरू करने की आवश्यकता के बिना इस काम को करने का कोई तरीका है?NSUrlSession डिवाइस लॉक पर समस्या को निलंबित और फिर से शुरू करें

उत्तर

2

ऐप पृष्ठभूमि में जाने से पहले आपको अपने अग्रभूमि सत्र को पृष्ठभूमि सत्र में स्विच करना चाहिए, और फिर इसे निलंबित करने की आवश्यकता नहीं है। पृष्ठभूमि में (अंत में) आपकी फ़ाइल ओएस द्वारा अपलोड की जाएगी।

+0

इस समस्या में यह है कि पृष्ठभूमि से सीधे अपलोड करने के लिए पृष्ठभूमि NSUrlSession की आवश्यकता है, लेकिन चूंकि हम मल्टीपार्ट फॉर्म डेटा का उपयोग करते हैं, इसलिए हमें निलंबित/फिर से शुरू करना होगा। –

+1

इसे एक फाइल में सहेजें? : डी –

+0

समस्या सर्वर की बाधाओं, क्लाइंट नहीं है। –

0

दुर्भाग्यवश, documentation के अनुसार, आपको अपनी पृष्ठभूमि अपलोड करने के लिए फ़ाइल का उपयोग करने की आवश्यकता है।

"पृष्ठभूमि स्थानांतरण विचार" से:

केवल एक फ़ाइल से कार्य अपलोड समर्थित हैं (डेटा वस्तुओं से अपलोड करना या धारा कार्यक्रम बाहर निकलता है के बाद असफल हो जायेगी)।

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

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