2014-09-19 3 views
3

Раньше я использовал платформу весенних платформ, чтобы получить самое первое приложение, которое работает отлично до ios7, но в iOS8. Я не получаю имя самого последнего приложения. Я использую этот код.Как получить приложение FrontMost - iOS8

#define SBSERVPATH "/System/Library/PrivateFrameworks/SpringBoardServices.framework/SpringBoardServices" 
#define UIKITPATH "/System/Library/Framework/UIKit.framework/UIKit" 
//To get port 
    mach_port_t *p; 
    void *uikit = dlopen(UIKITPATH, RTLD_LAZY); 
    int (*SBSSpringBoardServerPort)() = 
    dlsym(uikit, "SBSSpringBoardServerPort"); 
    p = (mach_port_t *)SBSSpringBoardServerPort(); 
    dlclose(uikit); 

void *sbserv = dlopen(SBSERVPATH, RTLD_LAZY); 

void* (*SBFrontmostApplicationDisplayIdentifier)(mach_port_t* port,char * result) = 
    dlsym(sbserv, "SBFrontmostApplicationDisplayIdentifier"); 
    //Get frontmost application 
    char frontmostAppS[256]; 
    memset(frontmostAppS,sizeof(frontmostAppS),0); 
    SBFrontmostApplicationDisplayIdentifier(p,frontmostAppS); 
    NSString * frontmostApp=[NSString stringWithFormat:@"%s",frontmostAppS]; 

Может кто-нибудь, пожалуйста, помогите мне разобраться. или в любом месте, где я ошибаюсь, можете добавить свет. Спасибо заранее.

+0

у вас есть решение для ios 8? – Bittu

ответ

3

Возможно, вы не можете. По this post, получая переднее большинство приложений через SBFrontmostApplicationDisplayIdentifier считается утечкой конфиденциальности и был заблокировано в прошивке 8.

0

Если вы на Jailbroken окружающей среды и закреплять в SpringBoard вы можете использовать SpringBoard-х _accessibilityFrontMostApplication, чтобы получить ссылку на самое верхнее SBApplication:

[[SpringBoard sharedApplication] _accessibilityFrontMostApplication] 

Если это возвращает nil пользователь находится на главном экране.