Всем Великий Бог!Мне очень нужна помощь~
До iOS8 я использовал PrivateFrameworks SpringBoardServices, отслеживая приложение, работающее на переднем плане, в порядке. Как следующий код:
#define SPRINGBOARDPATH "/System/Library/PrivateFrameworks/SpringBoardServices.framework/SpringBoardServices"
....
+(void) monitoringFrontApp {
mach_port_t *port;
void *uikit = dlopen(SPRINGBOARDPATH, RTLD_LAZY);
int (*SBSSpringBoardServerPort)() =
dlsym(uikit, "SBSSpringBoardServerPort");
port = (mach_port_t *)SBSSpringBoardServerPort();
//dynamic link sys mothed
void* (*SBFrontmostApplicationDisplayIdentifier)(mach_port_t* port,char * result) =
dlsym(uikit, "SBFrontmostApplicationDisplayIdentifier");
//call mothed
char frontmostAppS[256];
memset(frontmostAppS,sizeof(frontmostAppS),0);
SBFrontmostApplicationDisplayIdentifier(port,frontmostAppS);
NSString * app_id = [NSString stringWithUTF8String:frontmostAppS];
NSLog(@"front display app Identifier----%@", app_id);
//dynamic link sys mothed
CFStringRef (*SBSCopyLocalizedApplicationNameForDisplayIdentifier)(CFStringRef displayIdentifier) =
dlsym(uikit, "SBSCopyLocalizedApplicationNameForDisplayIdentifier");
//call mothed
CFStringRef locName = SBSCopyLocalizedApplicationNameForDisplayIdentifier((__bridge CFStringRef)app_id);
NSString *app_name = [NSString stringWithFormat:@"%@",locName];
if (locName != NULL)CFRelease(locName);
NSLog(@"front display app name----%@", app_name);
}
Но... Недавно выпущенная iOS8, все изменилось. Я не могу с помощью вызова «SBFrontmostApplicationDisplayIdentifier» получить идентификатор приложения переднего дисплея, а «SBSCopyLocalizedApplicationNameForDisplayIdentifier» недействителен.
Итак, я долго искал в Google, но безрезультатно, всем буду признателен за ответ !!!
Ниже приводится, на мой взгляд, ценная информация:
http://blog.lazerwalker.com/blog/2013/10/16/faking-touch-events-on-ios-for-fun-and-profit https://github.com/Cykey/ios-reversed-headers/blob/c613e45f3ee5ad9f85ec7d43906cf69ee812ec6a/SpringBoardServices/SpringBoardServices.h а>