2011-11-15 9 views
11


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

कदम मुद्दा फिर से निर्माण करने के लिए:

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

क्या स्प्लैश स्क्रीन से छुटकारा पाने के लिए पृष्ठभूमि से वापस आधे सेकेंड तक छुटकारा पाना संभव है? यह वास्तव में इस विशिष्ट ऐप के लिए एक समस्या है।

+1

सुनिश्चित करें कि आपके ऐप के प्लेस्ट में आपके पास 'पृष्ठभूमि में नहीं चलाया गया है' सेट पर सेट नहीं है (कच्ची कुंजी: ['UIAplicationExitsOnSuspend'] (http://developer.apple.com/library/ios/documentation/general /Reference/InfoPlistKeyReference/Articles/iPhoneOSKeys.html#//apple_ref/doc/uid/TP40009252-SW23))। कुछ ऐप्स उपयोगकर्ता को पृष्ठभूमि करते समय "मार डाला" चाहते हैं, इसलिए वे इस कुंजी का उपयोग करते हैं। हालांकि, अपने ऐप को फिर से शुरू करने के लिए आपको इसे पृष्ठभूमि में चलाने की अनुमति देना है (वास्तव में रोका गया है, वास्तव में पृष्ठभूमि में काम नहीं करना है)। – Sam

+0

यह वास्तव में कुछ भी नहीं बदलता है, पृष्ठभूमि से लौटने के बाद भी स्प्लैश दूसरे भाग के लिए दिखाई देता है ... –

+0

क्या आपका कोड 'एप्लिकेशन के माध्यम से जा रहा है: didFinshLaunchingWithOptions: 'दो बार (ब्रेकपॉइंट या NSLog के साथ सत्यापित करें)? मुझे यकीन नहीं है कि जब भी आप 'UIApplicationExistsOnSuspend' कुंजी (जो इसे पृष्ठभूमि करते समय ऐप को मारता है) का उपयोग किए बिना ऐप लॉन्च करने के लिए स्प्लैश स्क्रीन (default.png) को प्रदर्शित करने के लिए आपको कैसे मिलेगा। जब तक ... ऐप अनजाने में 'एप्लिकेशनडिड एंटरबैकग्राउंड:' या 'एप्लिकेशन विल्लरसिग्नाएक्टिव:' में SIGABRT की तरह बाहर निकलने पर मारे जा रहा है। – Sam

उत्तर

10

ठीक है, जाहिरा तौर पर इस सवाल का बहुत :) इस "समस्या" केवल सिम्युलेटर में क्या होता है के साथ शुरू चतुर नहीं था। डिवाइस पर डिबगिंग करते समय, यह अपेक्षा के अनुसार काम करता है।

कोई नुकसान नहीं हुआ। धन्यवाद हर कोई जो मदद करने की कोशिश की! :)

+1

+1 हालांकि कोई बुरा सवाल नहीं है।बहुत से लोगों को यह भी पता नहीं चल रहा है कि क्या हो रहा है जब तक कि वे खोज नहीं करते हैं क्योंकि यह सिम्युलेटर विशिष्ट है। इसे उत्तर के रूप में चिह्नित करें। – Sam

+0

यह मुझे अभी तक नहीं जाने देता है, मैं बाद में :) :) धन्यवाद सैम! :) –

+0

दरअसल, मुझे अभी यह समस्या मेरे 5.1 डिवाइस पर है। कभी-कभी स्प्लैश स्क्रीन दिखाएं और कभी-कभी नहीं, लेकिन किया गयाफिशिश लॉन्चिंगविथऑप्शन फिर से ट्रिगर नहीं किया गया है – Setomidor

0

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

(मैं इसे पुराने एनीमेशन कोड का उपयोग करता है, लेकिन मैं यकीन है कि अगर आप की जरूरत है आप ब्लॉक करने के लिए इसे अपडेट कर सकते m) इस तरह

कुछ उपयोग ...

splashView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 20, 320, 460)]; 
    splashView.image = [UIImage imageNamed:@"Default.png"]; 

    [myWindow addSubview:splashView]; 
    [myWindow bringSubviewToFront:splashView]; 
    [UIView beginAnimations:nil context:nil]; 
    [UIView setAnimationDuration:0.5]; 
    [UIView setAnimationDelegate:self]; 
    [UIView setAnimationDidStopSelector:@selector(startupAnimationDone:finished:context:)]; 
    splashView.alpha = 0.0; 
    [UIView commitAnimations]; 

और फिर एक विधि startupAnimationDone बनाएं जिसका नाम ...

  • (शून्य) startupAnimationDone: (NSString *) समाप्त हो गया animationID: (NSNumber *) संदर्भ समाप्त: (शून्य *) संदर्भ {

    [splashView removeFromSuperview];

    [splashView रिलीज]; }

+1

मुझे लगता है कि @Shai Mishali "Default.png" फ़ाइल का जिक्र कर रहा है जो ऐप को अग्रभूमि में आने पर प्रदर्शित होता है। दुर्भाग्यवश इस व्यवहार को बदलना संभव नहीं है और क्या आपका ऐप फिर से सक्रिय हो रहा है या नहीं, फिर भी कई कारकों पर निर्भर करेगा, लेकिन मैं जो कह सकता हूं उससे मुख्य रूप से उस स्मृति में आपके द्वारा उपलब्ध स्मृति है। – Rog

+1

मैंने ऐसा कुछ करने की कोशिश की, लेकिन समस्या यह है कि यदि आप स्प्लैश स्क्रीन निर्दिष्ट नहीं करते हैं तो आपके पास ऐप तैयार होने तक एक ब्लैक स्क्रीन प्रदर्शित होगी, और केवल तब स्पलैश दिखाया जाएगा। क्या मैं किसी भी तरह से डिफ़ॉल्ट स्पलैश को "रद्द" कर सकता हूं, इसलिए लॉन्च पर ब्लैक स्क्रीन नहीं होगी? –

+0

आप अपने ऐप को एप्लिकेशन में पृष्ठभूमि में जाने से ठीक पहले स्क्रीन की प्रतिलिपि लेना चाहते हैं, किसी अन्य चीज़ के लिए डिफ़ॉल्ट फ़ाइल का नाम बदलें और इस हथियार छवि को default.png पर पुनर्नामित करें - मुझे लगता है कि यह पढ़ने वाले ऐप्स हैं कोबो की तरह जब वे पृष्ठभूमि में जाने वाले होते हैं। मैंने यह खुद नहीं किया है, इसलिए यह केवल एक धारणा है। आम तौर पर मैं कल्पना करता हूं कि आपकी खुद की छवि तुरंत प्राप्त हो रही है, जो भी हो, एप्लिकेशन मेंडबैकएक्टिव काफी तत्काल होगा ताकि उपयोगकर्ता को ब्लैक स्क्रीन दिखाई न दे। – amergin

9

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

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

संक्षिप्त उत्तर: यह आपके हाथों से बाहर है।

+1

आप पहले से ही उत्तर दिए गए प्रश्न का उत्तर दे रहे हैं। जैसा कि मैंने कहा था कि समस्या सिम्युलेटर में थी, और आपके डिवाइस पर होने पर नहीं हुआ था। –

+4

मैंने जवाब जोड़ा क्योंकि मैंने देखा है कि यह डिवाइस पर अपनी परियोजनाओं में होता है और इसके बारे में ग्राहक सवालों के जवाब देना पड़ता है, इसलिए मुझे लगता है कि भविष्य के यात्रियों के लिए यहां एक और अधिक व्यापक व्याख्यान मूल्यवान था। – QueyJoh

+0

ठीक है, डाउनवोट के लिए खेद है। मैं आमतौर पर पहले से बंद प्रश्नों का उत्तर देने के लिए अपने अच्छे अभ्यास को नहीं सोचता, खासकर जब उत्तर कुछ भी महत्वपूर्ण नहीं है ("यह आपके हाथों से बाहर है")। हालांकि मैं प्रयास की सराहना करता हूं। –

12

मुझे पता है कि इस प्रश्न को "उत्तर" चिह्नित किया गया है - लेकिन वास्तविकता यह है कि मेरे मामले में उत्तर सही नहीं था और मैं साझा करना चाहता हूं।

मैं शुरू में इस निष्कर्ष पर आया कि ऊपर का सबसे सटीक उत्तर क्वीजो से था - "यह आईओएस द्वारा संभाला गया कुछ है ... संक्षिप्त उत्तर: यह आपके हाथों से बाहर है।"

हालांकि प्रयोग करने के बाद मैंने अपनी जानकारी में प्रविष्टियों के रूप में समस्या का पता लगाने में कामयाब रहा। प्लस फ़ाइल स्टेटस बार को नियंत्रित करता है। विशेष रूप से मेरे पास "UIStatusBarHidden" और "UIStatusBarStyle" के लिए प्रविष्टियां थीं।

मेरी प्रविष्टि फ़ाइल से इन प्रविष्टियों को हटाने से मेरे ऐप से दूर स्विच करते समय तुरंत मेरे ऐप को स्पलैश स्क्रीन दिखाने से रोक दिया गया।

समस्या हल हो गई।

मैथ्यू

+0

धन्यवाद। वह मुझे पागल कर रहा था। – pfs

+0

मेरे मामले में, जब मैं 'LaunchScreen.xib' का उपयोग कर रहा था, तो यह मेरी सहायता नहीं करता था, 'LaunchImage' का उपयोग करते समय यह आवश्यक नहीं था। –

0

मैं इस समस्या भी है, अब मैं हल it.The कारण तुमने किया था applicationDidEnterBackground में भी बहुत सी बातें, कम करने के लिए कोशिश है था।

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