2013-02-09 27 views
152

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

if(icon) // if icon needs to be removed 
{ 
    [icon release]; 
    icon = nil; 
} 

... 

// add the icon to the status bar 
icon = [[%c(LSStatusBarItem) alloc] initWithIdentifier:[NSString stringWithFormat:@"muteIconLablabla"] alignment:StatusBarAlignmentRight]; 
icon.imageName = [NSString stringWithFormat:@"Mute"]; 

मैं भी तरीकों libStatusBar README फ़ाइल

[[UIApplication sharedApplication] addStatusBarImageNamed:@"ON_Mute"]; // and removeStatusBarImageNamed:... 

मैं -(id)init अधिभावी और वहाँ आइकन को अद्यतन करने की कोशिश की में सुझाव दिया उपयोग करने की कोशिश, लेकिन एक ही परिणाम ।

ऊपर दिखाया गया कोड static void फ़ंक्शन से कॉल किया जा रहा है। इस समारोह को कई बार कहा जा रहा है, उदाहरण के लिए -(void)applicationDidFinishLaunching:(id)application %hook SpringBoard और -(void)ringerChanged:(int)changed

सभी Tweak.xm के अंदर। समस्या iOS7 में भी होती है।

उत्तर

2

यह कुछ समय हो गया है क्योंकि मैंने libstatusbar का उपयोग किया है, लेकिन यदि आप पूरी तरह से सुनिश्चित हैं कि LSStatusBarItem जारी नहीं किया जा रहा है, तो संभव है कि यह स्प्रिंगबोर्ड या किसी अन्य ऐप से छिपा हुआ हो। स्पष्ट रूप से icon.visible = YES सेटिंग पर विचार करें। आप LSStatusBarServer पर NO पर [item setHidesTime:NO] पर कॉल करके स्पष्ट रूप से सेट करना चाहेंगे।

इसके अतिरिक्त, यदि आप आइकन में कोई भी परिवर्तन नहीं कर रहे हैं, तो icon.manualUpdate = NO सेट करें।

संदर्भ: