web-dev-qa-db-ja.com

サードパーティアプリの起動時にLibStatusBarアイコンが消える

Cydia用のTweakを作成しました。ステータスバーにアイコンが追加されます。これはホーム画面で正常に機能し、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_関数から呼び出されています。この関数は、たとえば_%hook SpringBoard_および-(void)applicationDidFinishLaunching:(id)applicationの下の-(void)ringerChanged:(int)changedから数回呼び出されています

すべて_Tweak.xm_内。問題は_iOS7_でも発生します。

152
La bla bla

Libstatusbarを使用して久しぶりですが、LSStatusBarItemがリリースされていないことが確実である場合は、Springboardまたは別のアプリによって非表示にされている可能性があります。 icon.visible = YESを明示的に設定することを検討してください。 [item setHidesTime:NO]を呼び出して、timeHiddenLSStatusBarServerを明示的にNOに設定することも検討してください。

また、アイコンに変更を加えない場合は、icon.manualUpdate = NOを設定します。

参照:

2
JAL