Как использовать Springboard Services Framework для использования SBSLaunchApplicationWithIdentifier
Я хотел бы использовать среду сервисов Springboard, чтобы использовать следующий код.
SBSLaunchApplicationWithIdentifier(CFSTR("com.apple.preferences"), false);
Однако, когда я загружаю файлы заголовков и использую их в своем проекте, он не собирается. Пожалуйста, дайте мне знать, как сделать эту работу.
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.