我正在为运行IOS 7的iPhone制作我的第一个 MobileSubstrate Tweak。
我正在使用this tutorial。
本教程解释了Hooking
的基础知识,并提供了他的源代码的git hub示例。
为了测试他编写的代码,并且为了让我的头脑在 theos 编译终端,我编译了他的项目。
项目假设在启动应用程序时显示UIAlert
,并在iPhone中的设置应用程序中设置切换状态为on或off。
当我将这个已编译的deb安装到我的iphone上时,会添加设置页面以便我可以打开或关闭该功能,但是当该功能打开时,警报不会显示。
这是我的Tweak.xm代码:
@interface SBApplicationIcon
-(void)launch;
-(id)displayName;
@end
%hook SBApplicationIcon
-(void)launch
{
NSString *appName = [self displayName];
NSMutableDictionary *settings = [NSMutableDictionary dictionaryWithContentsOfFile:
[NSString stringWithFormat:@"%@/Library/Preferences/%@", NSHomeDirectory(), @"com.AndyIbanez.NotifierSettings.plist"]];
NSNumber* shouldNotify = [settings objectForKey:@"alertLaunch"];
if([shouldNotify boolValue] == YES)
{
NSString *message = [NSString stringWithFormat:@"The app %@ has been launched", appName, nil];
UIAlertView *alert1 = [[UIAlertView alloc] initWithTitle:appName message:message delegate:self cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alert1 show];
[alert1 release];
}
%orig;
}
%end
以下是我关注并引人注目的GitHub示例文件:https://github.com/AndyIbanez/TutorialProjects/tree/master/launchnotifier
答案 0 :(得分:1)
launch
适用于iOS 6,您需要在iOS 7上使用launchFromLocation:
。
@interface SBIcon : NSObject
- (void)launch; // iOS 6
- (void)launchFromLocation:(NSInteger)location; //iOS 7
@end