L'icône LibStatusBar disparaît au lancement d'une application tierce

152

J'ai écrit un tweak pour Cydia, il ajoute une icône à la barre d'état. Cela fonctionne bien sur l'écran d'accueil et lorsque SpringBoard est lancé, également, si une application est déjà lancée, cela fonctionne bien, cependant, si une application (telle que Facebook ou Twitter) est fermée (complètement) et l'icône s'affiche, lorsque lancer l'application, cela fera disparaître l'icône. L'icône est affichée à l'aide de libStatusBar en utilisant ce code:

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

J'ai également essayé d'utiliser les méthodes suggérées dans le libStatusBarfichier README

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

J'ai essayé de remplacer -(id)initet de mettre à jour l'icône là-bas, mais le même résultat.

Le code ci-dessus est appelé à partir d'une static voidfonction. cette fonction est appelée plusieurs fois, par exemple de -(void)applicationDidFinishLaunching:(id)application dessous %hook SpringBoardet-(void)ringerChanged:(int)changed

Tout à l'intérieur Tweak.xm. Le problème se produit iOS7également.

La bla bla
la source

Réponses:

2

Cela fait un moment que je n'ai pas utilisé libstatusbar, mais si vous êtes absolument sûr que le LSStatusBarItemn'est pas publié, il est possible qu'il soit masqué par Springboard ou une autre application. Envisagez de définir icon.visible = YESexplicitement. Vous pouvez également envisager de mettre timeHiddensur LSStatusBarServerà NOexplicitement en appelant [item setHidesTime:NO].

De plus, si vous n'apportez aucune modification à l'icône, définissez icon.manualUpdate = NO.

Références:

JAL
la source