Das LibStatusBar-Symbol verschwindet beim Start der App eines Drittanbieters


152

Ich habe eine Optimierung für Cydia geschrieben, die der Statusleiste ein Symbol hinzufügt. Es funktioniert einwandfrei auf dem Startbildschirm und wenn SpringBoard gestartet wird. Wenn eine App bereits gestartet ist, funktioniert es einwandfrei. Wenn jedoch eine App (wie Facebook oder Twitter) geschlossen ist (vollständig) und das Symbol angezeigt wird, wann Wenn Sie die App starten, verschwindet das Symbol. Das Symbol wird mit libStatusBar mit folgendem Code angezeigt:

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

Ich habe auch versucht, die in der libStatusBarREADME-Datei vorgeschlagenen Methoden zu verwenden

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

Ich habe versucht, -(id)initdas Symbol dort zu überschreiben und zu aktualisieren, aber das gleiche Ergebnis.

Der oben gezeigte Code wird von einer static voidFunktion aufgerufen . Diese Funktion wird mehrmals aufgerufen, zum Beispiel von -(void)applicationDidFinishLaunching:(id)application unter %hook SpringBoardund-(void)ringerChanged:(int)changed

Alles drinnen Tweak.xm. Das Problem tritt auch in iOS7auf.

Antworten:


2

Es ist schon eine Weile her, dass ich libstatusbar verwendet habe, aber wenn Sie absolut sicher sind, dass das LSStatusBarItemnicht veröffentlicht wird, ist es möglich, dass es von Springboard oder einer anderen App ausgeblendet wird. Erwägen Sie eine icon.visible = YESexplizite Einstellung . Vielleicht haben Sie auch Einstellung zu prüfen, timeHiddenauf LSStatusBarServerzu NOdurch den Aufruf explizit [item setHidesTime:NO].

Wenn Sie keine Änderungen am Symbol vornehmen, legen Sie außerdem fest icon.manualUpdate = NO.

Verweise:

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.