사전 요구 사항
원활한 연동 프로세스를 위해 Singular Unity SDK를 설치하기 전에 다음 필수 단계를 완료하세요.
필수 사전 요구 사항:
- 계획 단계를 완료합니다: Singular SDK 연동 가이드를 따르세요 : 계획 및 사전 요구 사항의 가이드를 따르세요. 이 단계는 모든 Singular SDK 연동에 필수입니다.
- 종속성 관리자를 확인합니다: 프로젝트에서 Google EDM4U (Unity용 외부 종속성 관리자)를 사용하는지 확인합니다. Google EDM4U에 대해 자세히 알아보세요.
-
.unitypackage에서 업그레이드하시나요? 기존
.unitypackage패키지에서 새UPM패키지로 마이그레이션하는 경우 계속 진행하기 전에 업그레이드 지침을 읽어 보세요.
설치
Unity 패키지 관리자(UPM)를 통한 설치
Singular Unity SDK는 Git URL을 사용하여 Unity 패키지 관리자를 통해 설치됩니다. 프로젝트에 SDK를 추가하려면 다음 단계를 따르세요.
설치 단계
- 패키지 관리자를 엽니다: Unity에서 창 > 패키지 관리자로 이동합니다.
- Git에서 패키지를 추가합니다: 왼쪽 상단 모서리에 있는 [+]버튼을 클릭하고 "Add package from git URL"을 선택합니다.
-
Git URL을 입력합니다:
-
표준 SDK의 경우:
https://github.com/singular-labs/Singular-Unity-SDK.git입력 -
키즈 SDK의 경우:
https://github.com/singular-labs/Singular-Unity-SDK.git#kids입력
-
표준 SDK의 경우:
- 설치를 완료합니다: '추가'를 클릭하여 SDK 패키지를 설치합니다.
Google EDM4U를 사용하지 않나요? 프로젝트에서 외부 종속성 관리자를 사용하지 않는 경우 네이티브 종속성을 수동으로 다운로드하여 추가해야 합니다.
수동 종속성 설치
-
종속성을 다운로드합니다: Singular의 S3 버킷에서 적절한
Plugins.zip파일을 다운로드합니다:-
표준 SDK(v5.6.0):
표준 SDK 플러그인 다운로드 -
키즈 SDK (v5.6.0):
키즈 SDK 플러그인 다운로드
-
표준 SDK(v5.6.0):
- 에셋에 압축을 풉니다: 다운로드한 파일을 압축을 풀고 Unity 프로젝트의 에셋 > 플러그인으로 이동합니다.
-
iOS 프레임워크 구성: 에셋 > 플러그인 > iOS로 이동하여
Singular.xcframework을 선택합니다. - 바이너리 임베드: 인스펙터 창에서 "임베디드 바이너리에 추가" 옵션을 선택합니다.
Android 구성 팁
Android 빌드 설정을 구성하여 SDK 기능이 제대로 작동하도록 하세요. Unity는 Android 매니페스트 및 Gradle 파일을 커스터마이징하는 다양한 방법을 제공합니다.
다음 두 가지 방법 중 하나를 사용하여 AndroidManifest를 수정할 수 있습니다:
방법 1: Unity 커스텀 매니페스트
- 파일 > 빌드 설정 > 플레이어 설정 > 퍼블리싱 설정으로 이동합니다.
- 퍼블리싱 설정 섹션에서 "커스텀 메인 매니페스트" 를 활성화합니다.
-
Unity는 Assets/Plugins/Android/AndroidManifest.xml에 기본
AndroidManifest.xml파일을 생성합니다. - 이 파일을 편집하여 필요한 권한과 구성을 추가합니다.
방법 2: 안드로이드 스튜디오
- 파일 > 빌드 설정 > 프로젝트 익스포트를 사용하여 Unity에서 프로젝트를 익스포트합니다.
- 익스포트한 프로젝트를 Android Studio에서 엽니다.
-
Android Studio에서
AndroidManifest.xml파일을 직접 편집합니다.
방법 1: Unity 커스텀 템플릿
- 파일 > 빌드 설정 > 플레이어 설정 > 퍼블리싱 설정으로 이동합니다.
- 퍼블리싱 설정 섹션에서 "커스텀 그레이들 템플릿" 을 활성화합니다.
-
Unity는 Assets/Plugins/Android/mainTemplate.gradle에
mainTemplate.gradle파일을 생성합니다. - 이 파일에 커스텀 Gradle 구성을 추가합니다.
방법 2: 안드로이드 스튜디오
- Unity에서 프로젝트를 익스포트합니다.
- Android Studio에서 프로젝트를 엽니다.
-
앱의
build.gradle파일을 직접 편집합니다.
Unity에서 Android 앱을 빌드할 때 동일한 전이 종속성을 포함한 여러 SDK로 인해 "중복 클래스" 오류가 발생할 수 있습니다. 이 오류는 일반적으로 AppLovin SDK와 Singular SDK를 모두 사용할 때 Android 벤딩 라이선싱 라이브러리에서 발생합니다.
오류 예시:
Duplicate class com.android.vending.licensing.ILicensingService found in modules
applovin-sdk-13.5.0.aar -> jetified-applovin-sdk-13.5.0-runtime (com.applovin:applovin-sdk:13.5.0)
and singular_sdk-12.10.0.aar -> jetified-singular_sdk-12.10.0-runtime (com.singular.sdk:singular_sdk:12.10.0)
해결 방법 1: 외부 종속성 관리자(EDM4U) 사용
프로젝트에서 Unity용 외부 종속성 관리자를 사용하는 경우(권장), 종속성 XML 파일에 제외 규칙을 추가합니다.
-
Unity 프로젝트에서
*Dependencies.xml파일을 찾습니다(일반적으로Assets/Editor또는 이와 유사한 위치). - SDK 종속성 중 하나에 제외 규칙을 추가합니다:
<dependencies>
<androidPackages>
<androidPackage spec="com.applovin:applovin-sdk:13.5.0">
<androidSdkPackageIds>
<exclude group="com.android.vending" module="licensing"/>
</androidSdkPackageIds>
</androidPackage>
<androidPackage spec="com.singular.sdk:singular_sdk:12.10.0" />
</androidPackages>
</dependencies>
참고: 이 접근 방식은 안드로이드 리졸버가 해석 중에 커스텀 템플릿 변경 사항을 덮어쓸 수 있으므로 Gradle 템플릿을 수정하는 것보다 지속성이 더 높습니다.
해결 방법 2: 사용자 지정 Gradle 템플릿 사용
EDM4U를 사용하지 않는 경우 Gradle 구성 파일에서 직접 제외 규칙을 적용하세요.
- 파일 > 빌드 설정 > 플레이어 설정 > 퍼블리싱 설정으로 이동합니다.
- "커스텀 메인 그래들 템플릿" 또는 "커스텀 런처 그래들 템플릿"을 활성화합니다.
-
Assets/Plugins/Android/mainTemplate.gradle(또는launcherTemplate.gradle)을 엽니다. - 종속성 블록에 제외 규칙을 추가합니다:
dependencies {
implementation('com.applovin:applovin-sdk:13.5.0') {
exclude group: 'com.android.vending', module: 'licensing'
}
implementation 'com.singular.sdk:singular_sdk:12.10.0'
}
대안: 종속성 블록 뒤에 이 규칙을 추가하여 전역 제외를 적용합니다:
configurations.all {
exclude group: 'com.android.vending', module: 'licensing'
}
해결 방법 확인
- 제외를 적용한 후 라이브러리/Bee 및 Temp폴더를 삭제하여 프로젝트를 정리합니다.
- Unity에서 Android 프로젝트를 다시 빌드합니다.
- 빌드 출력에 중복 클래스 오류가 더 이상 나타나지 않는지 확인합니다.
이것이 작동하는 이유: 두 SDK 모두 동일한 Android 라이선싱 라이브러리를 전이 종속성으로 번들링합니다. 제외는 Gradle에 하나의 사본만 사용하도록 지시하여 충돌을 해결합니다.
프로젝트에서 코드 난독화를 위해 ProGuard를 사용하는 경우 proguard-unity.txt 파일에 다음 유지 규칙을 추가하여 Singular SDK가 제거되는 것을 방지하세요:
-keep class com.singular.sdk.** { *; }
-keep public class com.android.installreferrer.** { *; }
-keep public class com.singular.unitybridge.** { *; }
iOS 설정 팁
적절한 어트리뷰션, 딥링킹 및 테스트 기능을 사용할 수 있도록 iOS 관련 설정을 구성하세요.
iOS용 Unity 프로젝트를 빌드한 후 Xcode에서 빌드하기 전에 CocoaPods 종속성을 업데이트하여 최신 SDK 버전이 있는지 확인하세요.
cd /path/to/your/ios/project
pod repo update
pod update
연동을 테스트하려면 IDFV(공급업체 식별자)를 로깅하여 Singular SDK 콘솔에서 테스트 기기를 빠르게 추가하세요.
IDFV 로깅 추가하기
- Unity에서 빌드한 후 Xcode 프로젝트를 엽니다.
- 클래스 > UnityAppController.mm로 이동합니다.
-
applicationDidBecomeActive메서드를 찾습니다. - 다음 코드를 추가하여 IDFV를 로깅합니다:
// Log IDFV for testing
NSLog(@"Singular === IDFV: %@", [[[UIDevice currentDevice] identifierForVendor] UUIDString]);
- Xcode에서 앱을 빌드하고 실행합니다.
- Xcode 콘솔 로그에서 IDFV 출력을 확인합니다.
- IDFV를 복사하여 Singular SDK 콘솔에서 테스트 장치로 추가합니다.
Xcode 프로젝트에서 연관 도메인을 구성하여 딥링크를 위한 유니버설 링크를 활성화합니다.
딥 링크 설정 단계
- 연관 도메인 추가: Xcode에서 앱 대상의 서명 및 기능탭으로 이동합니다.
- 기능을 활성화합니다: [+] 기능을 클릭하고 "연결된 도메인"을 추가합니다.
-
도메인 추가: 형식에 따라 Singular 추적 도메인을 추가합니다:
applinks:yourdomain.sng.link - 팀 ID 구성: Singular 대시보드에서 앱의 설정으로 이동하여 Apple 팀 ID를 추가합니다. 이렇게 하면 Singular가 유니버설 링크에 필요한 Apple 앱 사이트 연결(AASA) 파일을 생성하고 호스팅할 수 있습니다.
중요: 연관 도메인 및 팀 ID를 올바르게 구성하지 않으면 유니버설 링크가 작동하지 않으며 사용자는 Singular 트래킹 링크에서 앱을 열 수 없습니다.
SDK 연동
SingularSDK 게임 오브젝트 만들기
Singular SDK가 작동하려면 Unity 씬 계층 구조에 게임 오브젝트가 있어야 합니다. 제공된 프리팹을 사용하거나 수동으로 생성하여 이 게임 오브젝트를 추가할 수 있습니다.
씬에 프리팹 추가
- 프로젝트 패널에서 패키지 > Singular > SingularSDK > 프리팹으로 이동합니다.
- SingularSDKObject 프리팹을 계층구조 패널로 드래그합니다.
- 이제 인스펙터에서 프리팹을 구성할 준비가 되었습니다.
수동 게임 오브젝트 생성
- 계층 구조 창에서 마우스 오른쪽 버튼을 클릭하고 비어 있음 생성을 선택합니다.
-
게임 오브젝트의 이름을
SingularSDKObject(정확한 이름 필요)로 지정합니다. - 게임 오브젝트를 선택한 상태에서 인스펙터 창으로 이동합니다.
- 컴포넌트 추가를 클릭합니다.
- "Singular" 를 검색하고 Singular SDK Script 컴포넌트를 선택합니다.
중요: SDK가 제대로 작동하려면 게임 오브젝트의 이름이 SingularSDKObject 와 정확히 일치해야 합니다.
SDK 설정 구성
Unity 인스펙터를 통해 SDK 자격 증명 및 초기화 설정을 구성합니다. SDK가 Singular 서버와 통신하려면 API 키와 시크릿이 필요합니다.
API 자격 증명 추가
- SingularSDKObject를 선택합니다: 계층 구조에서 SingularSDKObject를 클릭합니다.
- 자격 증명을 찾습니다: Singular 계정에로그인하고 개발자 도구 > SDK 연동 > SDK 키로 이동합니다.
- 키를 복사합니다: SDK 키와 SDK 시크릿을 복사합니다.
- 인스펙터에 붙여넣기: Unity의 인스펙터 창에서 Singular API 키 및 Singular API 시크릿 필드에 자격 증명을 붙여넣습니다.
중요: Singular 보고 API 키를 사용하지 마세요. SDK 연동 페이지의 SDK 전용 API 키와 시크릿만 사용하세요. 잘못된 자격 증명을 사용하면 데이터가 Singular로 전송되지 않습니다.
연동 확인: 구성 후 Singular SDK 콘솔을사용하여 구현을 테스트하여 이벤트가 올바르게 추적되고 있는지 확인하세요.
기본 인스펙터 설정
SingularSDKObject에는 합리적인 기본값이 제공됩니다. 이러한 설정을 이해하면 앱의 요구 사항에 맞게 SDK 동작을 사용자 지정하는 데 도움이 됩니다.
- 깨어 있을 때 초기화: 기본적으로 활성화되어 있습니다. 게임 오브젝트가 깨어날 때 SDK가 자동으로 초기화됩니다. 개인정보 동의 또는 기타 요구 사항을 위해 초기화를 지연해야 하는 경우 이 옵션을 비활성화합니다.
- SKAN 활성화: 기본적으로 활성화됨(iOS만 해당). 관리 모드에서 SKAdNetwork 어트리뷰션을 활성화하여, Singular가 구성된 전환 모델에 따라 전환 값을 자동으로 업데이트합니다.
- 추적 승인 대기: 0으로 설정합니다(비활성화). 앱에 iOS 앱 트래킹 투명성(ATT) 프롬프트가 표시되는 경우, 300초로 설정합니다. 이렇게 하면 사용자가 ATT 프롬프트에 응답할 때까지 SDK 세션이 지연되어 동의가 부여된 경우 IDFA를 캡처할 수 있습니다. ATT를 사용하지 않는 경우 0으로 둡니다.
- 로깅 사용: 기본적으로 활성화되어 있습니다. 연동 및 문제 해결에 도움이 되는 SDK 디버그 로그를 출력합니다. 프로덕션 빌드에서는 비활성화해야 합니다. 로그 수준 설정과 함께 작동합니다(아래 참조).
-
로그 수준: 기본적으로 3(정보)으로 설정됩니다. 로깅 상세도를 제어합니다. 숫자가 낮을수록 더 자세한 로그를 생성합니다:
// Based on Android Logger log levels public enum LogLevel { Verbose = 2, // Most verbose Debug = 3, Info = 4, // Default Warn = 5, Error = 6, Assert = 7 // Least verbose }참고: 자세한 로그는 주로 Android에서 사용할 수 있습니다.
- DDL 시간 초과 초: 0으로 설정합니다(기본값은 60초 사용). SDK가 서버에서 디퍼드 딥링크 데이터를 기다리는 시간을 결정합니다. 이 시간 초과 후에도 디퍼드 딥링크를 찾지 못하면 서버는 검색을 중지합니다.
- 세션 타임아웃 초: 0으로 설정합니다(기본값은 60초 사용). SDK가 포그라운드로 돌아올 때 새 세션을 생성하기 전까지 앱을 백그라운드 상태로 유지할 수 있는 시간을 정의합니다.
- 쇼트링크 확인 시간 초과: 0으로 설정합니다(기본값은 10초 사용). 짧은 링크가 해결될 때까지 기다리는 최대 시간입니다. 짧은 링크를 해결할 수 없는 경우 오래 기다리지 않도록 하여 사용자 경험을 보호합니다.
추가 구성 옵션
2025년 6월 18일 기준: 메타의 고급 모바일 측정(AMM)을사용하면 메타 인스톨 리퍼러를 구현할 필요가 없습니다. AMM 보고가 활성화된 경우 메타 인스톨 리퍼러를 구성할 필요가 없습니다.
기존 메타 인스톨 리퍼러 어트리뷰션 방법을 지원해야 하는 경우, 페이스북 앱 ID를 SingularSDKObject 구성에 추가하세요.
구성 단계
- 씬 계층 구조에서 SingularSDKObject를 선택합니다.
- 인스펙터 창에서 "Facebook 앱 ID"필드를 찾습니다.
- Facebook 앱 ID를 입력합니다(Facebook 개발자 콘솔에서 찾을 수 있음).
추가 리소스:
SDK 초기화
개인정보 처리방침 준수: Singular SDK를 구현할 때는 GDPR, CCPA, COPPA 등 운영 지역의 개인정보 보호법을 준수하세요. 지침은 SDK 옵트인 및 옵트아웃 사례를 참조하세요.
앱을 실행할 때마다 Singular SDK를 초기화하세요. SDK 초기화는 모든 Singular 어트리뷰션 기능에 필수적이며, 사용자 리텐션 지표를 계산하기 위한 새 세션을 생성합니다.
자동 초기화
기본적으로 SingularSDK.cs Script는 Unity의 Awake() 메서드를 통해 씬이 로드될 때 SDK를 자동으로 초기화합니다. 인스펙터에서 깨어 있을 때 초기화가활성화된 경우 추가 코드가 필요하지 않습니다.
수동 초기화
특정 시간(예: 사용자 동의를 얻은 후)에 SDK를 초기화해야 하는 경우 자동 초기화를 비활성화하고 초기화 메서드를 수동으로 호출합니다.
수동 초기화 설정
- 씬 계층 구조에서 SingularSDKObject를 선택합니다.
- 인스펙터 창에서 깨어 있을 때 초기화를 선택 취소합니다.
-
초기화할 준비가 되면 코드에서
SingularSDK.InitializeSingularSDK()을 호출합니다.
InitializeSingularSDK 메서드
자동 초기화가 비활성화된 경우 이 메서드를 사용하여 SDK를 수동으로 초기화합니다.
using UnityEngine;
using Singular;
public class GameInitializer : MonoBehaviour
{
void Start()
{
// Perform any required setup (e.g., consent management)
CheckUserConsent();
// Initialize Singular SDK after consent is obtained
// SDK Key and Secret are configured on the SingularSDKObject
SingularSDK.InitializeSingularSDK();
}
void CheckUserConsent()
{
// Your consent logic here
}
}
스레드 안전: 항상 다른 Unity API 호출에 사용되는 것과 동일한 스레드에서 Singular Unity SDK 메서드를 호출하세요. SDK는 여러 스레드에서 스레드 안전하지 않습니다.
고급 구성
세션 시간 제한 구성
앱이 포그라운드로 돌아올 때 SDK가 새 세션을 생성하기 전에 앱이 백그라운드에 머무를 수 있는 시간을 커스터마이즈합니다.
세션 시간 제한 구성
기본 세션 시간 제한은 60초입니다. 이 값을 변경하려면
- 씬 계층 구조에서 SingularSDKObject를 선택합니다.
- 인스펙터 패널에서 세션 시간 초과 초 필드를 찾습니다.
- 원하는 시간 제한 값을 초 단위로 입력합니다(예: 2분 동안 120).
- 기본 60초 시간 제한을 사용하려면 0으로 놔둡니다.
모범 사례: 세션 시간 제한을 설정할 때는 앱의 일반적인 사용 패턴을 고려하세요. 짧은 세션이 빈번한 게임은 시간 제한을 짧게 설정하는 것이 유리할 수 있지만, 생산성 앱은 시간 제한을 길게 설정해야 할 수 있습니다.
.unitypackage에서 UPM으로 업그레이드하기
기존 .unitypackage 설치 방식에서 최신 Unity 패키지 관리자(UPM) 방식으로 마이그레이션하는 경우 다음과 같은 중요한 업그레이드 단계를 따르세요.
중요: UPM 패키지를 설치하기 전에 기존의 모든 Singular SDK 파일을 수동으로 제거해야 합니다. 그렇지 않으면 충돌 및 빌드 오류가 발생할 수 있습니다.
업그레이드 절차
Unity 패키지 관리자를 통해 SDK를 설치하기 전에 다음 단계를 순서대로 완료하세요:
1. 코드 파일 제거
프로젝트의 /Code폴더(일반적으로 Assets/Singular/Code)로 이동하여 Singular 관련 C# Script를 모두 삭제합니다.
2. 안드로이드 종속성 제거
플러그인/안드로드로이동하여 다음 Singular 파일을 제거합니다:
-
이름에 "singular"가 포함된 모든
.aar파일 -
이름에 "singular"가 포함된 모든
.jar파일 -
singular-sdk.aar -
install-referrer-*.aar -
singular-unitybridge.aar
3. iOS 종속성 제거
플러그인/iOS로 이동하여 다음 Singular 파일을 제거합니다:
-
모든
.h헤더 파일(예:SingularSDK.h) -
모든
.m구현 파일(예:SingularUnityBridge.m) -
Singular.xcframework폴더
중요: Singular 관련 파일만 제거하세요. 프로젝트에 의존할 수 있는 다른 플러그인 파일을 삭제하지 않도록 주의하세요.
4. 정리 상태 확인
- 파일을 제거한 후 Unity를 완전히 닫습니다.
- 프로젝트 디렉터리에서 라이브러리 폴더를 삭제하여 Unity가 에셋을 강제로 리임포트하도록 합니다.
- Unity 프로젝트를 다시 엽니다.
- Unity가 에셋 리임포트를 완료할 때까지 기다립니다.
- 컴파일 오류가 없는지 확인한 후 UPM 설치를 진행합니다.
5. UPM 패키지 설치
이제 Unity 패키지 관리자를 통해 Singular SDK를 설치할 준비가 되었습니다. 이 가이드 상단의 UPM 설치 지침을따르세요.