iOS अपडेट के बाद पुरानी लॉन्च स्क्रीन और ऐप आइकन को सुरक्षित रखता है


173

मेरे पास एक ऐप है जहां मैंने हाल ही में लॉन्च छवियों और ऐप आइकन को बदल दिया है, मैंने प्रोजेक्ट में सभी पुरानी परिसंपत्तियों को हर जगह से हटा दिया है। जब मैं ऐप को पुराने संस्करण से नए संस्करण में अपग्रेड करता हूं तो सिर्फ Xcode में निर्माण करके, सब कुछ ठीक है। हालाँकि, अगर मेरे पास मेरे ऐप का पुराना संस्करण स्थापित है, तो इसे टेस्टफ़लाइट से अपग्रेड करें, हर बार जब मैं ऐप को मारता हूं तो इसे पुनः आरंभ करें पुरानी लॉन्च की छवि नई लॉन्च छवि दिखाने से पहले संक्षिप्त रूप से दिखाई देती है। इसी तरह जब मैं फिर ऐप को बंद करता हूं, तो पुराने ऐप आइकन मेरे नए पर वापस जाने से पहले थोड़े समय के लिए चमकता है।

मैंने iExplorer का उपयोग करके ऐप को खोला और देखा कि /Library/Caches/Shapshotsडायरेक्टरी में सहेजे गए पुराने लॉन्च स्क्रीन की एक छवि है (मुझे नहीं पता कि यह वहां कैसे या क्यों मिला)। जब मैं इसे iExplorer के माध्यम से मैन्युअल रूप से हटाता हूं, तो यह दिखाई देना बंद हो जाता है। हालांकि, जब मैं कोड का उपयोग करके इसे हटाने की कोशिश करता हूंNSFileManager विधियों कहते हुए त्रुटियां हो जाती हैं कि मुझे इस निर्देशिका में फ़ाइलों को हटाने से मना किया गया है।

क्या किसी ने इससे पहले अनुभव किया है और कोई सलाह है?


3
वही समस्या, और लॉन्च स्क्रीन के साथ नई लॉन्च स्क्रीन कभी नहीं दिखाती है, यह पिछले संस्करण की कैश्ड छवि का उपयोग कर रही है।
क्रिस्टोफ फोंडकेश

जवाबों:


327

मैं यह करने के लिए मज़बूती से स्प्रिंगबोर्ड कैश को लॉन्च करने में सक्षम हो गया हूं:

  1. डिवाइस से अपना ऐप हटाएं
  2. डिवाइस को पावर डाउन करें
  3. पावर अप डिवाइस, इंस्टॉल और लॉन्च ऐप।

छवि हर बार ठीक से अपडेट होती है। शर्म करो मुझे जाने के लिए डिवाइस को पावर डाउन करना होगा - लेकिन कम से कम मैं इस तरह से प्रगति करने में सक्षम हूं। मुझे उम्मीद है इससे किसी को सहायता मिलेगी।

सिम्युलेटर के मामले में, बस सिम्युलेटर को फिर से शुरू करना चाहिए।


19
यह एकमात्र समाधान है जो मेरे लिए काम करता है। आपका बहुत बहुत धन्यवाद!
मार्सिन कपुस्टा

धन्यवाद हीरो !! एक जादू की तरह काम किया।
रवि

5
एमुलेटर के लिए भी काम करता है।
एलेक्सी पोडलासोव

1
क्या यह भी TestFlight के लिए तय है? TestFlight से ऐप को अपडेट करने से लॉन्च छवियों को भी कैश किया जाता है। क्या आप सुनिश्चित हैं कि यह परीक्षण संस्करण के विपरीत ऐप संस्करण पर नहीं होगा?
हसन

1
यह मेरे लिए ऑटो मिरर कॉमेडी की याद दिलाता है। लेकिन यह कमाल का काम कर रहा है। धन्यवाद!
ssowri1

49

ऐप के स्विचिंग को तेज़ बनाने के लिए इन कैश का उपयोग स्प्रिंगबोर्ड द्वारा किया जाता है। यह एक समस्या नहीं है जो आपके उत्पादन उपयोगकर्ताओं को प्रभावित करेगी और सिद्धांत रूप में अगली बार स्प्रिंगबोर्ड आपके ऐप को स्नैपशॉट करने का निर्णय लेने से दूर जाना चाहिए।

यह कहा जा रहा है, यह एक समस्या है जिसे आप ठीक कर सकते हैं। यह Apple के कोड में एक बग है जो आपका नहीं है।

अद्यतन: वहाँ एक काम के आसपास प्रतीत होता है कि डिवाइस को पुनरारंभ करने की आवश्यकता नहीं है।

यह दूसरे लॉन्च के बाद प्रभावी होगा!

do {
   try FileManager.default.removeItem(atPath: NSHomeDirectory()+"/Library/SplashBoard")
} catch {
   print("Failed to delete launch screen cache: \(error)")
}

यहाँ कैसे काम करता है, इसकी पूरी व्याख्या: https://rambo.codes/ios/quick-tip/2019/12/09/clearing-your-apps-launch-screen-cache-on-ios.html


7
क्या आप कृपया उस दस्तावेज़ से लिंक कर सकते हैं जो आपके कथन की पुष्टि करेगा "यह एक समस्या नहीं है जो आपके उत्पादन उपयोगकर्ताओं को प्रभावित करेगा"? मेरे पास ठीक यही समस्या है, मैं ठीक हूं अगर यह केवल देव है लेकिन मैं आधिकारिक दस्तावेज के बिना मौका नहीं लूंगा जो स्पष्ट रूप से कहता है कि आप क्या कहते हैं।
क्रिस्टोफ फोंडैस्क

6
कुछ लोगों के लिए यह ऐप स्टोर अपडेट के लिए भी मिल रहा है :(।
Ajumal

15
दुर्भाग्य से मैं पुष्टि कर सकता हूं कि यह समस्या उत्पादन उपयोगकर्ताओं को भी प्रभावित करती है (इसलिए ऐप स्टोर से ऐप को अपग्रेड करने के बाद)।
यूजेनियो

हाँ यह उत्पादन बिल्ड / ऐप स्टोर बिल्ड को प्रभावित करता है।
जॉनी

इसके लिए कोई स्रोत?
डैनियल स्प्रिंगर

27

बस सिम्युलेटर के लिए Reset Contents and Settings...


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

18

@InkGolem

यह एक समस्या नहीं है जो आपके उत्पादन उपयोगकर्ताओं को प्रभावित करेगी

सच हैं।

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


1
कोई भी विचार अगर आपके पास पहले से ही ऐपस्टोर पर एक ऐप है और उपयोगकर्ता केवल नए लॉन्च स्क्रीन के साथ एप्लिकेशन को अपडेट करता है?
rhcpfan

मेरे पास पहले से ही ऐपस्टोर डाउनलोड पर एक ऐप है , और मैं नए लॉन्च स्क्रीन के साथ एक अपडेट जारी करता हूं। अपने ऐप को जारी करने के बाद मैं 10 से अधिक उपकरणों के साथ परीक्षण करता हूं (विकास के लिए उपयोग नहीं) यह सत्यापित करने के लिए कि "यह एक समस्या नहीं है जो आपके उत्पादन उपयोगकर्ताओं को प्रभावित करेगा" वास्तविक है, और मुझे उपयोगकर्ता से अब तक कोई शिकायत नहीं मिली है स्प्लैश स्क्रीन।
चिन्नावाटप

7
यह मुद्दा मेरे लिए भी Appstore बिल्ड में खुश है, और @Brian Trzupek सुझावों ने काम किया।
अजुमल

3
पुष्टि की, यह ऐप स्टोर से लाइव बिल्ड पर होता है। इस जवाब में भाषा के साथ कुछ समस्याएं हैं; मैं नहीं बता सकता कि क्या उनका मतलब है कि समस्या उत्पादन को प्रभावित करती है या नहीं, लेकिन मेरा अनुभवजन्य अनुभव यह कहता है
जॉनी

2
यह वास्तव में उत्पादन उपयोगकर्ताओं के लिए हो रहा है !! स्पलैश स्क्रीन पुरानी है। फोन रिबूट करते हुए तय किया कि। उम्मीद है कि लोग रिबूट किए बिना अगले कुछ घंटों में नया स्पलैश देखेंगे।
वेलेरियो

13

अगर आपको वास्तव में इस समस्या को ठीक करना है तो मुझे वर्कअराउंड समाधान मिला। Apple के पास लॉन्च स्क्रीन की छवियों को कैश करने के लिए कुछ तंत्र हैं जो छवि फ़ाइल नाम द्वारा अनुक्रमण करते हैं।

जब आप लॉन्च स्क्रीन पर कोई चित्र बदलते हैं और आप उन परिवर्तनों को अगले भाग में तुरंत देखना चाहते हैं। कृपया नई छवि नाम का उपयोग करें जो आपने बदल दी है और स्टोरीबोर्ड या xib में नई छवि फ़ाइल से लिंक करें।

फिर से चलाएं, आपको नया परिवर्तन दिखाई देगा।


1
मैं ऐप को हटाना नहीं चाहता था इसलिए मैंने यह कोशिश की। इस प्लस ने मेरे डिवाइस को रीस्टार्ट करके मेरे लिए काम किया।
मरे सगल

यह मेरे लिए काम नहीं किया। डिवाइड को पुनः आरंभ करने से भी काम नहीं चला ... मैंने अब हार मान ली।
लेंसफ्लेर

मेरे लिए काम नहीं किया। मैंने भी imageView को हटा दिया और नई छवि के साथ एक नया बनाया, और यह अभी भी काम नहीं किया।
रिकाड एलिमैगा

यह मेरे लिए काम नहीं किया। मुझे पुरानी एक छवि लोड नहीं हुई (अभी भी पृष्ठभूमि रंग एक छवि के बजाय प्रस्तुत किया गया था) और यह अभी भी नए लॉन्च स्क्रीन के सामने आने से पहले दूसरे के एक अंश के लिए प्रस्तुत किया गया था।
मिशाल किचोन

13

इसने मेरे लिए काम किया: http://arsenkin.com/launch_screen_image_cache.html

फिर से, उस थ्रेड के लिए धन्यवाद, जिसका मैंने ऊपर उल्लेख किया है, मुझे इस मुद्दे को हल करने का एक तरीका मिला - अपनी नई छवि को उस व्यक्ति से अलग नाम दें, जब आपके नए के पुराने नाम के समान नाम था और इसे * से बाहर कर दिया। फ़ोल्डर को प्रोजेक्ट निर्देशिका में भेजें और इसे अपने UIImageView में देखें। और बस। बेवकूफ आसान लग रहा है, लेकिन ओह मैं कितना क्रोध था।


3
यहाँ कुंजी उन छवियों को संपत्ति सूची से बाहर रखना है। धन्यवाद!
मिशाल किचोन

3
यह समाधान वास्तव में मदद करता है यदि आप अपने उत्पादन उपयोगकर्ता के अच्छे यूएक्स के बारे में परवाह करते हैं और पुरानी और नई छवि के बीच उस बदसूरत संक्रमण से बचना चाहते हैं।
मिशाल किचोन

3
अंत में, एक समाधान जो वास्तव में काम करता है! यहाँ कुंजी संपत्ति फ़ोल्डर से छवियों को बाहर रखना है।
इलाद

1
एप्लिकेशन को पुनः आरंभ या हटाने के बिना पूरी तरह से काम करता है।
सूफियान होसम

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

10

अपने ऐप को अनइंस्टॉल करें, अपने फ़ोन को पुनरारंभ करें और अपना ऐप फिर से इंस्टॉल करें ... यह वास्तव में मेरे मामले में तय किया गया है।


5

मुझे भी इसी मुद्दे का सामना करना पड़ा। यह तब होता है क्योंकि सिम्युलेटर / iOS डिवाइस लॉन्च इमेज को कैश करता है जब आप पहली बार एप्लिकेशन लॉन्च करते हैं। मैंने ब्रायन ट्रज़ुपेक के जवाब में कुछ संशोधन जोड़े :

  1. Xcode एसेट्स (जैसे। लॉन्च_इमेज) से सेट की गई इमेज को डिलीट करें
  2. एक नई छवि सेट जोड़ें और इसमें चित्र जोड़ें।
  3. IOS डिवाइस पर स्विच और स्विच। (सिम्युलेटर के लिए सामग्री और सेटिंग्स रीसेट करें)।
  4. Xcode बिल्ड फ़ोल्डर (प्रेस command+ option+ shift+ K) को साफ करें ।
  5. डिवाइस / सिम्युलेटर से एप्लिकेशन हटाएं (यदि उपलब्ध हो)।
  6. दोबारा दौडो।

5

मेरे लिए क्या काम किया:

  • लॉन्चस्क्रीन के दृश्य और व्यू कंट्रोलर को हटाना और एक नया बनाएं ( सुनिश्चित करें कि आपने इसे एट्रीब्यूट इंस्पेक्टर में "इनिशियल व्यू कंट्रोलर" के रूप में सेट किया है )।

मेरे लिए क्या काम नहीं आया :

  • एप्लिकेशन हटाना
  • IPhone, मैक या Xcode को फिर से शुरू करना
  • व्युत्पन्न डेटा हटाना
  • डिवाइस के कंटेनर को हटाना
  • सफाई
  • जलती हुई 3 स्टीव जॉब्स वूडू गुड़िया

ध्यान दें:

कभी-कभी मिटाने (सिम्युलेटर) की भी जरूरत होती है


4
मैं आश्वस्त नहीं हूं। मैं स्टीव जॉब्स वूडू गुड़िया के स्रोत स्थानों की पुष्टि करने जा रहा हूं।
क्रिस ब्रांड्समा

3

बस अपने डिवाइस को कनेक्ट करें, Xcode> विंडो> डिवाइसेस> अपने डिवाइस पर जाएं, अब इंस्टॉल किए गए ऐप्स में, अपना ऐप चुनें, राइट क्लिक करें और कंटेनर डाउनलोड करें, जनरेट की गई फ़ाइल पर जाएं, राइट क्लिक करें, पैकेज सामग्री दिखाएं, AppData, लाइब्रेरी, कैश, आदि और फ़ाइलों को हटा दें। अब Xcode> Window> Devices> Your device> अपने ऐप पर जाएं और कंटेनरों को बदलने के लिए राइट क्लिक करें।


3

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

तो, मान लें कि आप xcassets का उपयोग कर रहे हैं, एक सरल उपाय है:

  1. पुरानी छवि सेट हटाएं
  2. एक को फिर से बनाना एक अलग नाम के साथ और अपनी स्प्लैश स्क्रीन छवियां जोड़ें
  3. इस 'नए' छवि सेट संदर्भ का उपयोग करने के लिए अपने स्टोरीबोर्ड को अपडेट करें

यह सुनिश्चित करने के लिए अद्यतन करेगा! (मैंने डिवाइस पर पहले से इंस्टॉल किए गए ऐप के साथ भी परीक्षण किया है)। डिवाइस या तो कैश को साफ करने की कोई जरूरत नहीं है।


3
  1. डिवाइस से अपना ऐप हटाएं
  2. डिवाइस को पावर डाउन करें
  3. पावर अप डिवाइस
  4. ऐप इंस्टॉल करें और लॉन्च करें।

1

ठीक है, इसलिए मैंने इस मुद्दे का पता लगाया। मेरे ऐप के पिछले संस्करण में, हम एक लॉन्च स्क्रीन XIB का उपयोग कर रहे थे। कहीं न कहीं इस नए संस्करण के विकास में, एक्सिब को हटा दिया गया था और केवल स्थैतिक लॉन्च छवियों के साथ बदल दिया गया था।

समाधान एक लॉन्च स्क्रीन XIB का उपयोग करना है। मैंने देखा कि जिस क्षण मैंने पहली बार लॉन्च स्क्रीन xib का उपयोग किया था, स्नैपशॉट निर्देशिका में संग्रहीत फ़ाइल को xib के स्नैपशॉट से बदल दिया गया था।


2
नहीं, मैं लॉन्च स्क्रीन XIB का उपयोग कर रहा हूं और यह अपडेट नहीं हो रहा है। मुझे लगता है कि आप लॉन्च स्क्रीन> स्टेटिक इमेज> लॉन्च स्क्रीन से स्विच करके समस्या का समाधान करते हैं। XCode में लॉन्च स्क्रीन को संशोधित करना और इसे चलाना अभी भी iPhone पर पुरानी लॉन्च स्क्रीन दिखाता है। डिवाइस पर छवि को कैश किया गया है। मुझे लगता है कि अगर मैं लॉन्च स्क्रीन का नाम बदल देता हूं तो यह चाल
चली

एक अलग नाम के साथ लॉन्च स्क्रीन को फिर से बनाना समस्या को हल नहीं करता था, फिर भी पुराने को देखकर। एकमात्र "उम्मीद" यह है कि iOS हर ऐप अपडेट पर अपने कैश को पुन: प्राप्त करता है, लेकिन मुझे इस पर कोई दस्तावेज़ नहीं मिल रहा है
क्रिस्टोफ़ Fondacci

1

Xcode 10 / iOS 12

ऊपर बताई गई सभी चीज़ों को आज़माने के बाद, मुझे लॉन्चस्क्रीन से इमेजव्यू को हटाना था और इसे एक नए के साथ बदलना था।


1

यह इस समस्या को हल करने का सबसे तेज़ तरीका है, हालांकि यह बेवकूफ लगता है:

  1. LaunchScreen.xibअपनी लॉन्चस्क्रीन फ़ाइल पर या Remove fileउसके बाद राइट क्लिक करें और फिर सेलेक्ट करें Remove to trash। यह आपके प्रोजेक्ट से फ़ाइल और उसके पिछले अपडेट के सभी संदर्भों को हटा देगा।

  2. अपने कूड़ेदान में जाएं और फ़ाइल को वापस अपने xCode प्रोजेक्ट (भीतर yourProjectName) में छोड़ें ।

  3. स्वच्छ और पुनर्निर्माण।


1

लॉन्च स्क्रीन कैश को साफ करने के लिए कोड के इस टुकड़े का उपयोग करें:

import UIKit

public extension UIApplication {
    func clearLaunchScreenCache() {
        #if DEBUG
        do {
            let launchScreenPath = "\(NSHomeDirectory())/Library/SplashBoard"
            try FileManager.default.removeItem(atPath: launchScreenPath)
        } catch {
            print("Failed to delete launch screen cache - \(error)")
        }
        #endif
    }
}

उपयोग:

UIApplication.shared.clearLaunchScreenCache()

0

यह समस्या भी थी। कुल नौसिखिया होने के नाते मैंने लॉन्चस्स्क्रीन.स्टोरीबोर्ड को लॉन्चस्क्रीन में बदल दिया। रन विफल हुआ (duh), इसलिए मैंने इसे वापस बदल दिया .storyboard को पुन: चलाने के लिए ऐप को परीक्षण करने के लिए मैंने कुछ और नहीं खराब किया - और पुरानी स्क्रीन पहले दिखाई नहीं दी। इसलिए मैंने जो कुछ भी किया है, वह पुराने कैश को निकाल दिया है।


0

एक ही समस्या थी लेकिन केवल लॉन्चस्क्रीन स्टोरीबोर्ड में उपयोग की गई छवि के साथ। एसेट कैटलॉग से छवि को ऐप के बंडल में बदलकर उसका नाम बदलना (उदाहरण के लिए, एसेट कैटलॉग में पुरानी छवि सेट को लॉन्च_लोगो कहा जाता था, और ऐप बंडल में इमेज को लॉन्चस्क्रीन_लॉग.पंग कहा जाता है) ने हमारे लिए इस मुद्दे को हल किया।


0

मुझे लगता है कि ये स्थितियों पर निर्भर हैं। जब यह डीबग या परीक्षण पर होता है, तो लॉन्च स्क्रीन पर छवि हटाने का काम करता है। या अपने ऐप्स को अनइंस्टॉल करें, फिर लॉन्च को पुनरारंभ करें।

लेकिन यह संग्रह के बाद भी जाता है, तो यह रीसेट और साफ के साथ हल नहीं करता है।


0

मेरे मामले में मैंने ऐप सेटिंग से AppIcon Source का चयन नहीं किया है -> सामान्य - यहां छवि विवरण दर्ज करें> ऐप आइकन और लॉन्च छवियां -> ऐप आइकन स्रोत


0

इसे AppDelegate में आज़माएं

    if #available(iOS 13.0, *) {
        do {
            try FileManager.default.removeItem(atPath: NSHomeDirectory()+"/Library/SplashBoard")
        } catch {
            print("Failed to delete launch screen cache: \(error)")
        }
    } else {
        print("ios is min")
    }

0

मेरे लिए समाधान कार्य

  1. डिवाइस से अपना ऐप हटाएं
  2. डिवाइस को स्विच ऑफ करें
  3. डिवाइस पर स्विच करें
  4. साफ बनाएँ फ़ोल्डर
  5. फिर से निर्माण और स्थापित करें और एप्लिकेशन लॉन्च करें।

    का आनंद लें


0

सुनिश्चित करें कि आपने ये सभी चरण किए हैं

  1. निर्माण सेटिंग में ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME कुंजी की खोज करें और संपूर्ण एप्लिकेशन में उसके संपत्ति मूल्य को खोजें और फिर उसे निकालें।
  2. बिल्ड सेटिंग से ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME हटाएं।
  3. नया लॉन्च स्क्रीन Xcode बनाएं -> फ़ाइल -> नया -> फ़ाइल -> लॉन्च स्क्रीन
  4. गोटो ऐप मुख्य लक्ष्य -> ​​सामान्य -> ​​ऐप आइकन और लॉन्च छवियां -> लॉन्च स्क्रीन फ़ाइल -> नई लॉन्च स्क्रीन फ़ाइल चुनें।
  5. यदि आप केवल पुरानी लॉन्च स्क्रीन को बदल रहे हैं, तो विभिन्न नामों के साथ नई संपत्ति का नामकरण करने का प्रयास करें।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.