1

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

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

但是,当我下载头文件并在我的项目中使用它时,它不会构建。请让我知道如何使这项工作。

4

1 回答 1

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];

However, if you really want to use that method, you need to specify what errors are stopping it from building and check which header files you are using to build it with. You also need to link against the SBS framework.

于 2012-09-03T12:17:18.163 回答