2013-02-09 12 views
152

Ho scritto un tweak per Cydia, aggiunge un'icona alla barra di stato. Funziona alla perfezione sulla schermata iniziale e quando viene avviato SpringBoard, inoltre, se un'app è già avviata, funziona comunque, , se un'applicazione (come Facebook o Twitter) è chiusa (completamente) e l'icona mostra , quando si avvia l'applicazione, l'icona scompare. L'icona viene visualizzata utilizzando libStatusBar utilizzando questo codice:L'icona di LibStatusBar scompare all'avvio dell'app di terze parti

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

Ho anche provato ad utilizzare i metodi suggeriti nel file di libStatusBar README

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

Ho provato l'override -(id)init e aggiornare l'icona lì, ma lo stesso risultato .

Il codice mostrato sopra viene chiamato da una funzione static void. questa funzione è chiamato più volte, ad esempio da -(void)applicationDidFinishLaunching:(id)application sotto %hook SpringBoard e -(void)ringerChanged:(int)changed

All interno Tweak.xm. Il problema si verifica anche in iOS7.

risposta

2

È passato un po 'di tempo da quando ho usato libstatusbar, ma se sei assolutamente sicuro che lo LSStatusBarItem non viene rilasciato, è possibile che sia nascosto da Springboard o da un'altra app. Prendere in considerazione l'impostazione icon.visible = YES in modo esplicito. Si potrebbe anche voler prendere in considerazione l'impostazione timeHidden su LSStatusBarServer a NO in modo esplicito chiamando [item setHidesTime:NO].

Inoltre, se non si apportano modifiche all'icona, impostare icon.manualUpdate = NO.

Riferimenti: