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

SDK 설치 및 적용

iOS 요구 사항


iOS 환경에서 AppGuard SDK를 사용하기 위해서는 다음 요구 사항을 충족해야 합니다.

  • Xcode 15.X
  • AppGuard for iOS SDK v1.10.1.3 이상

AppGuard SDK 설치 및 적용


AppGuard SDK 다운로드

AppGuard SDK를 적용하기 위해 필요한 필수 파일들을 다운로드하여야 합니다. AppGuard Manager에서 SDK 및 설정 파일을 다운로드하세요.

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

기존에 사용 중인 AppGuardCore.xcframework는 프로젝트에서 삭제해 주세요.

AppGuard SDK 적용 방법

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

  2. Xcode에서 Project > TARGETS:ProjectName > Build Phases > Link Binary With Libraries 를 선택하고, 하단의 추가[+] 버튼을 클릭합니다.

  3. [Choose frameworks and libraries to add:] 창에서 [Add Other] 버튼을 클릭한 후, [Add Files...] 를 선택합니다.

  4. 프로젝트 내에 복사한 AppGuardCore.framework 파일을 선택하고, [Open] 버튼을 클릭합니다.

  5. Link Binary With Libraries 섹션에 AppGuardCore.framework 파일이 추가되었는지 확인합니다.

  6. AppGuardCore.frameworkEmbed 속성을 Do Not Embed로 설정합니다.

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

AppGuard Config Files 적용 방법

  1. 다운로드한 최신 config 파일 4개(appguard, appguard.crt, appguard.mf, appguard106000)를 프로젝트에 복사합니다.

  2. Xcode에서 Project > TARGETS:ProjectName > Build Phases > Copy Bundle Resources 를 선택하고, 하단의 추가[+] 버튼을 클릭합니다.

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

  4. 프로젝트 내에 복사한 config 파일 4개를 선택하고, [Open] 버튼을 클릭합니다.

  5. [Copy Bundle Resources] 섹션에 config 파일이 추가되었는지 확인합니다.

Objective-C에서의 AppGuard SDK 사용


필수 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 호출 시 파라미터로 전달해야 합니다.

콜백 함수 구현 및 등록

콜백 함수는 앱의 진입점에서 가장 먼저 등록되어야 합니다. 일반적으로 AppDelegate 소스 파일에서 구현하고 등록하는 것이 권장됩니다.

AppDelegate.m
/**
* AppGuard SDK와 통신하기 위한 콜백 함수 선언
* 일반적으로 AppDelegate 소스 파일 상단에서 구현하는 것이 좋습니다.
*/

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

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

}
else if(code == APPGUARD_TYPE_CSAUTH_FALSE)
{
/**
* 서버 인증이 실패하였습니다.
* desc 파라미터로 전달된 서버 인증용 ID를 사용하여 게임 서버에서 재검증 작업을 수행해 주시기 바랍니다.
*
* 서버 인증 작업이 실패한 원인은 클라이언트의 네트워크 문제일 수 있으므로, 게임 서버를 통한 재검증 작업이 꼭 필요합니다.
*
* desc : 서버 인증용 ID
*/
}
}
}

...

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

위의 작업을 완료하면 AppGuard SDK를 사용할 준비가 완료됩니다. 프로젝트를 빌드하고 실행하여 AppGuard SDK가 정상적으로 동작하는지 확인하세요.

AppGuard SDK에서 제공하는 API에 대한 자세한 내용은 AppGuard SDK API Reference를 참고하세요.

Swift에서의 AppGuard SDK 사용


AppGuard Swift 인터페이스 설명

Swift로 제작된 프로젝트에서 Objective-C로 작성된 AppGuard API를 사용하려면 Bridging Header 방식을 사용해야 합니다. Swift 프로젝트에서 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 적용

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

  2. 복사한 파일을 Xcode 프로젝트에 [Drag & Drop] 으로 추가합니다.

  3. [Choose options for adding these files:] 창에서 [Finish] 버튼을 클릭합니다.

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

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

정보

위 작업을 완료하면 Swift 프로젝트에서 AppGuard API를 사용할 준비가 완료됩니다.

AppGuard Swift API 필수 적용

콜백 함수 소개

Swift 프로젝트의 경우, AppGuardWarpper.mm 파일 상단에 APPGUARDGAMECALLBACK 함수가 정의되어 있습니다. 이 함수는 악의적인 사용자의 비정상적인 행위를 탐지하고 보고합니다. 관리자 페이지에서 설정한 보안 정책에 따라 강제 종료가 필요한 경우, 앱에 해당 내용을 통지합니다.

아래 샘플 코드와 같이 적용하면 탐지 및 보고된 내용을 처리할 수 있습니다.

AppGuardWarpper.mm
// AppGuardWarpper.mm

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

}
else if(code == APPGUARD_TYPE_CSAUTH_FALSE)
{
/**
* 서버 인증이 실패하였습니다.
* desc 파라미터로 전달된 서버 인증용 ID를 사용하여 게임 서버에서 재검증 작업을 수행해 주시기 바랍니다.
*
* 서버 인증 작업이 실패한 원인은 클라이언트의 네트워크 문제일 수 있으므로, 게임 서버를 통한 재검증 작업이 꼭 필요합니다.
*
* desc : 서버 인증용 ID
*/
}
}
}

APPGUARDGAMECALLBACK() 함수 내에 종료 메시지 처리 로직을 구현해 주세요.

주의

서비스 출시 시에는 APPGUARDGAMECALLBACK() 함수 내의 로그 출력 함수를 반드시 제거해 주세요.

콜백 함수 등록

AppGuard를 초기화하고 SDK와 통신하기 위한 필수 API 함수입니다. 아래 샘플 코드와 같이 AppDelegate.swiftapplication 함수 내에서 AppGuard 초기화 함수인 APPGUARD_INIT API를 반드시 호출하세요. 이는 Swift 프로젝트에서 콜백 함수를 등록하는 작업입니다.

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 프로젝트에서 AppGuard를 사용하기 위한 모든 준비가 완료됩니다.

AppGuard SDK에서 제공하는 API에 대한 자세한 내용은 AppGuard SDK API Reference를 참고하세요.

AppGuard SDK Privacy Manifests 적용


AppGuard SDK v1.10.1.3 버전 이상에서 Privacy Manifests를 적용하려면 다음 단계를 따르세요.

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

Apple의 Privacy Manifests와 관련된 PrivacyInfo.xcprivacyAppGuard SDK를 링크한 TARGETS의 PrivacyInfo.xcprivacy에 AppGuardCore.framework의 PrivacyInfo.xcprivacy 내용이 포함되어야 합니다.

따라서 PrivacyInfo.xcprivacy에 AppGuardCore.framework 관련 내용을 추가하려면 아래 가이드를 참고하여 병합 작업을 수행하세요.

  • Xcode 프로젝트에 이미 사용 중인 PrivacyInfo.xcprivacy 파일이 존재하는 경우

    • AppGuardCore.framework 내부의 PrivacyInfo.xcprivacy 파일과 기존의 PrivacyInfo.xcprivacy 파일을 비교하여 누락된 부분을 확인하세요.
    • 누락된 부분이 있다면, 이를 기존의 PrivacyInfo.xcprivacy 파일에 추가하고 병합하세요.
  • Xcode 프로젝트에 PrivacyInfo.xcprivacy 파일이 존재하지 않는 경우

    • AppGuard Config Files 추가 방식과 동일하게 아래 단계를 진행하세요.
      • AppGuardCore.framework 내부의 PrivacyInfo.xcprivacy 파일을 복사하여 Xcode 프로젝트에 추가합니다.

      • Xcode에서 Project > TARGETS:ProjectName > Build Phases > Copy Bundle Resources 를 선택하고, 하단의 추가[+] 버튼을 클릭합니다.

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

      • 복사한 PrivacyInfo.xcprivacy 파일을 선택하고, [Open] 버튼을 클릭합니다.

      • [Copy Bundle Resources] 섹션에 PrivacyInfo.xcprivacy 파일이 추가되었는지 확인합니다.

정보

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

AppGuard for iOS SDK v1.10.1.3 버전 이상에서는 Apple이 요구한 Privacy Manifest에서 명시한 Required reason API 항목NSPrivacyAccessedAPICategoryUserDefaults 외 다른 API는 사용하지 않았습니다.

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