iOS - команда открытия Cydia и ее аналог?
Существует утилита командной строки Cydia, которая называется open
который откроет приложение для iOS и прикрепится к SpringBoard.
Есть ли соответствующий close
команда, которая отправит правильный сигнал приложению? Он должен послать правильный сигнал, чтобы выполнить необходимую очистку перед завершением. kill
Команда не может быть использована, так как приложение не может перехватить сигнал.
Я искал все выше и ниже этот конкретный инструмент командной строки, но пока не нашел его.
Спасибо.
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). Здесь вы можете найти копии обоих. Добавьте их в свой проект и
#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);
}
Этот код должен использоваться в качестве метода для закрытия текущего приложения (т.е. код выполняется внутри приложения UIA, которое находится на переднем плане) или другого открытого приложения (как в случае создания утилиты командной строки).
Hattip к libActivator для идеи.