Ícone LibStatusBar desaparece no lançamento de aplicativos de terceiros

152

Eu escrevi um tweak para o Cydia, ele adiciona um ícone à barra de status. Ele funciona bem na tela inicial e, quando o SpringBoard é iniciado, também, se um aplicativo já foi iniciado, ele funciona bem; no entanto, se um aplicativo (como o Facebook ou o Twitter) estiver fechado (completamente) e o ícone aparecer, quando ao iniciar o aplicativo, o ícone desaparecerá. O ícone é exibido 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"];

Eu também tentei usar os métodos sugeridos no libStatusBararquivo README

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

Tentei substituir -(id)inite atualizar o ícone lá, mas o mesmo resultado.

O código mostrado acima está sendo chamado de uma static voidfunção. esta função está sendo chamada várias vezes, por exemplo, de -(void)applicationDidFinishLaunching:(id)application baixo %hook SpringBoarde de baixo-(void)ringerChanged:(int)changed

Tudo por dentro Tweak.xm. O problema acontece iOS7também.

La bla bla
fonte

Respostas:

2

Já faz um tempo desde que usei a libstatusbar, mas se você tiver certeza absoluta de que a versão LSStatusBarItemnão está sendo lançada, é possível que ela esteja oculta pelo Springboard ou por outro aplicativo. Considere definir icon.visible = YESexplicitamente. Você também pode querer considerar a criação timeHiddenem LSStatusBarServerque NOexplicitamente chamando [item setHidesTime:NO].

Além disso, se você não estiver fazendo alterações no ícone, defina icon.manualUpdate = NO.

Referências:

JAL
fonte