लॉन्च करने में चुपचाप विफल रहता है मेरे पास एक ऐप है जो सैंडबॉक्स किया गया है, और इसमें एक सहायक शामिल है जो कुछ यूआई प्रस्तुत करता है (एक पूर्ण स्क्रीन विंडो के रूप में, लेकिन एक स्टेटस आइटम या इसी तरह का भी हो सकता है)।SMLoginItemSetEnabled कभी-कभी सैंडबॉक्स किए गए यूआई सहायक
यह काम करता है ... ज्यादातर समय। लेकिन कभी-कभी यह नहीं करता; यह चुपचाप सहायक शुरू करने में विफल रहता है।
चूंकि सहायक के पास UI है, तो मैं इसे लोड करने के लिए SMLoginItemSetEnabled
का उपयोग करता हूं, फिर NSXPCConnection
इसके साथ संवाद करने के लिए। लेकिन कभी-कभी SMLoginItemSetEnabled
इसे लॉन्च करने में विफल रहता है, जबकि अभी भी हाँ लौट रहा है।
ऐसा लगता है कि यह मशीन पर कहीं भी ऐप के पुराने निर्माण के कारण होता है; ऐसा लगता है कि लॉगिन तंत्र को भ्रमित कर रहा है। पुराने ऐप को हटाने से इसे ठीक किया जाता है, लेकिन मैं उचित रूप से उपयोगकर्ताओं को ऐसा करने की उम्मीद नहीं कर सकता (कुछ लोग पुराने संस्करणों को आसपास रखना चाहते हैं)।
मैं एप बंडल में सहायक के यूआरएल के साथ -[NSWorkspace URLForApplicationWithBundleIdentifier:]
के परिणाम की तुलना करके इस स्थिति का पता लगा सकता हूं, लेकिन उपयोगकर्ता को अन्य ऐप को हटाने के लिए कहने के लिए एक बहुत ही सुरुचिपूर्ण समाधान नहीं है।
क्या SMLoginItemSetEnabled
बनाने के लिए कोई तरीका है हमेशा डिस्क पर कुछ यादृच्छिक एक के बजाय वर्तमान ऐप बंडल से लॉगिन आइटम का उपयोग करें?
या यूआई के साथ मददगारों के लिए एक और अधिक सुरुचिपूर्ण तंत्र का समर्थन करने के लिए हाल ही में ओएस रिलीज़ में कुछ भी बदल गया है?
मैंने इस विषय पर और अन्य जगहों पर कई अन्य प्रश्न पढ़े हैं, और ऐसा लगता है कि यह गुंजाइश तंत्र अभी भी सबसे अच्छा समाधान है, लेकिन शायद मुझे कुछ याद आया।
इस प्रतिक्रिया के लिए धन्यवाद @Lionel_A! यह एक बड़ी मदद थी। मुझे मिली दूसरी बात यह थी कि कम से कम एक ट्यूटोरियल ने MainMenu.xib और ViewController.swift को हटाने का सुझाव दिया था। यह _bad_ विचार था क्योंकि मेरा सहायक ऐप बस क्रैश हो रहा था। एक्सकोड ने शिकायत नहीं की कि संकलन समय पर कोई xib नहीं था। – drootang