본문으로 건너뛰기
버전: 1.10.x

SDK 설치 및 적용

AppGuard SDK 적용


AppGuard SDK 다운로드

AppGuard SDK를 적용하기 위해서는 아래와 같이 필수 파일이 필요합니다.
AppGuard Manager에서 AppGuard SDK와 연동을 위해 필요한 설정 파일을 다운로드하여 주시기 바랍니다.

항목설명
AppGuard SDKstatic framework 포맷으로 제공되는 AppGuardCore.framework
AppGuard Config FilesAppGuard구동에 필요한 설정 파일(appguard, appguard.crt, appguard.mf, appguard106000)

기존에 적용 중인 AppGuardCore.xcframework는 Xcode Project 내에서 필히 삭제 및 적용 해제를 부탁드립니다.


AppGuard SDK 적용

  • 다운로드한 AppGuardCore.framework 파일을 프로젝트 내부에 복사합니다.

  • Xcode 프로젝트를 열고 Project > TARGETS:ProjectName > Build Phases > Link Binary With Libraries 를 차례로 선택하고, 하단의 추가[+] 버튼 클릭합니다.

  • [Choose frameworks and libraries to add:] 창에서 하단의 [Add Other] 버튼 클릭 후 [Add Files...] 버튼을 클릭합니다.

  • 다음 화면으로 프로젝트 내부에 존재하는 AppGuardCore.framework 파일을 선택하고, [Open] 버튼을 클릭합니다.

  • 프로젝트 내 [Link Binary With Libraries]AppGuardCore.framework 파일이 추가되었습니다.

  • 추가된 AppGuardCore.frameworkXcode Project > TARGETS:MyProjectName > General > Frameworks, Libraries, and Embedded ContentAppGuardCore.framework 속성이 Do not Embded 로 설정을 변경합니다.

  • Xcode 프로젝트 내 Project > TARGETS:ProjectName > Build Settings > Other Linker Flags 항목에 -lstdc++, -lz 옵션을 추가합니다.


AppGuard Config Files 적용

  • 다운로드한 최신 config 4개(appguard, appguard.crt, appguard.mf, appguard106000) 파일을 프로젝트 내부 폴더로 복사합니다.

  • 프로젝트를 열고 Project > TARGETS:ProjectName > Build Phases > Copy Bundle Resources 를 차례로 선택하고, 하단의 추가[+] 버튼 클릭합니다.

  • [Choose items to add:] 창에서 하단의 [Add Other] 버튼을 클릭합니다.

  • 다음 화면으로 프로젝트 내부에 존재하는 config 파일 4개를 선택하고, [Open] 버튼을 클릭합니다.

  • [Choose options for adding these files:] 창에서 [Destination:Copy items if needed] "ON"으로 체크, [Added folders:Create groups] 으로 체크한 후, 우측 하단의 [Finish] 버튼을 클릭합니다.

  • 프로젝트 내 [Copy Bundle Resources] 에 4개의 config 파일이 추가되었는지 확인합니다.


AppGuard SDK Privacy Manifests 적용

해당 가이드는 Privacy Manifests 적용을 위해서는 AppGuard SDK v1.10.1.2이상을 사용해야합니다.

AppGuardCore.framework의 모듈은 AppGuardCore.framework를 Link하는 TARGETS에 병합되고 배포됩니다.

Apple Privacy Manifests 관련한 PrivacyInfo.xcprivacyAppGuard SDK를 Link한 TARGETS의 PrivacyInfo.xcprivacy에 AppGuardCore.framework의 PrivacyInfo.xcprivacy 내용이 명시되어야 합니다.

이에 따라 PrivacyInfo.xcprivacy에 AppGuardCore.framework 관련 내용을 명시하기 위해 아래 가이드를 참고하여 병합 작업을 수행하여 주시길 바랍니다.

  • Xcode Project 내 이미 사용 중인 PrivacyInfo.xcprivacy파일이 존재하는 경우

    • AppGuardCore.framework 내부의 PrivacyInfo.xcprivacy 파일의 내용과 기존의 사용 중인 PrivacyInfo.xcprivacy과 비교하여 누락된 부분을 확인합니다.
    • 누락된 부분을 찾은 경우 누락된 부분을 이미 사용중이신 PrivacyInfo.xcprivacy 파일에 추가 및 병합하여 주시기 바랍니다.
  • Xcode Project 내 PrivacyInfo.xcprivacy파일이 존재하지 않는 경우

    • AppGuard Config Files 추가 방식과 동일하게 아래와 같이 진행해주시면 됩니다.
      • AppGuardCore.framework 내부의 PrivacyInfo.xcprivacy 파일을 복사하여 Xcode Project 내 추가합니다.

      • 프로젝트를 열고 Project > TARGETS:ProjectName > Build Phases > Copy Bundle Resources 를 차례로 선택하고, 하단의 추가[+] 버튼 클릭합니다.

      • [Choose items to add:] 창에서 하단의 [Add Other] 버튼을 클릭합니다.

      • 다음 화면으로 프로젝트 내부로 복사한 PrivacyInfo.xcprivacy 파일을 선택하고, [Open] 버튼을 클릭합니다.

      • [Choose options for adding these files:] 창에서 [Destination:Copy items if needed] "ON"으로 체크, [Added folders:Create groups] 으로 체크한 후, 우측 하단의 [Finish] 버튼을 클릭합니다.

      • 프로젝트 내 [Copy Bundle Resources]PrivacyInfo.xcprivacy 파일이 추가되었음을 확인할 수 있습니다.

정보

AppGuard for iOS SDK v1.10.1.2 이상에서는 AppGuardCore.framework 명칭으로 배포되며, 해당 SDK는 static framework로 제작되고, 배포됩니다.

AppGuard for iOS SDK v1.10.1.2 이상에서는 Apple 요구한 Privacy Manifest에서 명시한 Required reason API 항목NSPrivacyAccessedAPICategoryUserDefaults 외 다른 API는 사용하지 않은 점 참고바랍니다.

static framewrok로 링크되는 타사의 SDK의 경우 AppGuard SDK와 마찬가지로 고객사의 PrivacyInfo.xcprivacy에 병합되는 작업이 필요할 수 있습니다.


Objective-C

필수 API 적용

AppGuard SDK를 사용하기 위해서는 다음에 안내하는 필수 API를 구현해야 합니다.

콜백함수 소개

AppGuard SDK 는 AppGuard의 동작상태, 탐지 이벤트 정보 등의 데이터를 앱에 전달 할 수 있도록 다음과 같이 콜백함수를 제공하고 있습니다. 콜백함수는 APPGUARD_INIT API를 통해 AppGuard SDK에 등록합니다.

typedef void (*PAPPGUARDAPPCALLBACK)(int type, int code, const char *pData);
static void APPGUARD_INIT(PAPPGUARDAPPCALLBACK);
주의

콜백함수는 적용하는 프로젝트 내에 반드시 구현하고, APPGUARD_INIT 호출 시 파라미터로 전달되어야 합니다.


콜백함수 구현 및 등록

콜백함수는 App 진입점의 맨 처음에 등록되어야 합니다. 일반적으로 AppDelegate Source 파일에서 구현 및 등록하는 것을 권장합니다.

AppDelegate.m
/**
* AppGuard SDK와 통신을 위한 콜백함수 선언하기
* 일반적으로 AppDelegate Source 파일 상단에서 구현을 권장합니다.
*/

#import <AppGuardCore/AppGuard.h>
#import <AppGuardCore/AppGuardDefine.h>

static void AppGuardAppCallback(int type, int code, const char* desc)
{
if(type == APPGUARD_TYPE_KILL)
{
/**
* 탐지 내용이 정책에 의해 kill option으로 설정되어 있는 경우 통지하고, 강제 종료를 요청합니다.
* 해당 메세지 통지가 감지되면 App을 강제 종료해야 합니다.
* 종료 방식은 메세지창을 통한 통보 후 앱을 종료하는 것을 권장합니다.
*/
}
else if(type == APPGUARD_TYPE_S2AUTH_CALLBACK)
{
if(code == APPGUARD_TYPE_CSAUTH_SUCESS)
{
/**
* 서버 인증 작업이 성공하였습니다.
* desc 파라미터로 전달되는 서버인증용 아이디를 사용하여 게임서버에서 재검증 작업을
* 수행하여 주시기 바랍니다.
*
* desc : 서버인증용 아이디
*/

}
else if(code == APPGUARD_TYPE_CSAUTH_FALSE)
{
/**
* 서버 인증 작업이 실패하였습니다.
* desc 파라미터로 전달되는 서버인증용 아이디를 사용하여 게임서버에서 재검증 작업을
* 수행하여 주시기 바랍니다.
*
* 서버인증 작업이 실패한 사유가 클라이언트의 네트워크 문제로 인하여 실패할 수 있으므로
* 게임서버를 통한 재검증 작업을 꼭 진행하여 주시기 바랍니다.
*
* desc : 서버인증용 아이디
*/
}
}
}

...

/**
* AppGuard SDK와 통신을 위한 콜백함수 등록하기
*
* 콜백함수의 등록은 APPGUARD_INIT API를 사용하여 등록합니다.
*
* APPGUARD_INIT API의 사용은 AppDelegate의 didFinishLaunchingWithOption 함수 내부에서
* 구현하는 것을 권장합니다.
*/
- (Bool)application:(UIApplication *)application didFinishLaunchingWithOption:(NSDictionary *) launchOptions {
// APPGUARD_INIT API를 사용하여 콜백함수를 AppGuard SDK에 등록
APPGUARD_INIT(AppGuardAppCallback);
}

여기까지 진행 하였다면, AppGuard SDK를 사용하기 위한 기본 작업을 완료하신 것입니다. 프로젝트 빌드 및 실행을 통해 AppGuard SDK가 정상 동작하는지 확인하시기 바랍니다.

AppGuard SDK에서 제공하는 API에 대한 자세한 내용은 AppGuard SDK API Reference 내용을 참고하여 주시기 바랍니다.



Swift

AppGuard Swift 인터페이스 설명

Swift로 제작된 Project에서 Objective-C로 제작된 AppGuard API를 사용하기 위해서는 Bridging Header 방식을 사용해야 합니다. 고객사측에서는 Swift Project에서 Objective-C로 제작된 AppGuard API 사용 시 편의성을 제공하기 위하여 아래의 3개의 파일을 별도로 제공하고 있습니다.

파일명설명언어
AppGuard-Bridging-Header.hSwift와 Objective-C 모듈을 연동해주기 위한 Bridging HeaderObjective-C
AppGuardWarpper.hAppGuard API 인터페이스 선언Objective-C
AppGuardWarpper.mmAppGuard API 인터페이스 호출 구현Objective-C

AppGuard Swift 인터페이스 Bridging 적용

  • 다운로드한 AppGuard Swift 인터페이스 /appguard_swift_inferfaces 폴더 내의 3개(AppGuard-Bridging-Header.h, AppGuardWarpper.h, AppGuardWarpper.mm) 파일을 프로젝트 내부 폴더(Project/)로 복사합니다.

  • 프로젝트 내의 복사한 AppGuard Swift 인터페이스 파일 3개를 프로젝트로 [Drag & Drop] 으로 추가합니다.

  • [Choose options for adding these files:] 창 하단의 [Finish] 버튼을 클릭합니다.

  • [Would you like to configure an Objective-C bridging header?] 창에서 [Don't Create] 버튼을 클릭해줍니다.

  • 프로젝트 내의 AppGuard Swift 인터페이스 파일 3개(AppGuard-Bridging-Header.h, AppGuardWarpper.h, AppGuardWarpper.mm)가 추가된 것을 확인할 수 있습니다.

  • Project > TARGETS:프로젝트 이름 > Build Settings > Swift Compiler - General > Objective-C Bridging Header 항목에 $(SRCROOT)/MyProject/AppGuard-Bridging-Header.h 경로 값을 추가합니다.

정보

위의 과정을 정상적으로 수행하였다면, Swift Project에서 AppGuard API를 사용할 수 있는 준비가 완료되었습니다.


AppGuard Swift API 필수 적용


콜백함수 소개

Swift Project인 경우는 AppGuardWarpper.mm 파일 내부 상단에 APPGUARDGAMECALLBACK 함수가 정의되어있습니다. 이를 통해 악의적인 사용자에 의한 비정상적인 행위에 대하여 탐지 및 보고를 합니다. 탐지내역 중 관리자페이지에서 설정한 보안정책의 조건에 의하여 강제 종료해야 하는 경우 앱으로 해당 내용을 통지해줍니다.

아래 샘플 코드와 동일하게 적용 시 탐지 및 보고 내용 수신에 따른 처리할 수 있습니다.

AppGuardWarpper.mm
// AppGuardWarpper.mm

static void APPGUARDGAMECALLBACK(int type, int code, const char* desc)
{
if(type == APPGUARD_TYPE_KILL)
{
/**
* 탐지 내용이 정책에 의해 kill option으로 설정되어 있는 경우 통지하고, 강제 종료를 요청합니다.
* 해당 메세지 통지가 감지되면 App을 강제 종료해야 합니다.
* 종료 방식은 메세지창을 통한 통보 후 앱을 종료하는 것을 권장합니다.
*/
}
else if(type == APPGUARD_TYPE_S2AUTH_CALLBACK)
{
if(code == APPGUARD_TYPE_CSAUTH_SUCESS)
{
/**
* 서버 인증 작업이 성공하였습니다.
* desc 파라미터로 전달되는 서버인증용 아이디를 사용하여 게임서버에서 재검증 작업을
* 수행하여 주시기 바랍니다.
*
* desc : 서버인증용 아이디
*/

}
else if(code == APPGUARD_TYPE_CSAUTH_FALSE)
{
/**
* 서버 인증 작업이 실패하였습니다.
* desc 파라미터로 전달되는 서버인증용 아이디를 사용하여 게임서버에서 재검증 작업을
* 수행하여 주시기 바랍니다.
*
* 서버인증 작업이 실패한 사유가 클라이언트의 네트워크 문제로 인하여 실패할 수 있으므로
* 게임서버를 통한 재검증 작업을 꼭 진행하여 주시기 바랍니다.
*
* desc : 서버인증용 아이디
*/
}
}
}

APPGUARDGAMECALLBACK() 함수 내부에 종료메세지 처리 로직을 구현해 주시기 바랍니다.

주의

실제 서비스 Release 시 위의 APPGUARDGAMECALLBACK() 함수 내 로그 출력 함수를 반드시 제거 해주시길 바랍니다.


콜백함수 등록

AppGuard 구동 및 AppGuard SDK와 통신을 담당하는 필수 API 함수입니다. 아래 샘플 코드와 동일하게 AppDelegate.swiftapplication 함수 내 AppGuard 초기화 함수인 APPGUARD_INIT API를 반드시 호출해주시길 바라며, 이는 Swift Project에서의 콜백함수 등록을 의미합니다.

AppDelegate.swift
// AppDelegate.swift

func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions:
[UIApplicationLaunchOptionsKey: Any]?) -> Bool {
//* APPGUARD_INIT API를 사용하여 콜백함수를 AppGuard SDK에 등록
let obj = AppGuardWarpper()
obj.initAppGuard()

return true
}

정보

위의 작업까지 정상적으로 수행하셨다면, Swift Project에서 AppGuard를 사용하기 위한 모든 준비를 완료하게 됩니다.

AppGuard SDK에서 제공하는 API에 대한 자세한 내용은 AppGuard SDK API Reference 내용을 참고하여 주시기 바랍니다.