2013-02-09 25 views
152

Cydia için bir çimdik yazdım, durum çubuğuna bir simge ekler. Ana ekranda güzel çalışıyor ve SpringBoard başlatıldığında, bir uygulama zaten başlatılmışsa, bir uygulama (Facebook ya da Twitter gibi) kapalı (tamamen) ve simge görüntüleniyorsa, çalışır. Uygulamayı başlatırken, simgenin kaybolmasına neden olur. simgesi Bu kodu kullanarak libStatusBar kullanılarak görüntülenir:LibStatusBar simgesi üçüncü taraf uygulama başladığında kayboluyor

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"]; 

Ben de -(id)init ağır basan ve orada simgeyi güncellemeye çalıştık

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

libStatusBar README dosyasında önerilen yöntemler kullanılarak çalıştı, ancak aynı sonucu .

Yukarıda gösterilen kod static void işlevinden çağrılmaktadır. Bu fonksiyon %hook SpringBoard ve tamamı Tweak.xm

-(void)ringerChanged:(int)changed altında -(void)applicationDidFinishLaunching:(id)application örneğin birkaç kez, deniliyor. Sorun, iOS7'da da gerçekleşir.

cevap

2

Libstatusbar'ı kullandığımdan beri bir süre geçti, ancak LSStatusBarItem yayımlandığından kesinlikle eminseniz, Springboard veya başka bir uygulama tarafından gizlenmiş olması olasıdır. icon.visible = YES'u açıkça belirtmeyi düşünün. Ayrıca [item setHidesTime:NO] numaralı telefonu arayarak numaralı LSStatusBarServer numaralı telefonu NO numaralı telefonu açıkça belirtmek isteyebilirsiniz.

Ayrıca, simgede herhangi bir değişiklik yapmıyorsanız, icon.manualUpdate = NO'u ayarlayın.

Referanslar: