Я разрабатываю твики для взломанного iphone, iOS 7, и у меня есть проблема, которую я не могу решить какое-то время, можно ли закрыть все приложения, работающие в фоновом режиме, прямо из Springboard, не открывая панель переключателя фона? Все настройки и исходные коды, которые я видел, такие как Purge, Slide2Kill, работают с панели переключателя приложений, используя себя в качестве контроллера.
Я пробовал следующие способы:
SBAppSliderController* switcherController = MSHookIvar<SBAppSliderController*>(self, "_switcherController");
//or
SBUIController *sharedUI = [objc_getClass("SBUIController") sharedInstance];
SBAppSliderController * switcherController = [sharedUI _appSliderController];
//tried this:
SBAppSliderController * switcherController = [sharedUI _switcherController];
//and
SBAppSliderController * switcherController = MSHookIvar<SBAppSliderController *>(sharedUI, "_switcherController");
Чтобы выйти из всех приложений, мне нужно вызвать _quitAppAtIndex со всеми доступными индексами приложений.
[switcherController _quitAppAtIndex:appIndex];
%hook SBAppSliderController
- (void)_quitAppAtIndex:(unsigned int)arg1
{
%log;
if (arg1 == 0) {
for (NSString *appID in [self applicationList]) {
if (![appID isEqualToString:@"com.apple.springboard"])
[self _quitAppAtIndex:[[self applicationList] indexOfObject:appID]];
}
}
else
%orig;
}
Каждый раз, когда я вызываю функцию, я получаю следующую ошибку, даже если я хочу закрыть только одно приложение, и я вызываю его с определенным индексом:
: -[ _quitAppAtIndex:1] : * Завершение работы приложения из-за необработанного исключения "NSInvalidArgumentException", причина: "* -[__NSDictionaryM removeObjectForKey:]: ключ не может быть нулевым"
Что я делаю неправильно? любая помощь будет оценена
Спасибо.