दिलचस्प पोस्ट
कैसे एक भाषा (अजगर) में कोई मान मौजूद है या नहीं एंड्रॉइड पर फेस स्क्रीन बंद होने पर स्क्रीन को प्रोग्रामेटिक रूप से बंद करें स्विफ्ट में निर्मित सामान्य प्रकार का विस्तार जावा जेवीएम से पुस्तकालय (डीएलएल) कैसे खोलें एक MYSQL स्व-जुड़ें कार्य कैसे करता है? PHP कमांड सिंक त्रुटि से बाहर तुलनात्मक और तुलनात्मक उपयोग करने के लिए कब एक सूची का मोड ढूँढना java.io.StreamCorruptedException: अवैध स्ट्रीम हैडर: 54657374 कैसे जावास्क्रिप्ट बंद कर रहे हैं कचरा एकत्र कैसे 'कट' कमांड को कई अनुक्रमिक सीमांकक को एक के रूप में व्यवहार करने के लिए? क्या वीएस 02010 में सीएसएस सत्यापन प्रणाली को बदलना संभव है? हडसन के साथ अनुभव – भवन मैट्रिक्स परियोजना कैसे समान दो छवियों की गणना करने के लिए SIFT एल्गोरिथ्म का उपयोग करें? execCommand insertHTML विराम को संग्रहीत window.getSelection ()

क्या आईओएस पृष्ठभूमि में मेरे ऐप को लॉन्च करेगा अगर यह उपयोगकर्ता द्वारा मजबूर हो गया?

मैं एक पुश नोटिफिकेशन पर content-available फ्लैग का उपयोग करके एक पृष्ठभूमि फ़ेचर ट्रिगर कर रहा हूं। मेरे पास fetch और remote-notification UIBackgroundModes सक्षम है।

यहाँ कार्यान्वयन मैं अपने AppDelegate.m में उपयोग कर रहा हूँ:

 - (void)application:(UIApplication *)application didReceiveRemoteNotification:(NSDictionary *)userInfo fetchCompletionHandler:(void (^)(UIBackgroundFetchResult))completionHandler { NSLog(@"Remote Notification Recieved"); UILocalNotification *notification = [[UILocalNotification alloc] init]; notification.alertBody = @"Looks like i got a notification - fetch thingy"; [application presentLocalNotificationNow:notification]; completionHandler(UIBackgroundFetchResultNewData); } 

जब ऐप पृष्ठभूमि में चल रहा है, यह ठीक काम करता है। (अधिसूचना प्राप्त हुई है और ऐप ने ट्रिगर किया था "जैसा दिखता है मुझे एक सूचना मिली" स्थानीय सूचना, जैसा कि ऊपर कोड करना चाहिए)।

हालांकि, जब ऐप नहीं चल रहा है और content-available ध्वज के साथ एक पुश अधिसूचना प्राप्त की जाती content-available , तो ऐप लॉन्च नहीं किया जाता है और didRecieveRemoteNotification प्रतिनिधि विधि को कभी भी नहीं कहा जाता है।

WWDC वीडियो क्या नया मल्टीटास्किंग (# 204 WWDC 2013 से) यह दर्शाता है: यहां छवि विवरण दर्ज करें

यह कहता है कि आवेदन "पृष्ठभूमि में लॉन्च किया गया" है जब content-available ध्वज के साथ एक पुश अधिसूचना प्राप्त की जाती content-available

मेरा ऐप पृष्ठभूमि में क्यों नहीं लॉन्च रहा है?

तो असली सवाल यह है:

क्या यूजर को ऐप छोड़ने के बाद आईओएस पृष्ठभूमि कार्यों को पूरा करेगा?

Solutions Collecting From Web of "क्या आईओएस पृष्ठभूमि में मेरे ऐप को लॉन्च करेगा अगर यह उपयोगकर्ता द्वारा मजबूर हो गया?"

अद्यतनः यह लगता है कि आप इसे 8 मे से शुरू की गई नई पुशकिट ढांचे का उपयोग कर प्राप्त कर सकते हैं । ( यह उत्तर देखें)।


हालांकि यह WWDC वीडियो द्वारा स्पष्ट नहीं किया गया था, डेवलपर फ़ोरम पर एक त्वरित खोज ने इसे चालू कर दिया:

https://devforums.apple.com/message/873265#873265 (लॉगिन आवश्यक)

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

यह पोस्ट एक ऐप्पल कर्मचारी द्वारा किया गया था, इसलिए मुझे लगता है कि मुझे भरोसा है कि यह जानकारी सही है।

तो ऐसा लगता है कि ऐप स्विचर (ऐप स्विचर) से ऐप को कैसे मार दिया जाता है, ऐप कभी भी लॉन्च नहीं किया जाएगा, यहां तक ​​कि शेड्यूल किए गए पृष्ठभूमि के फैंटे के लिए भी।


आईओएस 8 अपडेट: आईओएस 8 के लिए दस्तावेज़ीकरण को स्पष्ट किया गया है। दस्तावेज़ीकरण यहां पढ़ा जा सकता है । यहां एक प्रासंगिक अंश है:

अपने ऐप के लिए आवक रिमोट सूचनाओं पर कार्रवाई करने के लिए इस विधि का उपयोग करें। application:didReceiveRemoteNotification: विपरीत application:didReceiveRemoteNotification: विधि, जिसे केवल तब ही कहा जाता है जब आपका ऐप अग्रभूमि में चल रहा हो, सिस्टम इस विधि को कॉल करता है जब आपका ऐप अग्रभूमि या पृष्ठभूमि में चल रहा हो इसके अलावा, अगर आपने रिमोट नोटिफिकेशन पृष्ठभूमि मोड को सक्षम किया है, तो सिस्टम आपके ऐप को लॉन्च करता है (या इसे निलंबित स्थिति से जागता है) और इसे पुश सूचना आने पर पृष्ठभूमि की स्थिति में डालता है हालांकि, सिस्टम स्वचालित रूप से आपके ऐप को लॉन्च नहीं करता है, अगर उपयोगकर्ता ने उसे बल दिया है उस स्थिति में, उपयोगकर्ता को आपका ऐप पुनः लॉन्च करना होगा या डिवाइस को पुन: प्रारंभ करना होगा इससे पहले कि सिस्टम स्वचालित रूप से अपने एप को लॉन्च करने का प्रयास करे।

आप Wait for <app>.app to be launched manually लिए Wait for <app>.app to be launched manually "योजना प्रबंधित करें" में अपने लक्ष्य की लॉन्च सेटिंग्स बदल सकते हैं, जो आपको application: didReceiveRemoteNotification: fetchCompletionHandler: में ब्रेकपॉइंट सेट करके डिबग करने की अनुमति देता है application: didReceiveRemoteNotification: fetchCompletionHandler: और पृष्ठभूमि लॉन्च को ट्रिगर करने के लिए पुश नोटिफिकेशन भेजना ।

मुझे यकीन नहीं है कि वह इस समस्या को हल करेंगे, लेकिन यह आपके लिए अब डिबगिंग के साथ सहायता कर सकता है

स्क्रीनशॉट

इसका जवाब हां है, लेकिन 'पृष्ठभूमि पहुंच' या 'दूरस्थ सूचना' का उपयोग नहीं करना चाहिए। पुशकिट आपके लिए जवाब है।

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

एपल से पुशकिट संदर्भ:

पुशकिट ढांचे आपके आईओएस क्षुधा के लिए दूरस्थ सर्वर से धक्का प्राप्त करने के लिए वर्ग प्रदान करता है धक्का दो प्रकारों में से एक हो सकता है: मानक और वीओआईपी आईएसओ के पिछले संस्करणों की तरह मानक धक्का देने वाली सूचनाएं भी वितरित कर सकती हैं वीओआईपी मानक धक्का के ऊपर अतिरिक्त कार्यक्षमता प्रदान करता है जो उपयोगकर्ता को सूचना प्रदर्शित करने से पहले पुश के ऑन-डिमांड प्रसंस्करण के लिए वीओआईपी एप्लिकेशन के लिए आवश्यक है।

इस नई सुविधा को परिनियोजित करने के लिए, कृपया इस ट्यूटोरियल को देखें: https://zeropush.com/guide/guide-to-pushkit-and-voip- मैंने इसे अपने डिवाइस पर परीक्षण किया है और यह अपेक्षित रूप से काम करता है।

वास्तव में यदि आपको पृष्ठभूमि लाने की जांच करने की आवश्यकता है तो आपको योजना में एक विकल्प को सक्षम करने की आवश्यकता है:

बीजी लाने की सुविधा

एक अन्य तरीका आप इसे कैसे परीक्षण कर सकते हैं: अनुकरण बीजी लाने

इस नई सुविधा के बारे में यहां पूरी जानकारी है: http://www.objc.io/issue-5/multitasking.html

मैं दिनों के लिए इस के विभिन्न संस्करणों की कोशिश कर रहा था, और मैंने सोचा कि एक दिन मैंने पृष्ठभूमि में ऐप को फिर से लॉन्च किया था, भले ही उपयोगकर्ता को मारने के लिए स्वाइप किया गया, लेकिन मैं उस व्यवहार को दोहरा नहीं सकता।

यह दुर्भाग्यपूर्ण है कि व्यवहार पहले से काफी अलग है। आईओएस 6 पर, अगर आप जिंगिंग आइकनों से ऐप को मार डाला है, तो यह अभी भी एसएलसी ट्रिगर पर फिर से शुरू हो जाएगा। अब, अगर आप स्वाइप करके मारते हैं, ऐसा नहीं होता है।

यह एक अलग व्यवहार है, और उपयोगकर्ता, जो हमारे ऐप से उपयोगी जानकारी प्राप्त करना चाहते हैं यदि उन्होंने इसे आईओएस 6 पर मार दिया था, अब नहीं होगा

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

मुझे यकीन नहीं है कि यह पुश अधिसूचना में काम कर रहा है या नहीं, क्योंकि मैं यह कोशिश नहीं कर रहा हूं, लेकिन आप यह कोशिश कर सकते हैं, यह एप्पल डेवलपर साइट से है और व्हाट्सएप इस का उपयोग कर रहा है।

यह पुश अधिसूचना के लिए वीओआईपी तकनीक है

कृपया यहां इसे चेक करें । इस सेब डेवलपर साइट

कृपया सबसे अच्छे उदाहरण की जांच करें जो मिलते हैं। यहाँ