如何使用跳板服务框架使用SBSLaunchApplicationWithIdentifier(How

2019-07-31 08:24发布

我想用跳板的服务框架,利用下面的代码。

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

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

Answer 1:

究竟是什么,你打算使用这种方法呢? 我的印象是用于启动从后台的应用程序下?

还有其他的方法来很容易地启动应用程序。 最可靠的,我发现是使用显示堆栈正确启动应用程序。 启动应用程序的其它方法往往当你关闭它,并试图重振造成的问题和崩溃。

使用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框架进行链接。



文章来源: How to use Springboard Services Framework to use SBSLaunchApplicationWithIdentifier