如何使用Springboard Services Framework来使用SBSLaunchApplicationWithIdentifier

时间:2012-09-03 11:35:33

标签: iphone ios jailbreak springboard

我想使用Springboard服务框架来使用以下代码。

SBSLaunchApplicationWithIdentifier(CFSTR("com.apple.preferences"), false);

然而,当我下载头文件并在我的项目中使用它时,它将无法构建。请让我知道如何使这项工作。

1 个答案:

答案 0 :(得分:3)

您准备使用该方法的具体内容是什么?我的印象是从守护进程启动应用程序?

还有其他方法可以轻松启动应用程序。我发现最可靠的是使用显示栈来正确启动应用程序。其他启动应用程序的方法往往会在您关闭它并尝试重新启动并崩溃时引起问题。

使用theos,你可以这样做:

NSMutableArray *displayStacks = nil;

// Display stack names
#define SBWPreActivateDisplayStack        [displayStacks objectAtIndex:0]
#define SBWActiveDisplayStack             [displayStacks objectAtIndex:1]
#define SBWSuspendingDisplayStack         [displayStacks objectAtIndex:2]
#define SBWSuspendedEventOnlyDisplayStack [displayStacks objectAtIndex:3]

// Hook SBDisplayStack to get access to the stacks

%hook SBDisplayStack

-(id)init
{
    %log;
    if ((self = %orig)) 
    {
        NSLog(@"FBAuth: addDisplayStack");
        [displayStacks addObject:self];
    }
    return self;
}

-(void)dealloc
{
    [displayStacks removeObject:self];
    %orig;
}

%end

然后启动应用程序,执行以下操作:

id PreferencesApp = [[objc_getClass("SBApplicationController") sharedInstance] applicationWithDisplayIdentifier:@"com.apple.preferences"];

[SBWActiveDisplayStack pushDisplay:PreferencesApp];

但是,如果您确实想要使用该方法,则需要指定阻止其构建的错误,并检查您使用哪些头文件进行构建。您还需要链接到SBS框架。