为什么我的Tweak不能正常工作?

时间:2014-02-02 14:27:10

标签: ios objective-c cydia-substrate

我正在为运行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

1 个答案:

答案 0 :(得分:1)

launch适用于iOS 6,您需要在iOS 7上使用launchFromLocation:

@interface SBIcon : NSObject
- (void)launch; // iOS 6
- (void)launchFromLocation:(NSInteger)location; //iOS 7
@end