El ícono de LibStatusBar desaparece en el lanzamiento de la aplicación de terceros

Escribí un tweak para Cydia, agrega un ícono a la barra de estado. Funciona bien en la pantalla de inicio y cuando se lanza SpringBoard, también, si ya se lanzó una aplicación, funciona bien, sin embargo, si una aplicación (como Facebook o Twitter) está cerrada (completamente) y el ícono se muestra, cuando Al iniciar la aplicación, hará desaparecer el ícono. El icono se muestra usando libStatusBar usando este código:

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

También intenté usar los methods sugeridos en el file README de libStatusBar

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

Intenté anular -(id)init y actualizar el ícono allí, pero el mismo resultado.

El código que se muestra arriba se llama desde una function static void . esta function se invoca varias veces, por ejemplo desde la -(void)applicationDidFinishLaunching:(id)application en %hook SpringBoard y -(void)ringerChanged:(int)changed

Todo dentro de Tweak.xm . El problema también ocurre en iOS7 .

Ha pasado un time desde que utilicé libstatusbar, pero si estás absolutamente seguro de que el LSStatusBarItem no se está lanzando, es posible que esté siendo ocultado por Springboard u otra aplicación. Considere configurar icon.visible = YES explícitamente. También es posible que desee considerar establecer timeHidden en LSStatusBarServer a NO explícitamente llamando a [item setHidesTime:NO] .

Además, si no realiza ningún cambio en el icono, configure icon.manualUpdate = NO .

Referencias:

  • Libstatusbar en el iPhoneDevWiki
  • LSStatusBarItem.mm fuente