Значок LibStatusBar исчезает при запуске стороннего приложения

Написал твик для Cydia, он добавляет иконку в строку состояния. Он отлично работает на главном экране и при запуске SpringBoard, а также, если приложение уже запущено, оно работает нормально, однако, если приложение (например, Facebook или Twitter) закрыто (полностью) и отображается значок, когда при запуске приложения значок исчезнет. Значок отображается с помощью libStatusBar с использованием этого кода:

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

Я также пробовал использовать методы, предложенные в файле libStatusBar README.

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

Я попытался переопределить -(id)init и обновить там иконку, но результат тот же.

Показанный выше код вызывается из функции static void. эта функция вызывается несколько раз, например из -(void)applicationDidFinishLaunching:(id)application под %hook SpringBoard и -(void)ringerChanged:(int)changed

Все внутри Tweak.xm. Проблема возникает и в iOS7.


person La bla bla    schedule 09.02.2013    source источник


Ответы (1)


Прошло некоторое время с тех пор, как я использовал libstatusbar, но если вы абсолютно уверены, что LSStatusBarItem не выпускается, возможно, он скрыт Springboard или другим приложением. Рассмотрите возможность явной установки icon.visible = YES. Вы также можете захотеть явно установить timeHidden на LSStatusBarServer на NO, вызвав [item setHidesTime:NO].

Кроме того, если вы не вносите никаких изменений в значок, установите icon.manualUpdate = NO.

Использованная литература:

person JAL    schedule 21.06.2016