目前就我知道的开机启动有两种方式(仅限于越狱机器):
1、IOS设备开机后会自动加载LaunchDemos目录下面的Plist,这些Plist里面记录了相关的app信息,这些app都会在IOS开机后自动加载。(但这些app不会跑到前台来运行,也就是说不会进入到app的界面中去,可以让app悄无声息的运行在后台)
2、用%hook来钩取SpringBoard的启动函数:
- (void)applicationDidFinishLaunching:(id)application;
通过重写这个函数的功能,在里面OpenURL跳转到自己要开机启动的app(这个app会在前台打开,也就是说会直接进入到这个app的界面中去,)
以下是我对第二种方法实现的步骤总结:
1、新建工程:xcode-》file-》new-》project-》iOSOpenDev-》logos tweak, 取名叫aaaaaa,这个工程里面有两个文件很重要就是aaaaaa.xm和aaaaaa.mm文件,其中aaaaaa.mm文件的内容是编译器根据aaaaaa.xm自动填充的,暂时不管aaaaaa.mm文件,现在我们主要是对于aaaaaa.xm文件的编辑
2、按照错误提示,添加libsubstrate.dylib库到工程中,然后删除错误提示代码
3、在添加UIKit.framework
4、在aaaaaa.xm文件里面添加以下代码
#import <UIKit/UIKit.h>
%hook SpringBoard
-(void)applicationDidFinishLaunching:(id)application {
%log;
%orig;
UIAlertView *alert = [[UIAlertView alloc] initWithTitle:@"applicationDidFinishLaunching"
message:@"Hello World!"
delegate:nil
cancelButtonTitle:@"Thanks"
otherButtonTitles:nil];
[alert show];
[alert release];
[[UIApplication sharedApplication] openURL:[NSURL URLWithString:@"inf://"]]; //@"inf://"是你想要打开app注册的scheme,对scheme有疑问请移步baidu
} %end