2011-04-08 20 views
6

दिखाए बिना लॉगिन पर खुला एप्लिकेशन, मैं उस एप्लिकेशन को विकसित कर रहा हूं जिसे मैं उपयोगकर्ता लॉग इन करते समय स्वचालित रूप से प्रारंभ करना चाहता हूं। ऐसा करने के तरीके पर कई जवाब हैं, विशेष रूप से मैं इसका उपयोग कर रहा हूं this GitHub repository से कोड, और यह ठीक काम करता है।मैक ओएस एक्स: मुख्य विंडो

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

क्या यह संभव है? इसे कैसे करना है इस पर कोई आइडिया?

लेखा प्रणाली वरीयता में, जहां आप लॉगिन पर लॉन्च करने वाले एप्लिकेशन सेट करते हैं, वहां एक "छुपाएं" चेक होता है जो मैं चाहता हूं, लेकिन मैं इसे प्रोग्रामेटिक रूप से करना चाहता हूं।

उत्तर

10

अच्छा, मुझे यह पता चला है कि यह कैसे करें ... यह Open Radar bug report helped, मैं गलत संपत्ति का उपयोग कर रहा था।

कोड यह रहा:

- (void)enableLoginItemWithLoginItemsReference:(LSSharedFileListRef)theLoginItemsRefs ForPath:(NSString *)appPath { 
// We call LSSharedFileListInsertItemURL to insert the item at the bottom of Login Items list. 
CFURLRef url = (CFURLRef)[NSURL fileURLWithPath:appPath]; 

CFMutableDictionaryRef inPropertiesToSet = CFDictionaryCreateMutable(NULL, 1, NULL, NULL); 
CFDictionaryAddValue(inPropertiesToSet, kLSSharedFileListLoginItemHidden, kCFBooleanTrue); 

LSSharedFileListItemRef item = LSSharedFileListInsertItemURL(theLoginItemsRefs, kLSSharedFileListItemLast, NULL, NULL, url, inPropertiesToSet, NULL);  
if (item) { 
    CFRelease(item); 
} 
} 

समाधान कुंजी kLSSharedFileListLoginItemHidden और मूल्य सच के साथ एक शब्दकोश बनाने के लिए, और यह LSSharedFileListInsertItemURL कार्य करने के लिए पारित करने के लिए किया गया था।

+0

हाय मार्कोस, मुझे अपने मैक ओएस एक्स एप्लिकेशन पर एक ही समस्या है। मैंने आपके कोड की कोशिश की, यह उपयोगकर्ता और समूह-> मैक ओएस एक्स शेर पर अपना ऐप इंस्टॉल करने के बाद मेरे एप्लिकेशन के लिए लॉग इन इटम्स के रूप में छिपा हुआ है (टिक सक्षम)। लेकिन, जब मैं अपनी मशीन रीबूट करता हूं, तो यह मेरी एप्लिकेशन विंडो खोलता है, जिसे मैं स्वचालित रूप से दिखाने के बजाय UIWindow को छिपाना चाहता था। क्या आप कृपया मुझे सलाह दे सकते हैं कि मैं इसे ठीक कैसे कर सकता हूं? – Getsy

+0

इस उत्तर के लिए धन्यवाद लेकिन मुझे कैसे पता चलेगा कि ऐप स्वचालित रूप से लॉन्च किया गया है या उपयोगकर्ता द्वारा स्वतंत्र रूप से मुख्य विंडो को प्रदर्शित करने के लिए या वास्तविक रूप से उपयोगकर्ता द्वारा लॉन्च किया गया है? धन्यवाद !! –

+0

@ मार्कोस-क्रिस्पिनो क्या आप कोड को पोस्ट कर सकते हैं जहां आप * चेक * देख सकते हैं कि ऐप लॉग इन बनाम मैन्युअल रूप से खोला गया था या नहीं? – cksubs