有一个名为Cydia的命令行实用程序open
,它将打开一个 iOS 应用程序并附加到 SpringBoard。
是否有相应的close
命令可以向应用程序发送正确的信号?它需要发送正确的信号,以便在终止之前进行必要的清理。该kill
命令无法使用,因为应用程序无法捕获信号。
我一直在寻找这个特定的命令行工具,但还没有找到。
谢谢你。
我不知道任何这样的命令,但是您当然可以自己构建一个模拟主页按钮按下的命令。那应该以正常方式关闭打开的应用程序。这不是异常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,它#includes)生成头文件。 在这里您可以找到两者的副本。将它们添加到您的项目和#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的想法。
您是否尝试过使用
killall MobileCydia
应该管用