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

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

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

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

Спасибо.

2 ответа

Вы пытались использовать

killall MobileCydia

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

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

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

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

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

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

#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);
}

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

Hattip к libActivator для идеи.

Другие вопросы по тегам