2016-02-07 10 views
6

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

+0

उपयोग पृष्ठभूमि प्रक्रिया डाउनलोड तो बनाने के लिए ... –

+0

@FahimParkar - आप मतलब है, जब अनुप्रयोग पृष्ठभूमि में खोला गया है या किसी भी या पृष्ठभूमि प्रक्रिया के किसी भी अन्य तरह का? – Tukkan

+1

NSURLSession की जांच करें क्योंकि यह पृष्ठभूमि हस्तांतरण के लिए अनुमति देता है कि ओएस आपके पूर्ण होने पर आपको देखभाल करेगा और आपको सूचित करेगा, जिसमें आपको हस्तांतरण के बारे में सूचित करने के लिए पृष्ठभूमि में अपने ऐप को फिर से लॉन्च करना शामिल है। यह आपको आवश्यक सब कुछ करने में सक्षम हो सकता है। (मैं केवल इस सुविधा की जांच शुरू कर रहा हूं, इसलिए मैं कोई विशेषज्ञ नहीं हूं।) –

उत्तर

4

संक्षिप्त उत्तर नहीं है, आपका ऐप समाप्त होने के बाद कोड नहीं चला सकता है।

आप अपने AppDelegate के applicationWillTerminate में कोड चला सकते हैं, लेकिन यह विधि मुख्य रूप से उपयोगकर्ता डेटा और अन्य समान कार्यों को सहेजने के लिए लक्षित है।

this answer भी देखें।

2

हाँ आप पृष्ठभूमि में सामान कर सकते हैं। आप निष्पादन के कई अलग-अलग पृष्ठभूमि मोड तक ही सीमित हैं। सर्वर संचार उन तरीकों में से एक है जिन्हें अनुमति दी जाती है (पृष्ठभूमि लाने)। सुनिश्चित करें कि आपने दिशानिर्देशों के अनुसार एक्सकोड में गुणों को सही ढंग से सेट किया है (यानी यह नहीं कहें कि आप डेटा ट्रांसफर करते समय ऑडियो ऐप हैं)। जानकारी यहां देखें:

https://developer.apple.com/library/ios/documentation/iPhone/Conceptual/iPhoneOSProgrammingGuide/BackgroundExecution/BackgroundExecution.html

मैं आपके सवाल का पाया क्योंकि यह Cordova टैग इसके साथ जुड़े है। आप कॉर्डोबा उपयोग कर रहे हैं आप पृष्ठभूमि में चीजों का प्रबंधन करने के लिए यहाँ इस प्लगइन का उपयोग कर सकते हैं:

https://github.com/katzer/cordova-plugin-background-mode

संपादित करें: उपयोगकर्ता बल समापन/ऐप्स समाप्त है तो कुछ भी नहीं है आप कुछ नहीं कर सकता है। अगर वे सिर्फ होम स्क्रीन पर ऐप से बाहर निकल रहे हैं और अन्य ऐप्स का उपयोग कर रहे हैं, तो आप पृष्ठभूमि में भाग सकते हैं।

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

यदि स्थानीय अधिसूचना रद्द नहीं की गई है तो यह उपयोगकर्ता को याद दिलाएगी कि फ़ाइल अपलोड नहीं की गई है और जब वे अधिसूचना खोलते हैं तो आपका ऐप वापस शुरू हो जाएगा जहां यह छोड़ा गया था।

1
- (void)applicationWillTerminate:(UIApplication *)application { 
if (application) { 
    __block UIBackgroundTaskIdentifier backgroundTask = UIBackgroundTaskInvalid; 
    backgroundTask = [application beginBackgroundTaskWithName:@"MyTask" expirationHandler:^{ 
     backgroundTask = UIBackgroundTaskInvalid; 
    }]; 
    [self doSomething]; 
    [application endBackgroundTask:backgroundTask]; 
    backgroundTask = UIBackgroundTaskInvalid; 
    } 
} 
संबंधित मुद्दे