확장프로그램 - iOS 8 확장 프로그램 실행 감지 방법




확장프로그램 보이기 (4)

내 공유 라이브러리의 경우 앱 확장 플래그가 '예'로 설정된 별도의 타겟을 만들고 특정 타겟에 대한 빌드 설정 내에서 프리 프로세서 매크로를 사용했습니다.

누구든지 iOS 8 Extension에서 실행중인 경우 코드에서 어떻게 감지하는지 알고 있습니까?

앱과 확장 프로그램간에 수업을 공유하는 앱이 있습니다. 앱 코드는 [UIApplication sharedApplication] 하지만 확장 프로그램 내에서 사용할 수 없으므로 다음과 같이 컴파일되지 않습니다 :

'sharedApplication' is unavailable: not available iOS (App Extension)

그래서 나는 확장 기능에 있음을 감지하고 sharedApplication 사용하는 방법이 필요합니다.


전 처리기 매크로는 대부분 작동하지만 공유 라이브러리 (예 : cocoapod 또는 공유 프레임 워크)에서는 작동하지 않습니다.

또는 다음 코드를 사용할 수 있습니다.

@implementation ExtensionHelpers

+(BOOL) isAppExtension
{
    return [[[NSBundle mainBundle] executablePath] containsString:@".appex/"];
}

@end

AppExtension 만 확장명이 ".appex"이므로 번들 executablePath를 확인하여이 작업을 수행 할 수 있습니다.


확장 대상에 선행 처리기 매크로를 추가 한 다음 클래스의 #ifdef 로 검사 할 수 있습니다.


Apple의 설명서에 다음과 같이 나와 있습니다.

Xcode 템플릿을 기반으로 확장을 빌드하면 .appex로 끝나는 확장 번들을 얻게됩니다.

따라서 다음 코드를 사용할 수 있습니다.

if ([[[NSBundle mainBundle] bundlePath] hasSuffix:@".appex"]) {
    // this is an app extension
}






ios-app-extension