Написал твик для 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
.