이 페이지에서

For AI agents: a documentation index is available at /docs/llms.txt. Append .md to any page URL for markdown, or send Accept: text/markdown.

Unity SDK

Amplitude 애널리틱스 Unity SDK는 Amplitude iOS 및 Android SDK를 Unity 프로젝트에 쉽게 연동할 수 있는 플러그인입니다. 이 SDK는 Unity 2019.3.11 이상에서 작동합니다.

지원되는 플랫폼

Unity SDK는 순수 데스크톱이나 에디터를 지원하지 않습니다.

Android 또는 iOS용 Build Settings를 사용하여 앱을 테스트하십시오. 이 앱은 해당 기기 또는 에뮬레이터에 연결됩니다.

SDK 설치

Amplitude 애널리틱스 Unity SDK는 플랫폼에 따라 다양한 설치 방법을 지원합니다.

옵션 1: Unity 패키지 관리자

  1. Git이 설치되어 있는지 확인하십시오.
  2. Unity에서 _Window > Package Manager_를 클릭합니다.
  3. + 기호를 클릭하고 Git URL에서 패키지 추가를 선택합니다.
  4. https://github.com/amplitude/unity-plugin.git?path=/Assets를 입력한 다음 추가를 클릭합니다.
  5. Unity 편집기는 Git에서 패키지를 가져옵니다.

옵션 2: 수동 다운로드

  1. GitHub 릴리즈 타임라인에서 amplitude-unity.unitypackage최신 버전을 다운로드하십시오.
  2. 패키지를 Unity 프로젝트로 가져오려면 두 번 클릭하십시오amplitude-unity.unitypackage.

Android

난독화 예외 추가

이 줄을 ProGuard 규칙 파일에 추가하십시오proguard.pro.

bash
-keep class com.amplitude.unity.plugins.AmplitudePlugin { *; }

의존성 관리

Amplitude의 com.amplitude.android-sdk 은 전이적 라이브러리이며, 그 자체로는 순서 무관 다른 의존성들을 포함하지 않습니다. Amplitude는 com.amplitude.android-sdk에 대한 다른 종속성을 Assets/Plugins/Android에 배치합니다. Amplitude는 OkHTTP를 사용하며, 표시되는 다른 종속성은 OkHTTP가 의존하는 것들입니다(예: Okio 또는 Jetbrains).

프로젝트에서 OkHTTP를 사용하는 경우 OkHTTP 및 관련 종속성을 선택 취소하여 포함시키지 않도록 선택할 수 있습니다.

unity-jar-resolver 사용

일부 사용자는 unity-jar-resolver스스로 사용합니다. 의존성을 강제로 해결할 때 unity-jar-resolver는 Amplitude 관련 jar를 정리합니다. 이 경우 해당 종속성을 *Dependencies.xml파일에 선언하십시오.

androidPackage태그 아래에 Amplitude의 네이티브 의존성을 추가하세요.

xml
<androidPackage spec="com.amplitude:android-sdk:2.+">
    <repositories>
    <repository>https://maven.google.com</repository>
    </repositories>
</androidPackage>
<androidPackage spec="com.squareup.okhttp3:okhttp:4.2.2">
    <repositories>
    <repository>https://maven.google.com</repository>
    </repositories>
</androidPackage>

API 호환성

Amplitude 애널리틱스 Unity SDK는 OkHTTP 라이브러리에 의존합니다. OkHTTP v3.13을 사용하려면 최소 Android 버전인 Android 5.0인 Android Lollipop(API 21)이 필요합니다. 자세한 내용은 'OkHttp 3.13 requires Android 5+'를 참조하십시오.

Amplitude는 사용할 OkHTTP 버전을 제한하지 않습니다. API 19, 20(Android KitKat)이 작동하려면 OkHTTP 버전을 3.13 이하로 다운그레이드하십시오.

  1. OkHTTP 버전을 3.13 이하로 변경하십시오.
  2. Unity에서 .jar 파일을 복사하여 라이브러리를 가져옵니다. OkHTTP 라이브러리를 3.13 미만의 버전으로 교체하여 다운그레이드할 수 있습니다. Google 의존성 해결기를 사용하는 경우 *Dependency.xml파일에서 OkHTTP에 대한 의존성 버전을 업데이트하십시오.

iOS XCode 문제 해결

Xcode에서 시뮬레이터나 기기를 사용할 수 없다면 이는 Unity 프로젝트를 Device SDK(물리적 기기) 또는 Simulator SDK(에뮬레이터)를 사용하도록 구성해야 하기 때문입니다.

빌드에 대한 설정을 변경하려면 Unity > Edit > Project Settings... 을 선택합니다. > 플레이어 > iOS 탭에서 기타 설정 드롭다운 메뉴를 열고 구성으로 스크롤한 다음 대상 SDK 필드에 필요한 값 중 하나를 선택합니다.

SDK 초기화

계측을 수행하기 전에 SDK를 초기화하십시오. Amplitude 프로젝트에 대한 API 키는 필수입니다.

c#
Amplitude amplitude = Amplitude.getInstance();
amplitude.setServerUrl("https://api2.amplitude.com");
amplitude.logging = true;
amplitude.trackSessionEvents(true);
amplitude.init(AMPLITUDE_API_KEY);

선택적으로 문자열을 getInstance()에 전송할 수 있습니다instanceName. 이 문자열은 한 Amplitude 객체의 모든 설정과 연관됩니다.

c#
Amplitude amplitude1 = Amplitude.getInstance("client_1");
Amplitude amplitude2 = Amplitude.getInstance("client_2");
//Settings changes in amplitude1 will not be reflected in amplitude2
Amplitude.getInstance("client_1") //this is the same reference as amplitude1

SDK 구성

Amplitude Unity SDK는 Amplitude Android 유지관리 SDK 및 Amplitude iOS 유지관리 SDK를 기반으로 실행됩니다. 다음은 C#에서 설정할 수 있는 구성 옵션입니다.

기타 기본 구성의 경우:

일괄 처리 동작 구성

고성능 환경을 지원하기 위해 SDK는 이벤트를 일괄 처리로 전송합니다. SDK는 메소드에 logEvent의해 기록된 모든 이벤트를 메모리 대기열에 저장합니다. SDK는 백그라운드에서 이벤트를 일괄적으로 플러시합니다. setEventUploadPeriodSeconds를 사용하여 배치 동작을 사용자 정의할 수 있습니다. 기본적으로 serverUrl은 https://api2.amplitude.com/입니다. 이 SDK는 배치 API 엔드포인트를 통한 배치 모드를 지원하지 않습니다.

c#
// Events queue flushes every certain seconds based on setting
// Default value is 30 seconds
amplitude.setEventUploadPeriodSeconds(50);

EU 데이터 상주

버전 2.4.0부터는 클라이언트를 초기화한 후 Amplitude의 EU 서버로 데이터를 전송하도록 서버 영역을 구성할 수 있습니다. SDK는 서버 영역이 설정되어 있는 경우 이를 기반으로 데이터를 전환하고 전송합니다. 서버 영역 구성은 동적 구성을 지원합니다.

이전 버전의 경우 클라이언트를 초기화한 후 serverURL속성을 구성해야 합니다.

EU 데이터 상주를 위해서는 Amplitude EU 내에서 프로젝트를 구성하고 먼저 Amplitude EU의 API 키를 사용하여 SDK를 초기화하십시오. 이 방법은 먼저 올바른 설정을 하지 않으면 작동하지 않습니다.

c#
// For versions starting from 2.4.0
// No need to call setServerUrl for sending data to Amplitude's EU servers
amplitude.setServerZone(AmplitudeServerZone.EU);
// For earlier versions
amplitude.setServerUrl("https://api.eu.amplitude.com");

기본 이벤트 전송

이벤트는 사용자가 애플리케이션과 상호 작용하는 방식을 나타냅니다. 예를 들어 '버튼 클릭됨'은 기록해야 할 동작일 수 있습니다.

c#
amplitude.logEvent("Button Clicked");

Unity에서 이 기능을 실행할 때는 플랫폼 아래의 빌드 설정에서 iOS 또는 Android가 선택되어 있는지 확인하십시오.

속성과 함께 이벤트 전송

이벤트에는 속성도 포함될 수 있습니다. 속성은 발생한 이벤트에 대한 컨텍스트를 제공합니다. 예를 들어 '마우스 오버 시간'은 '버튼 클릭'과 관련된 이벤트 속성일 수 있습니다.

c#
Dictionary<string, object> eventProps = new Dictionary<string, object>();
eventProps.Add("Hover Time", 10);
amplitude.logEvent("Button Clicked", eventProps);

사용자 속성 설정

개인정보 보호 및 추적

개인정보 보호정책에 위배될 수 있는 전체 사용자 데이터를 추적하지 마십시오. 개인정보 보호 문제와 관련하여 도움이 필요하시면 Amplitude 플랫폼 팀에 문의하십시오.

Identify

식별은 이벤트를 전송하지 않고 특정 사용자의 사용자 속성을 설정하는 데 사용됩니다. Unity SDK는 개별 사용자 속성에 대해 setUserProperty, setOnce, add 및 append 작업을 지원합니다.

제공된 Identify 인터페이스를 사용하여 작업을 선언합니다. 단일 Identify 객체에서 여러 작업을 함께 연결합니다. Identify 객체를 Amplitude 클라이언트에 전달하여 서버로 전송합니다.

이벤트 후에 ID 호출

을 전송하면 작업 결과가 대시보드 사용자의 프로필 영역에 즉시 나타나지만 ID 호출 후에 다른 이벤트를 전송할 때까지 차트 결과에 나타나지 않습니다. ID 호출은 앞으로 진행되는 이벤트에만 영향을 줍니다. 자세한 내용은 사용자 속성 및 이벤트를 참조하십시오.

사용자 ID 관리

identify 메소드를 사용하여 사용자의 ID를 처리할 수 있습니다. 이러한 방법을 적절하게 사용하면 이벤트가 장치, 브라우저 및 기타 플랫폼 간에 이동할 때 올바른 사용자에게 연결될 수 있습니다.

이러한 사용자 속성 작업이 포함된 identify 호출을 Amplitude로 전송하여 사용자의 이벤트를 특정 사용자 속성과 연결합니다.

setUserProperty

setUserProperty 는 사용자 속성의 값을 설정합니다. 또한 여러 identify 호출을 함께 연결할 수도 있습니다.

c#
amplitude.setUserProperty("saw_page_a", true);

setOnce

setOnce는 사용자 속성의 값을 한 번만 설정합니다. SDK는 setOnce를 사용한 후속 호출을 무시합니다.

c#
amplitude.setOnceUserProperty("page_views", 50);

추가

add는 사용자 속성을 일부 숫자 값만큼 증가시킵니다. 사용자 속성에 아직 값이 설정되어 있지 않은 경우 SDK는 이를 0으로 초기화합니다.

c#
amplitude.addUserProperty("oranges", 5);
Dictionary<string, object> values = new Dictionary<string, object>();
values.Add("Key A", "Value A");
amplitude.addUserPropertyDict("user_facts", values);

여러 사용자 속성 설정

logEvent() 메소드를 사용하면 이벤트 로깅과 함께 사용자 속성을 설정할 수 있습니다. setUserProperties을 단축어로 사용하여 여러 사용자 속성을 한 번에 설정할 수 있습니다. 이 메소드는 Identify.set를 감싸는 기능입니다.

c#
Dictionary<string, object> values = new Dictionary<string, object>();
values.Add("user_time", 100.5);
values.Add("engagement", true);
amplitude.setUserProperties(values);

사용자 속성의 배열

배열을 사용자 속성으로 사용할 수 있습니다. 배열을 직접 설정하거나 append을 사용하여 배열을 생성할 수 있습니다.

c#
int[] arr = new int[] { 1, 2, 4, 8 };
amplitude.setUserProperty("user_running_times", arr);

추가

append는 사용자 속성 배열에 값을 추가합니다. 사용자 속성에 아직 값이 설정되어 있지 않은 경우 SDK는 새 값을 추가하기 전에 이를 빈 목록으로 초기화합니다. 사용자 속성에 기존 값이 있고 해당 값이 목록이 아닌 경우 SDK는 기존 값을 목록으로 변환하고 새 값을 추가합니다.

c#
amplitude.setUserProperty("stringArray", new string[]{"replace", "existing", "strings"});
amplitude.appendUserProperty("stringArray", new string[]{ "append", "more", "strings" });

사용자 속성 지우기

clearUserProperties 이 메소드는 모든 사용자 속성을 한 번에 지우는 데 사용됩니다.

사용자 속성 지우기는 되돌릴 수 없습니다.

Amplitude는 초기화 전에 사용자의 사용자 속성 값을 사용자가 트리거하는 전체 향후 이벤트와 동기화하지 않습니다. 이는 SDK가 해당 값을 재설정했기 때문입니다.

c#
amplitude.clearUserProperties();

설정 해제

unset 사용자 속성을 설정해제하고 제거합니다.

c#
amplitude.unsetUserProperty("property_name_to_unset");

사용자 그룹 설정

Amplitude는 사용자를 그룹에 할당하고 해당 그룹에 대해 고유 사용자별 수행 회수가와 같은 쿼리를 수행하는 것을 지원합니다. 그룹 구성원 중 적어도 한 명이 특정 이벤트를 수행한 경우 해당 그룹도 수행 회수가에 포함됩니다.

예를 들어 'orgId'를 사용하여 사용자가 속한 조직을 기준으로 사용자를 그룹화하려는 경우가 있습니다. Joe는 'orgId' '10'에 있고 Sue는 'orgId' '15'에 있습니다. Sue와 Joe는 둘 다 특정 이벤트를 수행합니다. 이벤트 세분화 차트에서 해당 조직을 쿼리할 수 있습니다.

그룹을 설정할 때 groupType 및 groupName를 정의하십시오. 이전 예시에서 'orgId'는 groupType이고 '10'과 '15'는 groupName에 대한 값입니다. groupType의 또 다른 예로는 'tennis' 및 'baseball'과 같은 groupName 값을 가진 'sport'가 있을 수 있습니다.

그룹을 설정하면 groupType:groupName도 사용자 속성으로 설정되며, 해당 사용자의 groupType에 대해 설정된 모든 기존 groupName 값과 해당 사용자 속성 값이 덮어쓰여집니다. groupType은 문자열이고, groupName는 사용자가 여러 그룹에 속해 있음을 나타내는 문자열 또는 문자열 배열일 수 있습니다.

이 예제에서는 groupName이 "15"인 groupType "orgID"를 보여줍니다. 두 번째 줄은 groupNames로 "tennis"와 "soccer"를 사용하는 groupType "sport"를 보여줍니다.

c#
Amplitude.getInstance().setGroup("orgId", "15");
Amplitude.getInstance().setGroup("sport", new JSONArray().put("tennis").put("soccer"));  // list values

logEventWithGroups을 사용하여 이벤트 수준 그룹을 설정할 수도 있습니다. 그룹 지정은 사용자가 기록하는 특정 이벤트에만 적용되며, setGroup다음을 사용하여 명시적으로 설정하지 않는 한 사용자에게 지속되지 않습니다.

c#
JSONObjecteventProperties=newJSONObject().put("key", "value");
JSONObjectgroups=newJSONObject().put("orgId", 10);
Amplitude.getInstance().logEvent("initialize_game", eventProperties, groups);

매출 추적

Amplitude는 사용자가 창출한 수익을 추적할 수 있습니다. Amplitude는 Amplitude의 이벤트 세분화 및 수익 LTV (Lifetime Value) 차트에서 사용하는 특수 필드를 갖춘 별개의 수익 객체를 통해 수익을 추적합니다. Amplitude는 플랫폼의 매출과 관련된 데이터를 자동으로 표시합니다. 수익 객체는 다음과 같은 특수 속성과 eventProperties필드를 통해 사용자 정의 속성을 지원합니다.

logRevenue호출은 플랫폼에서 최대 2개의 서로 다른 이벤트 유형을 생성합니다:

  • '[Amplitude] 수익': Amplitude는 인증이 켜져 있는지 여부에 관계없이 모든 수익 이벤트에 대해 이 이벤트를 기록합니다.
  • '[Amplitude] Revenue(Verified/Unverified)': 이 수익 이벤트에는 실제 '$revenue' 속성이 포함됩니다.

원시 데이터에서 이러한 클라이언트측 수익 이벤트에 지정된 기본 이름을 변경할 수는 없지만 표시 이름을 수정할 수는 있습니다. 수익 추적에 대한 자세한 내용은 수익 추적 설명서를 참조하십시오.

가격은 음수일 수 있으며, 이는 손실된 수익(예: 환불이나 비용)을 추적하는 데 유용할 수 있습니다.

수익 확인

Unity는 Android 및 iOS 스토어를 모두 지원하므로 수익 확인에 대한 적절한 문서를 참조하십시오. Android 및 iOS/tvOS/macOS 문서 및 스토어에 대한 특별 지침(Android AIDL/Google Play 청구, Amazon 스토어 또는 iOS 앱 스토어)을 참조하십시오.

c#
amplitude.logRevenue(0.03);
amplitude.logRevenue("sku", 1, 1.99);
amplitude.logRevenue("sku", 1, 1.99, "cmVjZWlwdA==", null);
Dictionary<string, object> revenueProperties = new Dictionary<string, object>()
{
  {"car", "blue"},
  {"price", 12.99}
};
if (Application.platform == RuntimePlatform.IPhonePlayer) {
  amplitude.logRevenue("sku", 1, 1.99, "cmVjZWlwdA==", null, "purchase", revenueProperties);
} else if (Application.platform == RuntimePlatform.Android) {
  amplitude.logRevenue("sku", 1, 1.99, "receipt", "receiptSignature", "purchase", revenueProperties);
}

Amplitude는 통화 전환을 지원하지 않습니다. 전송하기 전에 모든 수익 데이터를 원하는 통화로 정규화하십시오.

사용자 세션

Android에서 세션은 사용자가 앱을 포그라운드에 두는 기간입니다.

Amplitude는 이벤트를 세션별로 그룹화합니다. 동일한 세션 내에서 기록된 이벤트는 동일한 session_id를 공유합니다. Amplitude는 세션을 자동으로 처리하므로 startSession()또는 endSession()과 같은 API를 수동으로 호출할 필요가 없습니다.

Amplitude가 세션을 연장할 시간 윈도우를 조정할 수 있습니다.

c#
client.setMinTimeBetweenSessionsMillis(10000); //10 seconds

기본적으로 SDK는 '[Amplitude] Start Session' 및 '[Amplitude] End Session' 이벤트를 전송하지 않습니다. SDK가 이러한 이벤트를 전송하지 않더라도 Amplitude는 여전히 session_id를 사용하여 세션을 추적합니다. 이러한 세션 이벤트를 다시 활성화하려면 SDK를 초기화하기 전에 이 줄을 추가하십시오.

c#
Amplitude amplitude = Amplitude.Instance;
amplitude.trackSessionEvents(true);
amplitude.init(AMPLITUDE_API_KEY);

또한 이벤트를 세션 외부로 기록할 수도 있습니다. 내부적으로(Amplitude 대시보드에서), 세션 외 이벤트는 -1 의 session_id 을 가지며 현재 세션의 일부가 아닙니다. 즉, 현재 세션을 연장하지 않습니다. 이 기능은 예를 들어 푸시 알림에 의해 트리거된 이벤트를 기록하는 경우에 유용할 수 있습니다. logEvent()를 호출할 때 입력 매개변수를 outOfSession true로 설정하여 이벤트를 세션 외부로 기록할 수 있습니다.

c#
Dictionary<string, object> eventProps = new Dictionary<string, object>();
bool outOfSession = true;
client.logEvent("event out of session", eventProps, outOfSession);

광고 ID

광고주 ID(IDFA라고도 함)는 iOS 및 Google Play 스토어에서 제공하는 고유 식별자입니다. IDFA는 기기뿐만 아니라 모든 사람에게 고유하기 때문에 모바일 어트리뷰션에 유용합니다. 모바일 어트리뷰션은 모바일 앱의 설치가 원래 소스(예: 광고 캠페인, 앱 스토어 검색)에 기인하는 것을 말합니다.

모바일 앱은 IDFA를 요청하기 위해 권한이 필요하며, 어린이를 대상으로 한 앱은 전혀 추적할 수 없습니다. IDFA를 사용할 수 없는 경우 대안으로 IDFV, 장치 ID 또는 이메일 로그인 시스템을 고려하십시오.

iOS 설정

설정 지침은 Unity iOS IDFA 및 GPS 설정을 참조하십시오.

Android 설정

설정 지침은 Android SDK를 참조하십시오.

위치 추적

위치 추적을 위해 Amplitude는 기본적으로 사용자 이벤트의 IP를 위치(GeoIP 조회)로 변환합니다. 앱의 자체 추적 솔루션 또는 사용자 데이터는 이 정보를 무시할 수 있습니다.

Amplitude는 Android 위치 서비스에 액세스하여(가능한 경우) SDK가 이벤트를 기록하는 특정 좌표(경도 및 위도)를 추가할 수 있습니다.

사용자 지정 사용자 ID 설정

앱에 사용자를 추적하려는 자체 로그인 시스템이 있는 경우 언제든지 setUserId를 호출할 수 있습니다.

c#
Amplitude.Instance.setUserId("USER_ID");

또한 사용자 ID를 init 호출에 인수로 추가할 수도 있습니다.

c#
Amplitude.Instance.init(AMPLITUDE_API_KEY, "USER_ID");

Amplitude는 각 고유한 사용자 ID를 고유한 사용자로 해석하므로 변경될 수 있는 사용자 ID를 사용자에게 할당하지 마십시오. 자세한 내용은 Amplitude에서 고유 사용자 추적을 참조하세요.

고급옵션 항목

COPPA 제어

IDFA, IDFV, 도시, IP 주소 및 위치 추적에 대한 COPPA(아동 온라인 개인 정보 보호법) 제한을 동시에 활성화 또는 비활성화할 수 있습니다. 13세 미만의 어린이로부터 정보를 요청하는 앱은 COPPA를 준수해야 합니다.

c#
client.enableCoppaControl();

추적 거부

사용자는 추적을 완전히 거부하기를 원할 수도 있습니다. 이는 이벤트가 없고 브라우징 기록이 없음을 의미합니다. 이 API는 특정 사용자의 개인 정보 보호 요청을 충족하는 방법을 제공합니다.

c#
client.setOptOut(true); //No events are tracked for this user

동적 구성

Unity SDK를 사용하면 사용자는 동적 구성을 사용하도록 앱을 구성할 수 있습니다. 이 기능은 사용자의 위치를 기반으로 최적의 Amplitude 서버 URL을 자동으로 찾습니다.

  • 자체 프록시 서버를 보유하고 있고 setServerUrl API를 사용하는 경우에는 동적 구성을 사용하지 마십시오.
  • 중국 본토에 사용자가 있는 경우, Amplitude는 동적 구성을 사용하는 것을 권장합니다.
  • 기본적으로 이 기능은 해제되어 있습니다. 이를 사용하려면 명시적으로 활성화해야 합니다.
  • 기본적으로 이 기능은 Amplitude의 미국 서버에 대한 서버 URL을 반환합니다. Amplitude의 EU 서버로 데이터를 전송해야 하는 경우, setServerZone을 사용하여 이를 EU 지역으로 설정하세요.
c#
amplitude.setUseDynamicConfig(true);

iOS IDFA 및 GPS 설정

이 섹션에서는 Unity SDK 사용자가 로깅된 이벤트에서 IDFA(광고주 ID) 및 GPS 좌표 데이터에 액세스할 수 있도록 하는 프로세스를 안내합니다.

고려 사항

  • 이 기능은 Unity SDK에 포함되지 않습니다. 왜냐하면 Apple App Store는 IDFA 코드를 사용하는 전체 앱에 플래그를 지정하기 때문입니다. 이는 코드가 비활성화되었거나 Amplitude와 같은 타사 SDK 개발업체로부터 제공되었더라도 마찬가지입니다.
  • IDFA의 대안을 고려하십시오. 사용자가 IDFA 추적을 활성화한다고 가정하지 마십시오. 옵트인 시스템의 참여도가 낮습니다. 기기 ID, IDFV를 사용하거나 자체 앱의 이메일 로그인 시스템을 사용자 지정 사용자 속성으로 전달하세요.
  • Objective-C iOS 로직을 편집하여 IDFA 및 GPS 데이터를 가져올 수 있습니다. 그러나 현재 코드는 권한 관리를 처리하며, 앱 사용자가 권한을 부여할 때 SDK 첫 사용 후 IDFA 및 GPS 데이터를 정확하게 업데이트합니다.

설정

iOS App Store 규정 준수 앱

이 어린이를 대상으로 제작되었기 때문에 COPPA의 적용을 받는 경우, 해당 앱에는 전체 IDFA 또는 GPS 추적 코드가 포함될 수 없습니다. 이러한 이유로 IDFA 및 GPS 코드는 추가 설정이 필요합니다.

먼저 두 파일 unity-plugin/IdfaIOS/CustomIdfa.m및 unity-plugin/IdfaIOS/CustomGPS.m를 가져와서 Assets/Scripts에 배치합니다. 파일을 어디에나 배치할 수 있지만 모든 #import구문이 올바른 경로로 이어지는지 확인하십시오.

.cs게임 스크립트의 가져오기 섹션(맨 위)에 다음 가져오기를 추가하십시오:

c#
#if (UNITY_IPHONE || UNITY_TVOS)
using System.Runtime.InteropServices;
#endif

게임 클래스 내에서 MonoBehavior 클래스 또는 순서 무관 클래스 내에 다음 코드를 추가하십시오.

c#
public class AmplitudeDemo : MonoBehavior {
#if (UNITY_IPHONE || UNITY_TVOS)
    [DllImport ("__Internal")]
    private static extern void setIdfaBlock(string instanceName);
    [DllImport ("__Internal")]
    private static extern void setLocationInfoBlock(string instanceName);
#endif

마지막으로 게임 코드에서(아마도 void Start())이 함수를 호출합니다. YOUR_INSTANCE_NAME은 이 특정 Amplitude 인스턴스와 연관된 문자열입니다. YOUR_INSTANCE_NAME는 null 또는 빈 문자열일 수도 있습니다.

c#
Amplitude amplitude = Amplitude.getInstance(YOUR_INSTANCE_NAME);
amplitude.init(AMPLITUDE_API_KEY);
#if (UNITY_IPHONE || UNITY_TVOS)
    setLocationInfoBlock(YOUR_INSTANCE_NAME);
    setIdfaBlock(YOUR_INSTANCE_NAME);
#endif

이러한 기능은 iOS 사용자에게 GPS 위치 추적 및 IDFA 추적에 대한 권한 관리를 수락하거나 거부하도록 요청합니다.

Unity 앱에는 두 가지 특별한 구성이 필요합니다.\ 위치를 확인하려면 _Unity > Edit > Project Settings..._로 이동하십시오. 아래 첫 번째 이미지의 메뉴가 팝업됩니다. 플레이어를 선택한 다음 iOS 탭을 클릭합니다. 기타 설정을 클릭하고 위치 사용 설명 필드까지 스크롤합니다. 사용자에게 GPS 추적 권한 관리를 요청하는 문장을 텍스트 상자에 입력합니다.

XCode 시뮬레이터

일반적으로 실제 휴대폰에서만 IDFA 추적 권한 관리를 안정적으로 테스트할 수 있습니다.

IDFA의 경우 Apple의 사양에 따라 Info.plist파일을 편집하십시오. 이 Unity 게시물의 지침에 따라 Unity 스크립트를 사용하여 이 작업을 수행할 수 있습니다.

또한 Unity가 앱을 iOS로 컴파일하고 Xcode로 실행할 때 최상위 파일 Info.plist을 찾으십시오. 전체 키 값 쌍 옆에 있는 더하기 기호를 클릭합니다. Xcode 편집기를 사용하여 키 Privacy - Tracking Usage Description를 찾고 Type 이 String 인지 확인한 다음 Value 필드에 추적 권한을 요청하는 프롬프트를 입력하십시오.

이 내용이 도움이 되었나요?