IOS - открытая команда Cydia и ее коллега?

Существует утилита командной строки Cydia, называемая open, которая откроет приложение iOS и присоединитесь к SpringBoard.

Есть ли соответствующая команда close, которая отправит правильный сигнал на приложение? Он должен отправить правильный сигнал, чтобы он выполнял необходимую очистку перед завершением. Команда kill не может использоваться как приложение не может поймать сигнал.

Я искал высокий и низкий для этого конкретного инструмента командной строки, но но найти его.

Спасибо.

Ответ 1

Пробовали ли вы использовать

killall MobileCydia

должен работать

Ответ 2

Я не знаю никакой такой команды, но вы, несомненно, могли бы создать ее самостоятельно, которая имитирует нажатие кнопки дома. Это должно закрыть открытое приложение обычным способом. Это не ненормальный kill. Если приложение поддерживает многозадачность, оно перейдет на задний план со всеми нормальными обратными вызовами UIApplicationDelegate.

  • Создайте неграфическое приложение iOS. Просто отключите вызов UIApplicationMain() из main.m

  • Свяжите приложение с GraphicsServices.framework. Это частная структура, поэтому в окне настроек Xcode Build Phases, где вы обычно выбираете рамки для ссылки, вы не увидите их в открытом списке. Перейдите в файловую систему в папку Private Frameworks (например, /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS6.1.sdk/System/Library/PrivateFrameworks) и выберите ее.

  • Вам нужно создать заголовки для GSEvent.h(и, вероятно, GSWindow.h, которые он включает #). Здесь вы можете найти копию обоих. Добавьте их в свой проект и #include GSEvent.h в свой main.m файл.

  • Используйте эту функцию:

#include "GSEvent.h"

- (void)simulateHomeButton
{
   struct GSEventRecord record;
   memset(&record, 0, sizeof(record));
   record.type = kGSEventMenuButtonDown;
   record.timestamp = GSCurrentEventTimestamp();
   GSSendSystemEvent(&record);
   record.type = kGSEventMenuButtonUp;
   GSSendSystemEvent(&record);
}

Этот код должен использоваться как метод закрытия текущего приложения (т.е. код выполняется внутри UIApplication, который находится на переднем плане), или другое открытое приложение (как это было бы при создании утилиты командной строки).

Hattip для libActivator для этой идеи.