Unity
Unity Plugin 기본 설명
이 문서는 플러그인 방식을 사용하여 Unity 개발 환경에서 기존 SDK 적용 방식보다 더 쉽게 적용하는 방법을 제공하기 위해 작성되었습니다.
iOS 요구 사항
- Xcode 15.4 이상
- Minimum OS 12.0 이상
- AppGuard for iOS SDK v1.10.1.3 이상
- AppGuard for Unity Plugin v1.1.1 이상
- Xcode 15.4 미만 버전에서 Minimum OS 버그가 존재합니다. 이 버그는 Xcode 15.4 버전부터 해결되었습니다.
- AppGuard SDK v1.10.1.3 버전이상은 현재 Simulator를 지원하지 않습니다. 이 기능은 미래 버전에 추가될 예정입니다.
AppGuard Unity Plugin 구성 요소
AppGuard for Unity Plugin v1.1.1 버전 이상의 구성 요소는 아래와 같습니다.
-
Assets/AppGuard/ 폴더 구성
항목 파일명 설명 플랫폼 Editor Assets/AppGuard/Editor/AppGuardPostProcessBuild.csUnity에서 iOS용 Xcode Project 생성 시 필수 환경 설정 Only iOS Plugins Assets/AppGuard/Plugins/iOS/AppGuardClientUnityBride.mmiOS Native Module Only iOS Script Assets/AppGuard/Script/AppGuardUnityManager.csAssets/AppGuard/Script/AppGuardSecureStream.csUnity와 AppGuard Native 간의 통신 관리 iOS/AOS
AppGuard for Unity Plugin v1.1.1 버전 미만을 사용 중인 고객은 Migration 적용 전 기존에 사용한 Unity Plugins 파일(AppGuardPostProcessBuild.cs, AppGuardSecureStream.cs, AppGuardClientUnityBride.mm)을 미리 백업하시기 바랍니다.
백업 후, 해당 파일들을 Unity 프로젝트에서 삭제한 후 진행해주시기 바랍니다.
AppGuard Unity Plugin 구성 설명
AppGuardPostProcessBuild.cs
Unity Editor에서 제공하는 PostProcessBuild 기능을 사용하여 Unity에서 생성한 Xcode Project에 다음 기능을 수행합니다:
- AppGuard SDK 구동에 필요한 빌드 환경 파일 설정
- AppGuard SDK 구동에 필요한 환경 파일 설정
AppGuardPostProcessBuild.cs 파일을 반드시 확인하고, 고객사의 환경과 다른 경우 수정이 필요할 수 있습니다.
AppGuardUnityManager.cs
Assets/AppGuard/Scripts/ 에 위치한 AppGuardUnityManager.cs는 AppGuard Native Module과의 통신을 관리하는 모듈입니다.
이 파일의 클래스명 및 메서드명은 그대로 유지해야 하며, 주요 메서드는 다음과 같습니다:
-
Set 메서드
메서드 설명 public void setUserId(string userid)보안 정책 위반 탐지 시 로그 서버로 전송할 사용자 식별자(UserID)를 설정합니다. public void setUniqueClientId(string uniqueId, long retryTimeSec = 180)서버 인증에 사용할 세션 유일 식별자를 설정합니다. -
Callback 메서드
메서드 설명 public void setAppGuardS2AuthCallback(Action<int, string> callback)AppGuard Native Module에서 수행한 서버 인증 결과를 수신할 callback method를 설정합니다.public void setAppGuardDetectCallback(Action<string> callback)AppGuard Native Module에서 수행한 보안 정책 위반 탐지 결과를 수신할 callback method를 설정합니다.
Unity Project 적용 사항
AppGuard for Unity Plugin 다운로드 및 설정
AppGuard for Unity Plugin v1.1.1 버전 이상을 설치하고, Unity에서 프로 젝트를 구성하는 방법은 다음과 같습니다:
-
1. AppGuard 매니저 서버에 접속하여 Download > Unity Plugins 를 선택하고 최신 버전을 다운로드합니다.
-
2. 다운로드된
AppGuardUnityPlugin.zip파일을 압축 해제하면 내부에 Assets 폴더가 있습니다. -
3. 압축 해제된 Assets 폴더 내
AppGuard/폴더를 Unity Project/Asset/ 경로에 복사합니다.
AppGuard SDK 적용
-
1. AppGuard 매니저 서버에 접속하여 Download > AppGuard Module 를 선택하고 iOS SDK 최신 버전을 다운로드합니다.
-
2. 다운로드된
AppGuard_for_iOS.zip파일을 압축 해제합니다. -
3. AppGuard SDK v1.10.1.3 버전인 경우 압축 해제하면 내부에
AppGuardCore.framework존재하며, 이를 복사합니다.정보AppGuard for iOS SDK v1.10.2.0 버전 이상은 애플(Apple)측 요구사항에 맞게 static framework로 제작되었으며,
AppGuardCore.xcframework명칭으로 배포됩니다.
따라서, AppGuard SDK v1.10.2.0 버전 이상인 경우 압축 해제하면 내부에AppGuardCore.xcframework가 존재하며, AppGuardCore.xcframework/ios-arm64/AppGuardCore.framework를 복사하여 진행합니다. -
4. 복사한
AppGuardCore.framework을 아래 경로에 복사합니다:
Copy To : Project/Assets/AppGuard/Plugins/iOS/
AppGuard Config 파일 다운로드 및 설정
-
1. AppGuard 매니저 서버에 접속하여 Applying Security > 다운로드 > CHAPTER 2. nProtect AppGuard CONFIG 파일 다운로드 > CONFIG FILE DOWNLOAD를 선택하여 다운로드합니다.
-
2. 다운로드된 Config 파일을 압축 해제하면 AppGuard Config 파일은
appguard,appguard.crt,appguard.mf,appguard1060004개의 파일로 구성됩니다. -
3. 이 4개의 파일을 아래 경로에 복사합니다:
Copy To : Project/Assets/AppGuard/Plugins/iOS/
AppGuard for Unity Plugin v1.1.1 버전 미만을 사용하던 고객의 경우, 기존 appguard, appguard106000, appguard.mf, appguard.crt 파일을 Assets/AppGuard/Plugins/iOS/ 위치로 이동해야 합니다.
보안 정책 위반 탐지 관련 이벤트용 콜백 함수 등록 및 사용(필수)
보안 정책 위반 탐지 관련 이벤트 통신을 위한 앱의 콜백 함수를 설정하기 위해 Unity 프로젝트의 첫 번째 장면(Scene) 클래스의 Awake() 메서드에서 아래 샘플 코드와 같이 작업합니다.
빌드된 IPA를 AppGuard 매니저 웹 서비스를 통해 앱 서명을 완료한 후, 앱 실행 시 보안 정책 위반이 발생하면 setAppGuardDetectCallback() 함수에 등록된 AppGuardDetectCallback() 콜백 함수로 이벤트가 전달됩니다.
AppGuard for Unity Plugin v1.1.1 버전 미만을 사용하던 고객은, 기존 AppGuardUnityManager의 onViolationCallback() 메소드에 추가하여 사용하던 코드를 새로 작성한 고객사의 callback method로 이동해야 합니다.
아래 샘플 코드와 같이 사용자는 우선적으로 AppGuard 보안 탐지 및 등록을 위한 AppGuardDetectCallback() 함수를 구현해야 합니다. 해당 AppGuardDetectCallback() 콜백 함수에서 보안 탐지 결과에 따른 처리를 할 수 있습니다.
public class testMain : MonoBehaviour
{
void Awake() {
//. AppGuard 보안 정책 위반 탐지 관련 이벤트 통신을 위한 Callback Method를 설정합니다.
AppGuardUnityManager.Instance.setAppGuardDetectCallback((data) => {
bool killed = (int.Parse(data) > 0);
if(killed) {
//. 수신한 보안 정책 위반 탐지 값이 양수인 경우 앱을 종료 처리합니다.
int code = Mathf.Abs(int.Parse(data));
//. 이곳에 종료 메시지 처리를 위한 코드를 추가합니다.
}
});
}
}
또는 아래와 같이 보안 정책 탐지 관련 이벤트 Callback 메서드를 따로 구현 후 등록하는 방법도 가능합니다.
public class testMain : MonoBehaviour
{
void Awake() {
//. 보안 정책 탐지 결과를 수신할 Callback Method를 설정합니다.
//. AppGuard 초기화 함수 호출 전 보안 정책 탐지 결과 Callback 함수를 우선적으로 등록하는 것이 좋습니다.
AppGuardUnityManager.Instance.setAppGuardDetectCallback(AppGuardDetectCallback);
}
//. 보안 정책 탐지 결과를 수신할 Callback Method를 아래와 같이 작성합니다.
//. Callback Method의 명칭은 parameter 값을 유지한다면 자유롭게 작성하셔도 무방합니다.
void AppGuardDetectCallback(string data) {
bool killed = (int.Parse(data) > 0);
if(killed) {
//. killed 값이 true인 경우 앱을 종료 처리합니다.
int code = Mathf.Abs(int.Parse(data));
//. 이곳에 종료 메시지 처리를 위한 코드를 추가합니다.
}
}
}
서비스 릴리스 시 샘플에 포함된 Debug.Log("-Debug Message-"); 코드를 반드시 제거해 주시기 바랍니다.