Unity 패키지 관리자 SDK 통합 가이드

 

시작하기 전에 SDK 사전 요구 사항

  • Singular SDK 연동의단계를 따르세요 :계획 및 사전 요구 사항의 단계를 따르세요.
    이 단계는 모든 Singular SDK 연동의 전제 조건입니다.
  • Unity용 Google 외부 종속성 관리자인 Google EDM4U를 사용하는지 확인합니다.
    Google EDM4U란 무엇인가요? 자세히 알아보기 [여기].
경고: 버전 5.3.0으로 업그레이드할 때 변경되는 사항

버전 5.3.0부터 프로젝트에서 인앱 구매를 사용하는 경우 Singular는 Unity IAP(인앱 구매) 라이브러리를 필수 종속 요소로 요구합니다. 이 라이브러리는 Unity 패키지 관리자(package.json)를 통해 Unity 프로젝트로 임포트해야 합니다.

Singular Unity SDK에서 IAP 기능에 액세스할 수 있도록 설정하는 단계입니다.

1단계: UPM을 통해 Unity IAP를 설치합니다:

  1. 패키지 관리자를 엽니다: Unity 에디터에서 창 패키지 관리자로 이동합니다.
  2. Unity 레지스트리를 선택합니다: 패키지 관리자 창의 상단에 있는 드롭다운 메뉴에서 Unity 레지스트리를 선택합니다.
  3. Unity IAP를 검색합니다: 목록을 스크롤하거나 검색창을 사용하여 인앱 구매 또는 Unity IAP를 찾습니다.
  4. 패키지를 설치합니다: 인앱 구매를 찾으면 클릭한 다음 오른쪽 패널에서 설치 버튼을 클릭합니다.
  5. 설치를 확인합니다: 설치가 완료되면 Unity가 프로젝트에 필요한 에셋과 종속성을 자동으로 추가하고, 에셋/플러그인 아래에 Unity 구매 에셋을 위한 폴더가 생성됩니다.

2단계: 스크립팅 정의 심볼 설정:

각 플랫폼(Android 및 iOS)에 대해 다음 스크립팅 정의 심볼을 설정합니다:

  1. 플레이어 설정 > 플레이어 > Android/iOS > 스크립트 컴파일로 이동합니다.
  2. 스크립팅 정의 심볼 필드에 "SINGULAR_SDK_IAP_ENABLED" 를 추가합니다.
    PlayerSettingIAP.png

    이 작업은 Unity 에디터 또는 Unity 클라우드 대시보드를 통해 수행할 수 있습니다.

경고: 위의 단계 중 하나라도 올바르게 완료되지 않으면 컴파일 시 오류가 발생하여 프로젝트가 성공적으로 빌드되지 않을 수 있습니다.

경고: ".unitypackage"에서"UPM" SDK 버전으로 업그레이드하고 계신가요? 아래에 명시된 대로 특정 업그레이드 단계를 수행해야 합니다!
중요: UPM SDK 설치를 진행하기 전에 다음 업그레이드 단계를 수행하세요.

업그레이드하려면 더 이상 사용되지 않는 연동 프로세스를 사용하여 임포트한 기존 Singular SDK 파일을 .unitypackage에서 수동으로 제거해야 합니다.
이 작업은 Unity 패키지 관리자(UPM)로 SDK를 임포트하기 전에 반드시 완료해야 합니다!

Unity 패키지 관리자(UPM)를 사용하여 SDK를 연동하기 전에 다음 파일 목록을 제거하세요. 특히 주의하여 여기에 명시된 Singular 파일만 제거해야 합니다:

  1. 프로젝트의 /Code 폴더에서:
    unity_upgrade_code_folder_file_removal.png

  2. 프로젝트의 /Plugins/Android 폴더에서 AAR 및 JAR을 제거합니다:
    unity_upgrade_plugin_android_folder_file_removal.png

  3. 프로젝트의 /Plugins/iOS 폴더에서 iOS .h 및 .m 파일과 .xcframework를 제거합니다:
    unity_upgrade_plugin_ios_folder_file_removal.png

1. SDK 설치하기

1.1. SDK 패키지 다운로드 및 임포트

Unity 패키지 관리자(UPM)를 사용하여 Singular Unity SDK 설치하기
  1. 패키지 관리자 창에서

      • [+] 버튼을 클릭합니다.
      • "git URL에서 패키지 추가"를선택합니다 .
      • 비키즈 SDK의 경우
        Singular 유니티 SDK GitHub URL(
        https://github.com/singular-labs/Singular-Unity-SDK.git
        )을 입력합니다.
      • 키즈 SDK의 경우
        Singular 유니티 키즈 SDK GitHub URL을 입력합니다:
        https://github.com/singular-labs/Singular-Unity-SDK.git#kids

    unity-git-url.png

  2. "추가" 버튼을 클릭합니다.
중요: Google의 EDM4U를 사용하지 않는 경우 다음 추가 단계를 따르세요.

1.2. 안드로이드용 구성

팁: Unity를 사용할 때 AndroidManifest를 어떻게 업데이트하나요?
  1. Unity v2018.3 이상부터는 플레이어 창에서 커스텀 메인 매니페스트 속성( 파일 > 빌드 설정 > 플레이어 설정 > 퍼블리싱 설정으로 액세스할 수 있음) 을 활성화하여 자신만의 AndroidManifest 파일을 추가할 수 있습니다. 그러면 기본 AndroidManifest.xml 파일이 생성되며, 이를 편집할 수 있습니다.

    파일은 Assets/Plugins/Android/AndroidManifest.xml 위치에 있습니다.

    출처: https://docs.unity3d.com/2023.2/Documentation/Manual/android-manifest.html

  2. 유니티의 커스텀 메인 매니페스트 파일을 사용하는 대신, 유니티에서 앱을 익스포트한 후 안드로이드 스튜디오에서 AndroidManifest.xml에 액세스할 수 있습니다.

팁: Unity를 사용할 때 Gradle 설정을 업데이트하는 방법.
  1. Unity v2018.3 이상에서는 플레이어 창에서 커스텀 Gradle 템플릿 속성( 파일 > 빌드 설정 > 플레이어 설정 > 퍼블리싱 설정으로 액세스할 수 있음) 을 활성화하여 커스텀 Gradle 빌드 파일을 추가할 수 있습니다. 그러면 편집할 수 있는 기본 mainTemplate.gradle 파일이 생성됩니다.

    파일은 다음 위치에 있습니다: 자산/플러그인/안드로이드/mainTemplate.gradle

    출처: https://docs.unity3d.com/2023.2/Documentation/Manual/android-gradle-overview.html

  2. Unity의 커스텀 Gradle 빌드 파일을 사용하는 대신 Unity에서 앱을 익스포트한 후 Android Studio에서 Apps build.gradle에 액세스할 수 있습니다.

프로가드

Proguard를 사용하는 경우 proguard-unity.txt 파일에 다음 코드 줄을 추가합니다:

-keep class com.singular.sdk.** { *; }
-keep public class com.android.installreferrer.** { *; }
-keep public class com.singular.unitybridge.** { *; }

1.3. iOS용 팁

팁: Unity에서 빌드한 후 Xcode에서 빌드하기 전에Cocoa 포드를 업데이트하세요.

파드가 있는 폴더에서 다음 명령을 실행하는 것이 좋습니다.

pod repo update
pod update
팁: applicationDidBecomeActive()에서 IDFV 식별자를 로깅하세요.

iOS에서 테스트하려면 다음 코드 줄을 추가하는 것이 좋습니다: 클래스 > UnityAppController > applicationDidBecomeActive 함수.

// Printing Identifier for Vendor (IDFV) to Xcode Console for use in Singular SDK Console


NSLog(@"Singular === IDFV: %@", [[[UIDevice currentDevice] identifierForVendor] UUIDString]);

idfv.png

이렇게 하면 Xcode 로그에서 앱 열기에서 IDFV 식별자를 검색할 수 있습니다. Singular SDK 콘솔에서 이 식별자를 사용하여 테스트 기기를 추가합니다.

idfv3.png

팁: 딥링크 지원 리마인더
  1. 서명 및 기능에서 연결된 도메인을 추가합니다. 연결된 도메인이 올바르게 구성되지 않으면 Singular 추적 링크를 클릭할 때 앱이 열리지 않습니다.

  2. 팀 ID가 Singular 플랫폼의 앱 페이지에도 추가되었는지 확인합니다. 이렇게 하면 Singular가 유니버설 링크 기능을 활성화하는 데 필요한 Apple 앱 사이트 연결 파일을 빌드하고 호스팅할 수 있습니다.

2. SDK 연동

2.1. SingularSDKObject 생성

SingularSDKObject를 계층 구조에 추가합니다.

Singular 프리팹 오브젝트를 사용하여 SingularSDKObject를 추가합니다.

Singular 프리팹 개체를 계층 구조 창으로 이동합니다.

  • 프로젝트 패널에서, 이동합니다: 패키지 > Singular > SingularSDK > 프리팹으로 이동합니다.
  • SingularSDKObject를 계층 구조 창으로 이동합니다.
    unity_prefab.png
프리팹 게임 오브젝트를 사용하지 않는 경우 다음 단계에 따라 "SingularSDKObject" 게임 오브젝트를 수동으로 추가합니다.

계층 구조 창에서:

  1. 메인 씬에서 빈 게임 오브젝트를 생성합니다.
  2. 게임 오브젝트의 이름을 지정합니다: SingularSDKObject.
    중요: 게임 오브젝트의 이름은 "SingularSDKObject"여야 Singular의 SDK가 작동합니다.
  3. SingularSDKObject를 클릭합니다.
  4. 검사 창으로 이동합니다.
  5. 검사 창에서 컴포넌트 추가를클릭합니다 .
  6. 검색 필드에"Singular"를 입력하고"Singular SDK" 스크립트를 선택합니다.
    unity_add_script.png

SingularSDKObject 설정 구성하기

  1. SingularSDKObject에 대한 검사 창의 각 필드에 Singular SDK 키와 SDK 시크릿을 붙여넣습니다. SDK 키 및 비밀번호를 검색하려면 Singular 계정에 로그인하고"개발자 도구 > SDK 연동 > SDK 키"로 이동합니다.)

    sdk_keys.png
    중요: Singular 리포팅 API 키를 사용하지 않으면 SDK 데이터를 받을 수 없습니다. 위의 지침에 따라 적절한 키와 비밀번호를 검색하세요.
    unity_singularsdkobject_settings.png

    Singular SDK 키와 비밀번호가 잘못 적용되면 데이터가 Singular로 전송되지 않습니다.
    Singular SDK 콘솔을 사용하여 구현을 테스트하여 올바른 동작을 확인하세요.

    참고: SingularSDKObject의 기본 검사 창 설정:

    검사 창에서 다음 옵션이 활성화됩니다:

    • 깨어 있을 때 초기화 (체크됨)

      이 설정을 사용하면 Unity가 앱의 깨어 있음 상태에 따라 Singular SDK 초기화를 제어할 수 있습니다.

      앱 요구 사항에 대한 개인정보 보호 규정 준수를 따르고 필요에 따라 이 옵션을 업데이트하세요. 이 옵션을 선택 취소하면 깨어 있음 상태의 Singular SDK 초기화가 비활성화되며 수동으로 초기화해야 합니다.

    • SKAN 사용 (체크됨)

      Unity SDK 버전 4.0.17부터 SKAdNetwork가 기본적으로 활성화됩니다. 이 기능은 관리 모드(Singular 대시보드에서 사용자가 선택한 전환 모델을 사용하여 Singular가 SKAN 전환 값을 업데이트하는 모드)에서 활성화됩니다.

    • 추적 승인 대기, 0으로 설정(꺼짐)

      앱에 앱 추적 투명도(ATT) 프롬프트가 표시되는 경우, 이 시간 제한을 300초로 설정하는 것이 좋습니다. 시간 제한을 추가하면 Singular SDK 세션이 지연되어 사용자가 이벤트를 Singular 서버에 로깅하기 전에 앱 트래킹 투명성 동의를 승인/거부할 수 있습니다. 사용자가 ATT 프롬프트에 응답하면 Singular SDK는 지체 없이 계속 진행됩니다. 이렇게 하면 동의가 제공될 때 인스톨 어트리뷰션에 대한 IDFA 식별자를 캡처할 수 있습니다. ATT를 표시하지 않는 경우 이 옵션의 기본값은 0(대기 없음)으로 유지해야 합니다.

    • 로깅 활성화 (체크)

      Singular SDK에서 로깅을 활성화합니다. 이 옵션은"로그 수준" 옵션과 함께 사용해야 합니다.
      "로그 수준"은 아래 열거형 매핑에 명시된 대로 "int" 숫자로 지정해야 합니다. 이 범위의 숫자가 낮을수록 로그가 더 상세하게 기록됩니다.

      //Based on Android Logger.java log levels enum: android.util.Log
      public enum LogLevel {
         Verbose = 2,
         Debug   = 3,
         Info    = 4,
         Warn    = 5,
         Error   = 6,
         Assert  = 7
         }

      참고: 현재 대부분의 로그는 Android에서만 사용할 수 있습니다.

    • Ddl 시간 초과 초를 0으로 설정

      기본적으로 "0"으로 설정하면 60초의 시간 제한이 사용됩니다. 이는 Singular 서버가 마지막 터치 어트리뷰션에 연결된 딥링크 값을 검색할 수 있는 시간을 알려줍니다. 디퍼드 딥링크가 발견되면 SDK 세션 요청에 대한 응답에서 앱으로 다시 전송되고 SingularLinkHandler에서 처리됩니다. 60초 이내에 디퍼드 딥링크를 찾지 못하면 서버는 검색을 중지합니다.

    • 세션 시간 초과 초가 0으로 설정됨

      앱이 백그라운드에서 포그라운드로 돌아올 때 Singular SDK가 새 세션을 등록하기 전까지의 시간(초)입니다. 기본적으로 "0"으로 설정하면 60초의 시간 제한이 사용됩니다. 필요한 경우 이 설정을 조정하여 더 긴 시간으로 설정할 수 있습니다.

    • 쇼트링크 확인 시간 제한을 0으로 설정

      기본적으로 '0'으로 설정하면 10초의 시간 제한이 사용됩니다. 이 시간 제한은 사용자 환경을 보호합니다. 지정된 시간 내에 지정된 쇼트링크가 해결되지 않으면 Singular SDK는 딥링크 핸들러를 트리거하지 않습니다.

    기타 검사 창 옵션:

    Facebook 활성화(메타 설치 리퍼러)

    메타 인스톨 리퍼러 어트리뷰션 방법을 지원하려면 SingularSDKObject의 검사 창에Facebook 앱 ID를 추가합니다.

    1. 메인 장면에서 SingularSDKObject를 클릭합니다.
    2. 검사 창을 열고 "Facebook 앱 ID" 필드를 찾습니다.
    3. Facebook 앱 ID를 추가합니다.

2.2. SKAdNetwork 사용

Unity SDK 버전 4.0.17부터 SKAdNetwork가 기본적으로 활성화됩니다. 이 기능은 관리 모드(Singular 대시보드에서 선택한 전환 모델을 사용하여 Singular가 SKAN 전환 값을 업데이트하는 방식)에서 활성화됩니다.

최신 SDK를 사용하는 한 SKAdNetwork를 사용하기 위해 다른 설정이나 코드를 추가할 필요가 없습니다.

추가 정보

이전 버전의 SDK에서 SKAdNetwork 활성화하기

이전 버전의 SDK를 사용하는 경우 다음 중 한 가지 방법으로 SKAdNetwork를 활성화해야 합니다:

  • SingularSDKObject로 이동하여 SKANEnabled를 True로 설정합니다.
  • 앱 코드에서 SingularSDK.SkanRegisterAppForAdNetworkAttribution()을 호출합니다.
수동 모드에서 SKAdNetwork 사용(고급)

로직을 사용하여 SKAN 전환 값을 수동으로 관리하기로 선택한 경우 다음을 수행해야 합니다:

  • SingularSDKObject로 이동하여 manualSKANConversionManagement를 True로설정합니다 .
  • 코드에서 다음 메서드를 사용하여 변환 값을 설정하고 검색합니다.
SingularSDK.SkanUpdateConversionValue 메서드
설명

SKAdNetwork 전환 값을 업데이트합니다.

참고: SKAdNetwork 전환 값을 수동으로 업데이트하도록 선택한 경우 이 메서드를 사용합니다. 이 메서드는 manualSKANConversionManagement가 True로 설정된 경우에만 작동합니다.

서명 public void SkanUpdateConversionValue(int value)
사용 예제
// A sign-up event happened


Singular.Event("SignUp");

// Update the conversion value to 7


SingularSDK.SkanUpdateConversionValue(7);
SingularSDK.SkanGetConversionValue 메서드 예시
설명 Singular SDK가 추적한 현재 전환 값을 가져옵니다.
서명 public int? SkanGetConversionValue()
사용 예제
int? value = SingularSDK.SkanGetConversionValue();
SingularSDK.SetConversionValueUpdatedHandler 메서드
설명 전환값이 업데이트될 때 알림을 받을 핸들러를 설정합니다.
시그니처 public void SetConversionValueUpdatedHandler(SingularConversionValueUpdatedHandler 핸들러)
사용 예시
public class Main : MonoBehaviour, SingularConversionValueUpdatedHandler {
  void Awake() {
    SingularSDK.SetConversionValueUpdatedHandler(this);
  }

  void OnConversionValueUpdated(int value) {
    // Use the conversion value


  }
}

2.3. iOS 앱 트래킹 투명성(ATT) 동의 처리하기

앱 추적 투명성(ATT) 프롬프트가 표시되나요?

iOS 14.5부터 앱은 추적 목적에 유용한 기기의 IDFA를 포함한 일부 사용자 데이터에 액세스하고 공유하기 전에 앱 추적 투명성 프레임워크를 사용하여 사용자 동의를 요청해야 합니다.

Singular 및 광고 네트워크는 IDFA를 통해 디바이스를 식별하고 인스톨 어트리뷰션을 수행함으로써 큰 이점을 얻을 수 있습니다(IDFA 없이도 이 작업을 수행할 수 있는 방법이 있지만). IDFA를 얻기 위해 사용자의 동의를 구할 것을 강력히 권장합니다.

사용자가 ATT 프롬프트에 응답할 때까지 Singular SDK 초기화를 지연하는 것이 좋습니다.

기본적으로 Singular SDK는 초기화될 때 사용자 세션을 전송합니다. 새 디바이스에서 세션이 전송되면 즉시 Singular의 어트리뷰션 프로세스가 트리거되며, 이 프로세스는 해당 시점에 Singular에서 사용 가능한 데이터만을 기반으로 수행됩니다. 따라서 Singular SDK가 첫 세션을 전송하기 전에 동의를 요청하고 IDFA를 검색하는 것이 필수적입니다.

팁: 앱에 앱 추적 투명성(ATT) 프롬프트가 표시되는 경우, 시간 제한을 300초로 설정하는 것이 좋습니다. ATT가 표시되지 않는 경우 이 옵션의 기본값은 0(대기 없음)을 유지해야 합니다.

대기 시간 제한 간격을 구성하려면 SingularSDKObject 검사 창에서 구성 옵션을 조정합니다. 이 옵션은 이벤트를 Singular 서버에 로깅하기 전에 사용자가 앱 추적 투명성 동의를 승인/거부할 때까지 기다리는 최대 시간(초)을 설정합니다.

2.4. 딥링크 처리

딥링크는 사용자를 앱 내의 특정 콘텐츠로 안내하는 URL입니다. 사용자가 앱이 이미 설치된 기기에서 딥링크를 클릭하면 앱이 열리고 특정 제품이나 경험을 표시합니다.

Singular 추적 링크에는 딥링킹과 디퍼드 딥링킹이 모두 포함될 수 있습니다. 자세한 내용은 딥링킹 FAQSingular 링크 FAQ를 참조하세요.

참고:

플랫폼 지원 및 핸들러 코드에 대한 자세한 내용은 아래 섹션을 확장하세요:

안드로이드에서 딥링킹 지원

안드로이드에서 딥링킹 지원

  1. 에디터에서 프로젝트 > 에셋 > 플러그인 > 안드로이드 > 안드로이드 매니페스트.xml 파일을 엽니다.
  2. 활동 이름 속성을 기본값에서 업데이트합니다:
    <activity android:name="com.unity3d.player.UnityPlayerActivity"

    로 업데이트합니다:

    <activity android:name="com.singular.unitybridge.SingularUnityActivity"

    또는

    중요: 사용자 지정 활동을 구현한 경우:
    1. onNewIntent를 구현하는 SingularUnityBridge에 대한 import 문을 추가합니다.

      import com.singular.unitybridge.SingularUnityBridge;
    2. 활동의 onNewIntent 메서드에서 SingularUnityBridge.onNewIntent(intent); 를 호출합니다:

      예시:
      @Override
      protected void onNewIntent(Intent intent) {
          setIntent(intent);
      
          // Call this method from your custom activity in onNewIntent
      
      
          SingularUnityBridge.onNewIntent(intent);
      }

    경고: 앱용 커스텀 액티비티를 생성했는데 Unity 플레이어 액티비티를 확장(상속)하지 않는 경우, 현재 액티비티 오브젝트가 null일 수 있는 경우를 처리하기 위해 onNewIntent 메서드에 가드를 추가하는 것을 고려할 수 있습니다.

  3. 선택한 호스트 이름으로 Android 앱 링크를 지원하려면 해당 액티비티에 인텐트 필터를 추가합니다. 호스트 android:host 값은 추적 링크에 대해 구성된 Singular 링크 도메인과 일치해야 합니다.
    <!-- Added Intent Filter for Singular Android Links Deeplinking -->
    <!-- Replace example with your value -->
    <intent-filter android:autoVerify="true">
      <action android:name="android.intent.action.VIEW" />
      <category android:name="android.intent.category.DEFAULT" />
      <category android:name="android.intent.category.BROWSABLE" />
      <data android:scheme="http" />
      <data android:scheme="https" />
      <data android:host="example.sng.link" />
      <data android:pathPrefix="/A"/>
      <data android:pathPrefix="/B"/>
      <data android:pathPrefix="/E"/>
      <data android:pathPrefix="/F"/>
    </intent-filter>
iOS에서 딥링킹 지원

iOS에서 딥링킹 지원

Singular는 iOS 유니버설 링크와 앱 스키마를 사용하여 iOS에서 딥링크를 지원합니다. 앱에서 iOS 유니버설 링크 및 앱 스키마 딥링킹을 Singular 링크와 함께 사용하도록 설정하려면 다음 단계를 따르세요.

  1. Singular의 어트리뷰션 > 링크 관리 페이지에서 링크에 대한 하위 도메인을 하나 이상 구성합니다. 자세한 내용은 Singular 링크 FAQ를 참조하세요.
  2. 유니버설 링크 (iOS의 딥링킹)를 설정하려면 다음과 같이 하세요:
    • Apple 개발자 포털에 로그인합니다.
    • 식별자로 이동하여 유니버설 링크 지원을 추가할 앱을 선택합니다.

      identifiers.png

    • 기능 메뉴에서 연결된 도메인 확인란을 선택하고 저장을 클릭합니다.

      associateddomains.png

  3. 앱에 '연결된 도메인' 권한을 추가하려면 다음과 같이 하세요:
    • XCode에서 프로젝트 설정 > 기능 > 연결된 도메인으로 이동합니다.

    • Singular 링크 도메인을 추가합니다.

      associateddomains2.png

  4. Apple 개발자 포털에서"앱 접두사"(일명 "팀 ID")를 복사합니다.
  5. Singular에서 앱 구성으로 이동하여 앱을 찾은 다음 iOS 앱 고급 설정을 확장하고 팀 ID 필드에 값을 붙여넣습니다. 이렇게 하면 Singular가 유니버설 링크에 대해 Singular 도메인에서 apple-app-site-association 파일을 호스팅할 수 있습니다.

    mceclip3.png

  6. 참고: 이 단계는 유니버설 링크가 딥링킹할 수 없는 경우에 필요합니다.
    "팀 ID" 아래에 iOS"앱 스키마"를 입력하여 유니버설 링크 딥링킹에 대한 대체 수단으로 기존 앱 스키마 딥링크를 사용한 딥링킹을 활성화합니다.
    mceclip4.png

    앱이 딥링크를 위해 iOS 앱 스킴을 처음 지원하는 경우, 앱 스킴이 Xcode 프로젝트에서 "URL 유형"으로 등록되어 있는지 확인하세요:
    Screenshot of Xcode showing the URL Types section with a URL that reads "com.example.myphotoapp."

    iOS 앱의 앱 스키마 지원에 대한 자세한 내용은 해당 주제에 대한 Apple의 개발자 도움말 문서를 참조하세요.

2.5. SDK 초기화하기

참고: Singular SDK를 구현할 때는 비즈니스를 운영하는 지역에서 제정된 다양한 개인정보 보호법(GDPR, CCPA, COPPA 등)을 준수해야 합니다. 자세한 내용은 SDK 옵트인 및 옵트아웃 사례를 참조하세요.

앱을 열 때마다 SDK 초기화 코드를 호출해야 합니다. 이는 모든 Singular 어트리뷰션 기능의 전제 조건이며, 사용자 리텐션을 계산하는 데 사용되는 새 세션을 Singular로 전송합니다.

기본적으로, 장면이 Awake 메서드를 통해 생성될 때 SingularSDK.cs는 SDK를 자동으로 초기화합니다.

수동 초기화

앱 실행 후 나중에 SDK를 수동으로 초기화하려면 다음을 수행합니다:

  1. SingularSDK 개체의 검사 창에서 깨어날 때 초기화 옵션을 비활성화합니다.
  2. SingularSDK.InitializeSingularSDK 정적 메서드를 사용하여 SDK를 초기화합니다:
SingularSDK.InitializeSingularSDK 메서드
설명 Awake에서 초기화되지 않은 경우 Singular SDK를 초기화합니다.
Signature
public void InitializeSingularSDK()
사용 예시
// SDK Key and SDK Secret are set on the 


// game object associated with SingularSDK 


SingularSDK.InitializeSingularSDK();

스레드 안전에 대한 참고 사항: 다른 Unity 메서드를 호출할 때와 마찬가지로 Singular Unity SDK는 항상 동일한 스레드에서 호출해야 합니다.

2.6. 세션 타임아웃 구성(선택 사항)

기본적으로 앱이 백그라운드에서 60초 이상 실행된 후 포그라운드로 돌아가는 경우 Singular SDK는 새 세션을 등록합니다. SingularSDKObject의 세션 타임아웃 초 속성을 수정하여 기본 타임아웃 값을 변경할 수 있습니다.

2.7. Singular에 사용자 ID 보내기(선택 사항)

Singular SDK 메소드를 사용하여 내부 사용자 ID를 Singular로 보낼 수 있습니다.

참고: Singular의 크로스 디바이스 솔루션을 사용하는 경우, 모든 플랫폼에서 사용자 ID를 수집해야 합니다.

  • 사용자 ID는 모든 식별자가 될 수 있으며 PII(개인 식별 정보)를 노출해서는 안 됩니다. 예를 들어, 사용자의 이메일 주소, 사용자 이름 또는 전화번호를 사용해서는 안 됩니다. Singular는 퍼스트 파티 데이터에만 고유한 해시값을 사용할 것을 권장합니다.
  • 또한 Singular에 전달되는 사용자 ID 값은 모든 플랫폼(웹/모바일/PC/콘솔/오프라인)에서 캡처한 내부 사용자 ID와 동일해야 합니다.
  • Singular는 사용자 수준 내보내기, ETL 및 내부 BI 포스트백(구성된 경우)에 사용자 ID를 포함합니다. 사용자 ID는 퍼스트 파티 데이터이며, Singular는 이를 다른 당사자와 공유하지 않습니다.
  • Singular SDK 메서드로 설정한 경우, 사용자 ID 값은 UnsetCustomUserId 메서드를 사용하여 설정 해제하거나 앱이 제거될 때까지 유지됩니다. 앱을 닫거나 다시 시작해도 사용자 ID는 설정이 해제되지 않습니다.

사용자 ID를 설정하려면 SetCustomUserId 메서드를 사용합니다. 설정을 해제하려면(예: 사용자가 계정에서 '로그아웃'하는 경우) UnsetCustomUserId 으로 전화하세요.

참고: 여러 사용자가 하나의 디바이스를 사용하는 경우에는 로그인 및 로그아웃할 때마다 사용자 ID를 설정하고 설정 해제하는 로그아웃 플로우를 구현하는 것이 좋습니다.

앱이 열릴 때 사용자 ID를 이미 알고 있는 경우 Singular SDK를 초기화하기 전에 SetCustomUserId 으로 전화하세요. 이렇게 하면 Singular가 첫 번째 세션에서 사용자 ID를 가져올 수 있습니다. 그러나 일반적으로 사용자가 등록하거나 로그인을 수행할 때까지 사용자 ID를 사용할 수 없습니다. 이 경우 등록 흐름이 완료된 후 SetCustomUserId 을 호출하세요.

SingularSDK.SetCustomUserId 메서드
설명 사용자 ID를 Singular로 전송합니다.
서명 public void SetCustomUserId(문자열 customUserId)
사용 예제
SingularSDK.SetCustomUserId("custom_user_id");
SingularSDK.UnsetCustomUserId 메서드
설명 Singular로 전송된 사용자 ID를 설정 해제합니다.
서명 public void UnsetCustomUserId()
사용 예제
SingularSDK.UnsetCustomUserId();

선택 사항입니다: 사용자 정의 사용자 ID 장치 매핑

중요: 이 고급 엔터프라이즈 기능은 예외적인 경우에만 사용할 수 있습니다. 구현하기 전에 Singular의 솔루션 엔지니어와 상담하시기 바랍니다.

Singular는 서버 간 연동을 통해 추가 모바일 이벤트 추적 데이터를 수신할 수 있습니다. 이 기능을 활용하려면 사용자 ID를 Singular의 모바일 디바이스 추적 식별자에 매핑해야 합니다.

참고: 이 메서드는 Singular SDK를 초기화한 후 또는 사용자 ID를 확보한 후 가능한 한 빨리 호출하세요.

SingularSDK.SetDeviceCustomUserId 메서드
설명 사용자 지정 사용자 아이디를 로그인과 동일하게 설정하고 이를 Singular의 추적 식별자에 매핑합니다.
서명 public void SetDeviceCustomUserId(string customUserId)
사용 예시
SingularSDK.SetDeviceCustomUserId('CustomUserId');

3. 이벤트 및 구매 추적

3.1. 이벤트 추적 (비구매)

Singular는 인앱 이벤트에 대한 데이터를 수집하여 캠페인의 성과를 분석하고 KPI를 측정할 수 있습니다. 예를 들어, 게임 앱에서 사용자 로그인, 등록, 튜토리얼 완료 또는 레벨 업에 대한 데이터를 수집하고자 할 수 있습니다.

Singular는 다양한 표준 이벤트를 지원합니다. 광고 네트워크는 보고 및 최적화를 위해 일반적으로 사용되는 이러한 이벤트를 지원하는 경우가 많습니다. 또 다른 장점은 표준 이벤트 이름을 사용하면 수동으로 정의할 필요 없이 Singular가 자동으로 인식하여 이벤트 목록에 추가한다는 것입니다. 가능하면 표준 이벤트를 사용하는 것이 좋습니다.

Singular로 전송되는 이벤트 목록(첨부된 속성 포함)은 UA/마케팅/비즈니스 팀에서 조직의 마케팅 KPI에 따라 작성해야 합니다. 비즈니스 팀은 인앱 이벤트 추적 방법을 따를 수 있습니다: Singular 어트리뷰션 고객을 위한 가이드.

추적하는 각 이벤트마다 다양한 어트리뷰트를 전달할 수 있습니다. 이벤트별 권장 표준 어트리뷰트를 참조하세요.

코드의 event 또는 eventWithArgs 메서드를 사용하여 표준 이벤트를 Singular로 전송합니다.

참고: 표준 이벤트의 경우 Unity SDK 표준 이벤트 및 속성 목록에 표시된 대로 이벤트의 Unity 이름을 사용합니다(예: sngLogin).

SingularSDK.Event(Events.sngLogin);

커스텀 이벤트의 경우, 조직에서 측정하고자 하는 이벤트가 Singular의 표준 이벤트와 일치하지 않는 경우 커스텀 이름 (최대 32자)을 사용합니다. 최적화를 위해 Singular로부터 이벤트를 수신할 수 있는 애드 네트워크 파트너와의 호환성을 위해 영어로 된 이름을 사용하는 것이 좋습니다.

SingularSDK.Event 메서드
설명 트래킹을 위해 사용자 이벤트를 Singular로 전송합니다.
서명
public static void Event(string name)
public static void Event(string name, params object[] args)
public static void Event(Dictionary<string, object> args, string name)

참고: 사전을 전달할 때, 사전 값은 문자열, int, long, float, double, null, ArrayList, Dictionary<string, object> 중 한 가지 유형이어야 합니다.

사용 예제

// 1) Send the standard event Login


SingularSDK.Event(Events.sngLogin);
// 2) An example custom event passing two key value pairs


SingularSDK.Event("myEventName", "Key1", "Value1", "Key2", 1234);
// 3) An example JSON Event passing a dictionary


// Create a dictionary for attributes


Dictionary<string, object> attributes = new Dictionary<string, object>();

// Add attributes


attributes["key1"] = "value1";
attributes["key2"] = "value2";
attributes["key3"] = "value3";
// Add more attributes as needed



SingularSDK.Event(attributes, "myEventName");

3.2. 구매 추적

Singular는 앱을 통해 얻은 구매에 대한 데이터를 수집하여 캠페인의 성과와 ROI를 분석하는 데 도움을 줄 수 있습니다. Singular는 보고서, 로그 내보내기 및 포스트백에서 데이터를 사용할 수 있도록 합니다.

참고: 다른 통화로 보고된 구매은 Singular 계정에 설정된 조직의 기본 통화로 자동 변환됩니다.

유니티의 기본 제공 IAP(인앱 구매) 오브젝트를 사용하여 구매 이벤트를 추적할 수 있습니다. 이렇게 하면 Singular가 구매에 대한 모든 가용 정보를 가져와 더욱 풍부한 리포팅을 제공합니다. 또한, Singular는 구매 영수증을 받아 백엔드에서 구매를 검증하고 어트리뷰션 부정을 배제하는 데 사용합니다.

SingularSDK.인앱 구매 메서드
설명 구매 이벤트를 추적하기 위해 Singular에 IAP 제품을 전송합니다.
서명
public static void InAppPurchase(Product product, Dictionary<string, object> attributes, bool isRestored = false)
public static void InAppPurchase(string eventName, Product product, Dictionary<string, object> attributes, bool isRestored = false)
public static void InAppPurchase(IEnumerable<Product> products,
Dictionary<string, object> attributes, bool isRestored = false)
public static void InAppPurchase(string eventName,IEnumerable<Product> products, Dictionary<string, object> attributes, bool isRestored = false)

참고

  • product는 IAP에서 받은 제품 오브젝트입니다: UnityEngine.Purchasing.Product
  • 속성을 가집니다: 이 파라미터를 사용하여 Singular에 추가 정보를 전달합니다. 전달할 속성이 없는 경우 null을 전달하면 됩니다.
  • isRestored: 트랜잭션이 복원되었는지 여부를 나타냅니다. 기본값: false입니다.
사용 예시
// IAP with a single product and no extra attributes


SingularSDK.InAppPurchase(myProduct, null);
// IAP with a single product and attributes


var attr = new Dictionary<string, object>() {
["my_first_attribute"] = "value1",
["my_second_attribute"] = "value2"};
 
SingularSDK.InAppPurchase(myProduct, attr);
// IAP with with a single product, 


// no extra attributes and a custom event name



SingularSDK.InAppPurchase("MyCustomProduct",
myProduct, null);
// IAP with list of products, no extra attributes


SingularSDK.InAppPurchase(myProductList, null);
// IAP with with list of products, no extra attributes


// and a custom event name



SingularSDK.InAppPurchase("MyCustomProducts",
myProductList, null);
구매을 추적하는 다른 방법: 구매 및 사용자 정의 구매 메서드

Unity IAP를 사용할 수 없는 경우, Singular SDK는 구매에 대한 정보를 "수동으로" Singular에 전달하는 두 가지 방법을 제공합니다:

  • Revenue를 사용하여 거래 통화, 금액 및 기타 선택적 세부 정보를 상세하게 입력하여 구매에 대한 정보를 Singular에 전달합니다.
  • CustomRevenue도 비슷하지만 이벤트에 사용자 지정 이름을 지정할 수 있습니다.

참고: InAppPurchase 대신 Revenue/CustomRevenue를 사용하는 경우, Singular는 구매 영수증을 확인할 수 없습니다.

SingularSDK.Revenue 메서드
설명 Singular에 구매 이벤트를 전송합니다.
서명
public static void Revenue(string currency, double amount)
public static void Revenue(string currency, double amount, string productSKU, string productName, string productCategory, int productQuantity, double productPrice)
public static void Revenue(string currency, double amount, Dictionary<string, object> attributes)
참고: 통화를 "USD", "EUR", "INR"과 같은 세 글자 ISO 4217 통화 코드로 전달합니다.
사용 예시
// Send a revenue event with no product details


SingularSDK.Revenue("USD", 1.99);
// Send a revenue event with product details


SingularSDK.Revenue("USD", 4.99, "coin_package_abc123", "Coin Pack 5", "Bundles", 1, 4.99);
// Send a revenue event with JSON Dictionary for attributes


Dictionary<string, object> attributes = new Dictionary<string, object>();

// Add attributes


attributes["productSKU"] = "coin_package_abc123";
attributes["productName"] = "Coin Pack 5";
attributes["productCategory"] = "Bundles";
attributes["productQuantity"] = 2;
attributes["productPrice"] = 4.99;

SingularSDK.Revenue("USD", 9.98, attributes);
SingularSDK.CustomRevenue 메서드
설명 사용자 지정 이름으로 구매 이벤트를 Singular로 전송합니다.
서명
public static void CustomRevenue(string eventName, string currency, double amount)
public static void CustomRevenue(string eventName, string currency, double amount, string productSKU, string productName, string productCategory, int productQuantity, double productPrice)
public static void CustomRevenue(string eventName, string currency, double amount, Dictionary<string, object> attributes)
참고: 통화를 세 글자 ISO 4217 통화 코드(예: "USD", "EUR", "INR")로 전달합니다.
사용 예
// Send a revenue event with a custom name


SingularSDK.CustomRevenue("MyCustomRevenue", "USD", 9.99);
// Send a revenue event with a custom name + product details


SingularSDK.CustomRevenue("MyCustomRevenue", "USD", 50.50, "abc123", "myProductName", "myProductCategory", 2, 25.50);
// Send a revenue event with a custom name + JSON Dictionary for attributes


// Create a dictionary for attributes


Dictionary<string, object> attributes = new Dictionary<string, object>();

// Add attributes


attributes["productSKU"] = "coin_package_abc123";
attributes["productName"] = "Coin Pack 5";
attributes["productCategory"] = "Bundles";
attributes["productQuantity"] = 2;
attributes["productPrice"] = 4.99;
// Add more attributes as needed



SingularSDK.CustomRevenue("MyCustomRevenue", "USD", 9.98, attributes);

3.3. 하이브리드 이벤트 추적(고급)

Singular는 앱에 연동된 Singular SDK를 통해 모든 이벤트와 구매을 전송할 것을 권장합니다. 그러나 Singular는 다른 소스에서 이벤트와 구매을 수집할 수 있습니다.

Singular SDK에서 전송되지 않은 모든 이벤트는 Singular의 서버 간 이벤트 문서 요구사항을 준수해야 하며, 이벤트의 정확한 어트리뷰션을 위해 일치하는 기기 식별자를 제공해야 합니다.

중요:

서버 간 이벤트 요청에 사용된 디바이스 식별자가 Singular에 일치하는 디바이스 식별자가 없는 경우 불일치가 발생할 수 있습니다. 다음과 같은 가능성에 유의하세요:

  • 이벤트 요청이 Singular SDK가 앱 세션에서 디바이스 식별자를 기록하기 '전에' 수신된 경우, 이벤트 요청은 알 수 없는 디바이스에 대한 '첫 번째 세션'으로 간주되며 Singular는 해당 디바이스를 오가닉 어트리뷰션으로 어트리뷰션할 것입니다.
  • Singular SDK가 디바이스 식별자를 기록했지만 Singular SDK 식별자가 서버 간 이벤트 요청에 지정된 디바이스 식별자와 다른 경우, 이벤트는 잘못 어트리뷰션됩니다.

하이브리드 이벤트 추적 가이드

내부 서버에서 이벤트 보내기

Singular는 서버에서 구매에 대한 데이터를 수집하여 캠페인의 성과와 ROI를 분석하는 데 도움을 줄 수 있습니다.

요구 사항:

  • 인앱 등록 또는 로그인 이벤트에서 디바이스 식별자를 캡처하여 전달하고 이 데이터를 서버에 사용자 ID와 함께 저장하세요. 디바이스 식별자는 사용자에 따라 변경될 수 있으므로 사용자가 앱 세션을 생성할 때 반드시 식별자를 업데이트해야 합니다. 이렇게 하면 서버 측 이벤트가 올바른 디바이스에 어트리뷰션되도록 보장할 수 있습니다.
  • 서버 측 이벤트는 플랫폼별로 다르므로 디바이스 플랫폼과 일치하는 디바이스 식별자(예: iOS 디바이스의 경우 IDFA 또는 IDFV)로만 전송해야 합니다.
  • Singular 내부 BI 포스트백 메커니즘을 사용하여 이벤트를 내부 엔드포인트에 실시간으로 푸시하여 서버 측의 데이터 집합을 업데이트할 수 있습니다. 내부 BI 포스트백 FAQ를 참조하세요.
  • 자세한 내용은 서버 간 연동 가이드의 "구매 추적" 섹션을 참조하세요.
구매 제공업체에서 이벤트 보내기
리베이트캣 또는 어댑터와 같은 타사 제공업체는 구매 및 구독 구매을 Singular에 제공할 수 있습니다.

이러한 파트너를 활성화하는 방법에 대한 자세한 내용은 아래 링크를 참조하세요.

세그먼트에서 이벤트 보내기

세그먼트에서 이벤트를 Singular SDK와 병행하여 Singular로 전송하려면 세그먼트에 "클라우드 모드" 대상을 추가해야 합니다. 여기에서 가이드를 따르세요.

4. 고급 옵션

4.1. 짧은 리퍼러 링크 생성

참고: 이 기능은 SDK 버전 4.0.16 이상에서 사용할 수 있습니다.

짧은 링크를 사용하면 매개변수로 채워진 긴 Singular 링크를 공유에 편리한 더 짧고 안전한 링크로 변환할 수 있습니다.

일반적으로 앱 사용자가 친구와 공유하여 앱을 사용하도록 초대할 수 있도록 짧은 링크를 동적으로 생성하고 싶을 것입니다.

짧은 링크를 만들려면 다음이 필요합니다:

  • 앱 다운로드로 연결되는 Singular 링크 ( Singular 링크 FAQ 참조).
  • 링크에 원하는 매개변수를 동적으로 추가할 수 있습니다(옵션 목록은 링크 매개변수 추적 참조).
  • 링크를 공유한 사용자의 새 앱 설치를 추적하려면 추천 사용자의 리퍼러 이름과 리퍼러 ID를 제공해야 합니다.

아래 예시와 같이 createReferrerShortLink 메서드를 사용하여 짧은 링크를 생성합니다.

void callback(string shortLinkURL, string error){
    // Add your share logic here if shortLinkURL is not null


    // If there was an error, add logic to retry/abort/modify the params


    // passed to the function, based on the cause of the error


}

SingularSDK.createReferrerShortLink(
    "https://sample.sng.link/B4tbm/v8fp?_dl=https%3A%2F%2Fabc.com",
    "John Doe", // Referrer Name


    "342", // Referrer ID


    new Dictionary<string, string>() { 
        // a Dictionary object containing any parameters you want to add


        {"channel", "sms"}
    },
    callback 
);

4.2. 광고 구매 어트리뷰션 지원 추가하기

Singular는 광고 구매 어트리뷰션을 위해 구글 애드몹, 앱러빈, 유니티 레벨플레이(아이언소스), 트레이드플러스와 같은 미디에이션 플랫폼과 연동되어 있습니다. Singular는 일반 광고 구매 SDK 연동을 통해 다른 미디에이션 플랫폼도 지원합니다.

미디에이션 플랫폼에서 광고 구매 어트리뷰션 데이터를 가져오는 코드 스니펫을 Singular SDK 연동에 추가하면 됩니다. 이를 통해 SKAdNetwork 캠페인에 대한 광고 구매 데이터도 가져올 수 있습니다.

미디에이션 플랫폼에서 사용자 레벨 광고 구매을 가져오면, Singular는 이 데이터를 수락할 수 있는 미디어 소스에 어트리뷰션 광고 구매을 다시 전송하여 AdROAS 캠페인을 실행할 수 있습니다.

SDK 구현에 대한 지침 및 코드 스니펫은[여기]를 참조하세요.

4.3. 제거 추적

참고: 제거 추적은 엔터프라이즈 고객만 사용할 수 있습니다.

Android 제거 추적

Android 앱에 대해 제거 추적을 사용 설정하려면 먼저 제거 추적 설정에 설명된 대로 Singular 플랫폼에서 앱을 구성합니다. 그런 다음 아래 지침을 따릅니다.

참고: Google은 2018년 4월에 GCM API를 더 이상 사용하지 않습니다. 제거 추적에는 FCM을 사용합니다.

FCM(Firebase 클라우드 메시징)을 사용하여 제거 추적 활성화하기:

1. FCM과 연동합니다:

제거를 추적하려면 FCM(Firebase Cloud Messaging) 플랫폼의 서비스를 사용할 수 있습니다. 아직 FCM을 사용하고 있지 않다면 Google의 Android에서 Firebase 클라우드 메시징 클라이언트 앱을 설정하는 방법에 대한 지침을 따르세요.

FCM 요구 사항(출처)

FCM 클라이언트를 사용하려면 Google Play 스토어 앱이 설치된 Android 4.1 이상의 기기 또는 Google API가 포함된 Android 4.1을 실행하는 에뮬레이터가 필요합니다. Google Play 스토어를 통해서만 Android 앱을 배포할 수 있는 것은 아닙니다.

지원되는 Android 버전에서 실행되지 않는 사용자/기기는 Singular 제거 추적에 사용할 수 없습니다.

2. AndroidManifest.xml 파일을 업데이트합니다:

AndroidManifest.xml 파일을 업데이트하여 앱에 필요한 인텐트 필터를 추가합니다(MyFirebaseMessagingService를 Firebase 서비스를 구현하는 클래스로 대체):

<service android:name=".java.MyFirebaseMessagingService" android:exported="false">
  <intent-filter>
    <action android:name="com.google.firebase.MESSAGING_EVENT" />
  </intent-filter> 
</service>

3. FCM 장치 토큰을 등록하고 전송합니다:

FCM 토큰을 검색한 후 'RegisterTokenForUninstall' 메서드에 파라미터로 전달합니다:

SingularSDK.RegisterTokenForUninstall(String fcmDeviceToken);

'RegisterTokenForUninstall' 메서드는 'SingularSDK.InitializeSingularSDK()' 메서드 전에 호출해야 합니다.

iOS 제거 추적

iOS의 앱 제거 추적은 Apple 푸시 알림 기술을 기반으로 합니다. 앱이 푸시 알림을 지원하지 않는 경우 Apple 가이드를 참조하세요. 앱이 이미 푸시 알림을 지원하는 경우 SDK가 초기화된 후 RegisterTokenForUninstall 메서드를 사용하여 APNS에서 반환된 디바이스 토큰을 전달해야 합니다.

SingularSDK.RegisterTokenForUninstall 메서드
설명 APNS에서 반환된 장치 토큰을 전달합니다. APNS 토큰은 일반적으로 네이티브 형식의 바이너리 데이터이지만 문자열로 전달해야 합니다.
서명
public static void RegisterTokenForUninstall
(string APNSToken)
사용 예
// pass the APNS token as a hex-string 


  SingularSDK.RegisterTokenForUninstall("ba85ab31a7c7
f5c2f012587f29fb0e596d4b67e7b7b2838fa1a8582c1f7dbdee");

4.4. 글로벌 속성 추가하기

앱에서 전송되는 모든 세션과 이벤트에 대해 Singular SDK를 사용하면 사용자 지정 추가 속성을 정의하여 Singular 서버로 전송할 수 있습니다. 이러한 속성은 사용자, 앱 모드, 상태 등 원하는 모든 정보를 나타낼 수 있습니다. 이러한 속성을 설정하면 보고서에서 기준으로 사용할 수 있으며, 이를 사용하여 데이터를 세분화할 수 있습니다.

예를 들어 게임 앱이 있는 경우 '레벨'이라는 속성을 정의하고 처음에는 '0'으로 설정할 수 있습니다. 앱에서 전송되는 모든 세션과 이벤트는 "Level": "0". 사용자가 레벨을 올리면 해당 속성을 "1"로 재설정하는 등의 방식으로 재설정합니다. 그러면 세션, 이벤트 수, 구매 데이터를 포함한 보고서를 사용자 레벨별로 세분화하여 얻을 수 있습니다.

  • 글로벌 속성은 최대 5개까지 정의할 수 있습니다.
  • 이러한 속성은 사용자가 설정을 해제하거나 앱을 제거할 때까지 앱 실행 사이에 (사용자가 지정한 최신 값으로) 유지됩니다.
  • 각 속성 이름과 값은 최대 200자까지 입력할 수 있습니다. 더 긴 속성 이름이나 값을 전달하면 200자로 잘립니다.
  • 글로벌 속성은 사용자 수준 내보내기포스트백에서 액세스하고 사용할 수 있습니다. 향후에는 집계 리포팅 지원도 추가될 예정입니다. 궁금한 점이 있거나 글로벌 속성 지원 업데이트에 관심이 있는 경우 Singular 고객 성공 매니저에게 알려주세요!

초기화 전에 글로벌 속성 설정하기

SDK를 초기화하기 전에 SetGlobalProperty 메서드를 사용하여 SingularSDK를 통해 글로벌 프로퍼티를 설정할 수 있습니다. 글로벌 프로퍼티를 세션에 포함하려면 '깨어 있을 때 초기화' 플래그를 끄세요.

글로벌 프로퍼티와 해당 값은 앱 실행 간에 유지되므로 설정하려는 프로퍼티가 이미 다른 값으로 설정되어 있을 수 있습니다. 기존 프로퍼티를 새 값으로 재정의할지 여부를 SDK에 알려주려면 overrideExisting 파라미터를 사용하세요.

초기화 후 전역 프로퍼티 설정

다음 메서드를 사용하여 앱 실행 중 언제든지 글로벌 프로퍼티를 설정, 설정 해제 및 검색할 수 있습니다.

SingularSDK.SetGlobalProperty 메서드
설명

글로벌 프로퍼티를 지정된 값으로 설정합니다.

참고:

  • 프로퍼티가 아직 존재하지 않고 이미 5개의 다른 글로벌 프로퍼티가 있는 경우 프로퍼티가 추가되지 않습니다.
  • 프로퍼티가 이미 설정되어 있는 경우 overrideExisting 매개변수에 따라 기존 값을 재정의할지 여부가 결정됩니다.
  • 프로퍼티가 성공적으로 설정되면 참을 반환하고, 그렇지 않으면 거짓을 반환합니다.
서명 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용
사용 예제
bool result = SingularSDK.SetGlobalProperty("key", "value", false);
SingularSDK.GetGlobalProperties 메서드
Description 모든 글로벌 프로퍼티와 그 현재 값을 맵으로 가져옵니다.
서명 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용
사용 예제
Dictionary<string, string> props = SingularSDK.GetGlobalProperties();
SingularSDK.UnsetGlobalProperty 메서드
설명 글로벌 프로퍼티를 제거합니다.
시그니처 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용
사용 예제
SingularSDK.UnsetGlobalProperty(“test_key”);
SingularSDK.ClearGlobalProperties 메서드
설명 모든 글로벌 프로퍼티를 제거합니다.
시그니처 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용 공용
사용 예제
SingularSDK.clearGlobalProperties();

4.5. 구형 안드로이드 기기에서 인스톨 리퍼러 수집하기

안드로이드에서 인스톨 리퍼러는 어트리뷰션을 결정하고 사기 시도를 감지 및 분석하는 데 도움을 주는 가장 정확한 Singular의 툴입니다. 이는 사용자가 앱을 설치하기 전에 클릭한 광고를 가리키는 구글 플레이 스토어에서 제공하는 식별자입니다.

최신 버전의 구글 플레이 스토어가 설치된 기기에서, Singular SDK는 자동으로 인스톨 리퍼러 값을 수집합니다(Singular는 최신 구글 플레이 리퍼러 API와 연동되어 있기 때문에).

구형 기기에서 인스톨 리퍼러를 수집하려면 Android SDK 가이드의 지침을 따르세요.

5. 데이터 개인정보 보호법 준수

5.1. 데이터 공유 제한

Singular는 GDPR 및 CCPA(캘리포니아 소비자 개인정보 보호법)와 같은 소비자 개인정보 보호법을 준수하는 모든 파트너와 협력할 수 있도록 개인정보 보호 기능을 제공합니다. 이러한 파트너는 최종 사용자가 개인 정보 공유에 동의한 경우 알림을 받기를 원합니다.

데이터 공유 제한

사용자에게 정보 공유에 대한 동의를 요청하는 방법을 구현한 경우 limitDataSharing 메서드를 사용하여 사용자의 선택 사항을 Singular에 알립니다:

  • 사용자가 정보 공유에 동의(옵트인)했음을 표시하려면 limitDataSharing:NO를 사용합니다.
  • 사용자가 동의하지 않은 경우 limitDataSharing:YES를 사용합니다.

Singular는'사용자 개인정보 포스트백'에서 제한데이터공유를 사용하고 관련 규정을 준수하기 위해 이 정보를 필요로 하는 파트너에게 이 정보를 전달합니다. 자세한 내용은"사용자 개인정보 및 데이터 공유 제한"을 참조하세요.

참고: 이 방법의 사용은 선택 사항이지만, 파트너는 사용자가 동의했음을 구체적으로 고지한 경우에만 어트리뷰션 정보를 Singular와 공유할 수 있습니다.

SingularSDK.LimitDataSharing 메서드
서명 SingularSDK.LimitDataSharing(boolshouldLimitDataSharing)
설명 Singular에 개인 데이터 공유에 대한 사용자 동의(옵트인)를 알립니다. 데이터 공유 제한 메서드는 앱이 사용자 데이터를 제3자에게 전송할지 여부를 제어할 수 있는 옵션을 제공합니다. 사용자 기본 설정 또는 개인정보 보호 요구 사항에 따라 데이터 공유를 제한하려는 경우에 유용합니다.
사용 예
// User has opted in to sharing data


SingularSDK.LimitDataSharing(false);

5.2. GDPR 준수를 위한 추가 방법

Singular SDK는 GDPR 정책을 준수하고 추적에 대한 사용자 동의 또는 비동의를 Singular에 알리는 데 도움이 되는 몇 가지 방법을 제공합니다.

SingularSDK.TrackingOptIn 메서드
설명 추적에 대한 사용자 동의(옵트인)를 Singular에 알립니다. TrackingOptIn() 메서드는 Singular의 서버에 "gdpr" 이벤트를 전송하는 데 사용됩니다. 이 메서드를 호출하지 않으면 앱은 사용자가 동의한 것처럼 계속 사용자를 추적하지만 특별히 GDPR 옵트인으로 표시하지는 않습니다. 앱이 GDPR(일반 데이터 보호 규정)을 준수해야 하는 경우, 이 함수를 호출하여 사용자 동의가 제대로 기록되도록 해야 합니다.
사용 예시
SingularSDK.TrackingOptIn();
SingularSDK.StopAllTracking 메서드
설명 이 앱에서 이 사용자에 대한 모든 추적 활동을 중지합니다.
참고: 이 메서드는 앱이 재시작된 후에도 SDK를 효과적으로 비활성화합니다(상태는 지속됨)! 추적을 다시 활성화하는 유일한 방법은 resumeAllTracking()을 호출하는 것입니다.
사용 예시
SingularSDK.StopAllTracking();
SingularSDK.ResumeAllTracking 메서드
설명 이 앱에서 이 사용자에 대한 추적을 재개합니다.
사용 예시
SingularSDK.ResumeAllTracking();
SingularSDK.IsAllTrackingStopped 메서드
설명 이 앱에서 이 사용자의 추적 상태를 확인합니다. StopAllTracking()을 사용하여 추적을 중지하고 다시 시작하지 않은 경우 true를 반환합니다.
사용 예시
SingularSDK.IsAllTrackingStopped();