Unity SDK 통합 안내서

 

New: 동영상 가이드

이 동영상을 통해 연동 및 테스트 프로세스에 대해 자세히 알아보세요. 동영상과 아래의 서면 가이드를 모두 사용하는 것을 권장합니다.

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

싱귤러 SDK 통합하기의 단계를 따르세요: 계획 및 사전 요구 사항의 단계를 따르세요.

이 단계는 모든 단일 SDK 통합을 위한 전제 조건입니다.

1. SDK 설치하기

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

Unity 커스텀 패키지 임포트

버전 4.3.2 이하에서 업그레이드하는 경우?

Assets > Plugins > iOS 로 이동하여 다음 파일을 제거한 후 새 유니티 패키지를 임포트하세요!

  • Attributes.h
  • Events.h
  • libSingular.a
  • Singular.h
  • SingularAdData.h
  • SingularConfig.h
  • SingularLinkParams.h
  1. 새 싱글 SDK 다운로드 unitypackage v4.4.1 파일을 다운로드합니다.
  2. Unity 메뉴에서 다음으로 이동합니다:

    • Assets > Import Package > Custom package
    • 다운로드한 unitypackage을 선택합니다.
    • 임포트 선택

1.2. Android용 구성

팁: Unity 사용 시 안드로이드 매니페스트 업데이트 방법.
  1. Unity v2018.3 이상부터는 플레이어 창에서 Custom Main Manifest 프로퍼티( File > Build Settings > Player Settings > Publishing settings 에서 액세스 가능)를 활성화하여 자체 AndroidManifest 파일을 추가할 수 있습니다. 그러면 기본 AndroidManifest.xml파일이 생성되며, 이 파일을 편집할 수 있습니다.

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

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

  2. Unity의 커스텀 메인 매니페스트 파일을 사용하는 대신 Unity에서 앱을 익스포트한 후 Android Studio에서 AndroidManifest.xml 에 액세스할 수 있습니다.

팁: Unity를 사용할 때 Gradle 설정을 업데이트하는 방법.
  1. Unity v2018.3 이상부터는 플레이어 창에서 커스텀 그레이들 템플릿 프로퍼티를 직접 활성화할 수 있습니다( custom Gradle build file 에서 File > Build Settings > Player Settings > Publishing settings 으로 액세스 가능). 이렇게 하면 기본 메인 템플릿.gradle파일이 생성되며, 이 파일을 편집할 수 있습니다.

    파일은 다음 위치에 있습니다: Assets/Plugins/Android/mainTemplate.gradle

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

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

팁: Android 12 기기를 지원할 계획인가요?

추가 play-services-ads-identifier-18.0.1.aar 파일을 Assets/Plugins/Android/ 폴더에 추가하여 Unity가 Google 광고 식별자를 캡처하는 데 필요한 종속성을 포함하도록 하세요. 이미 이 종속성이 있는 경우 이 단계를 건너뛸 수 있습니다.

AndroidManifest 권한 업데이트

AndroidManifest.xml 파일에 다음 권한을 추가합니다:


<!--  이 권한은 인터넷 연결을 사용하려면 필요합니다.  -->
<uses-permission android:name="android.permission.INTERNET" />

<!--  이 권한은 인터넷 연결이 활성화되어 있는지 확인하는 데 필요합니다.  -->
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

<!--  이 권한은 Google Play 리퍼러 데이터를 검색하는 데 필요합니다.  -->
<uses-permission android:name="BIND_GET_INSTALL_REFERRER_SERVICE" />

<!--  이 권한은 Google 설치 사기의 유효성을 검사하는 데 필요합니다.  -->
<uses-permission android:name="com.android.vending.CHECK_LICENSE" />
	
싱글 SDK에 대한 전이 종속성을 비활성화했나요?
  1. Singular SDK에 대한 전이 종속성을 비활성화한 경우 앱의 build.gradle에 다음을 추가합니다.

    implementation 'com.android.installreferrer:installreferrer:2.2'
    implementation 'com.google.android.gms:play-services-appset:16.0.0'
  2. 싱귤러 SDK에는 구글 플레이 서비스 API 17.0.0+의 일부인 구글 모바일 광고 API가 필요합니다. 이미 구글 플레이 서비스를 앱에 통합했다면 요구 사항이 충족된 것입니다. 아직 통합하지 않은 경우 앱의 build.gradle 파일에 다음 종속성을 포함하여 Google 모바일 광고를 개별적으로 통합할 수 있습니다:

    implementation 'com.google.android.gms:play-services-ads-identifier:18.0.1+'

    자세한 내용은 Google의 Google Play 서비스 설정 가이드를 참조하세요.

프로가드 또는 이클립스를 사용중인가요?

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

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

Eclipse로 빌드하는 경우 다음 방법 중 하나를 사용하여 AAR을 Eclipse 프로젝트에 통합하세요:

  1. singular_sdk-12.x.x.aar의압축을 풉니다.
  2. classes.jar의 이름을 singular_sdk-12.x.x.jar로 바꿉니다(이것이 기본 SDK jar입니다).
  3. 위의 jar와 libs/installreferrer-release.jar (Google Referrer API 라이브러리)를 원하는 방식으로 Eclipse 프로젝트에 통합합니다.
  4. AAR에 포함된 AndroidManifest.xml의 BIND_GET_INSTALL_REFERRER_SERVICE 권한을 AndroidManifest.xml에 복사합니다.

1.3. iOS용 구성

Unity에서 빌드한 후 다음 라이브러리/프레임워크를 Unity XCode 프로젝트에 링크합니다. Unity프레임워크 타겟으로 이동하여 빌드 단계 > 라이브러리와 바이너리 링크를 선택합니다. 다음을 추가합니다:

  • WebKit.framework
  • libsqlite3.0.tbd
  • libz.tbd
  • AdServices.framework (반드시 추가해야 하지만 iOS 14.3 이상 기기에서만 사용할 수 있으므로 선택 사항으로 표시하세요). 또한 Apple 검색 광고에서 실행하려는 경우 필수입니다!

중요: Apple Search Ad 캠페인을 활용하고 어트리뷰션을 추적하려는 경우 앱 빌드에 AdServices.framework 을 추가해야 합니다.

2. SDK 연동

2.1. SingularSDKObject 구성

Unity 플랫폼 계층 구조 창에서:

  1. 메인씬에"빈 게임 오브젝트"를 추가하고 정확한 이름을 SingularSDKObject 으로 지정합니다.

  2. SingularSDKObject스크립트 컴포넌트를 추가하고 SingularSDK 스크립트를 선택합니다.

  3. SingularSDKObject 대한 검사 창에서 각 필드에 단일 SDK 키와 SDK 시크릿을붙여넣습니다. SDK 키와 비밀번호를 검색하려면 Singular 계정에 로그인하여 "Developer Tools > SDK Integration > SDK Keys")로 이동합니다.

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

참고: SingularSDKObject 에 대한 기본 검사 창 설정:

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

  • Initialize On Awake (체크됨)

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

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

  • SKAN Enabled (체크됨)

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

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

  • Wait For Tracking Authorization 를 0(꺼짐)으로 설정합니다.

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

  • Enable Logging (체크됨)

    싱글 SDK에서 상세 로깅을 활성화합니다. "로그 수준" 옵션과 함께 사용해야 합니다.

  • Log Level 3으로 설정

    Singular SDK가 LogCat 출력에 경고 로그를 표시하도록 허용합니다.

  • Ddl Timeout Sec 0으로 설정

    기본적으로 "0"으로 설정하면 60초의 타임아웃이 사용됩니다. 이는 싱귤러 서버가 마지막 터치 어트리뷰션에 연결된 딥링크 값을 검색할 시간을 알려줍니다. 디퍼드 딥링크가 발견되면 SDK 세슨의 응답으로 앱에 다시 전송되어 처리되며, 60초 이내에 디퍼드 딥링크를 찾지 못하면 서버는 검색을 중지합니다.

  • Session Timeout Sec 0으로 설정

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

  • Shortlink Resolve Timeout 0으로 설정

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

기타 검사 창 옵션:

페이스북 활성화(메타 설치 리퍼러)

META 인스톨 리퍼러 어트리뷰션 방법을 지원하려면 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 로 이동하여 SKANEnabledTrue 로 설정합니다.
  • 앱 코드에서 SingularSDK.SkanRegisterAppForAdNetworkAttribution()을 호출합니다.
수동 모드에서 SKAdNetwork 사용(고급)

자체 로직을 사용하여 SKAN 전환 값을 수동으로 관리하려면 다음을 수행해야 합니다:

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

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

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

서명 public void SkanUpdateConversionValue(int value)
사용 예시
// 가입 이벤트가 발생했습니다.
Singular.Event("SignUp");

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

  void OnConversionValueUpdated(int value) {
    // 전환 값 사용
  }
}

2.3. iOS 앱 추적 투명성(ATT) 동의 처리하기

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

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

싱귤러는 디바이스를 식별하고 인스톨 어트리뷰션을 수행하기 위해 IDFA를 사용하는 것이 매우 유용합니다( IDFA 없이도 어트리뷰션을 수행할 수 있는 방법이 있지만). 사용자의 동의를 요청하여 IDFA를 확보할 것을 강력히 권장합니다.

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

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

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

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

2.4. 딥링크 처리

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

단일 추적 링크에는 딥링킹뿐만 아니라 디퍼드 딥링킹도포함될 수 있습니다(자세한 내용은 딥링킹 FAQ단일 링크 FAQ참조).

아래 지침은 방법을 보여줍니다:

  1. 앱을 열도록 유도한 추적 링크에 액세스합니다,
  2. 딥링크 대상을 읽고
  3. 적절한 콘텐츠를 표시합니다.

참고:

딥링킹 전제 조건 설정하기

  1. iOS 및 Android용 전제 조건: 싱글 링크 사전 요구 사항의 지침을 따르세요.

  2. 유니티에 대한 추가 설정: 앱의 AndroidManifest.xml 파일에서 활동 이름 프로퍼티를 기본 UnityPlayerActivity에서 다음과 같이 변경합니다:

    <activity android:name="com.unity3d.player.UnityPlayerActivity"

    에서

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

    또는:

    참고: 커스텀 액티비티를 구현한 경우 액티비티의 onNewIntent에서 이 메서드를 호출합니다:

    @Override
    protected void onNewIntent(Intent intent) {
        setIntent(intent);
    
        // 사용자 지정 활동의 onNewIntent에서 이 메서드를 호출합니다.
        SingularUnityBridge.onNewIntent(intent);
    }

딥 링크 핸들러 추가

싱귤러 SDK는 앱이 열리게 된 추적 링크의 세부 정보를 읽는 핸들러 메커니즘을 제공합니다.

핸들러를 사용하려면 다음과 같이 하세요:

  1. SingularLinkHandler 인터페이스를 구현합니다.
  2. 클래스의 어느 지점에서나 SetSingularLinkHandler 메서드를 호출하여 클래스를 딥링크용 핸들러로 등록합니다.
  3. SetSingularLinkHandler를 호출하면 Singular SDK가 추적 링크를 가져와 OnSingularLinkResolved 메서드를 호출하여 추적 링크 세부 정보를 전달합니다. 링크 세부 정보를 읽고 처리하려면 이 메서드를 재정의하세요.

다음 샘플 코드는 세 단계를 보여줍니다:

public class Main : SingularLinkHandler {
    // ...
    void Awake () {
      // 클래스를 싱귤러 링크 핸들러로 등록합니다.
      // 앱 실행 중 언제든 이 메서드를 호출할 수 있습니다. 이 메서드는 추적 링크 세부 정보를 가져와 OnSingularLnkResolved를 호출합니다.
      SingularSDK.SetSingularLinkHandler(this);
    }
    
    public void OnSingularLinkResolved(SingularLinkParams linkParams) {
      // 링크 관리 페이지에서 구성한 딥링크 대상입니다.
      string deeplink = linkParams.Deeplink;
      
      // 링크에 추가된 패스스루 매개변수(있는 경우)입니다.
      string passthrough = linkParams.Passthrough;
      
      // 링크가 디퍼드 딥링크로 구성되었는지 여부입니다.
      bool isLinkDeferred = linkParams.IsDeferred;
      
      // 여기에 코드를 추가하여 딥링크를 처리하세요.
    }
    
    // ...

메서드 참조

SetSingularLinkHandler
SetSingularLinkHandler 메서드
설명 앱을 열게 한 추적 링크의 세부 정보를 검색하는 핸들러를 등록합니다.
서명
public void SetSingularLinkHandler(SingularLinkHandler 
handler)
사용 예시
public class Main : MonoBehaviour, SingularLinkHandler {
    void Awake () {
        SingularSDK.SetSingularLinkHandler(this)
    }
}
OnSingularLinkResolved
OnSingularLinkResolved Method
설명 SetSingularLinkHandler. 에 대한 콜백 메서드 추적 링크 세부 정보를 읽고 처리합니다.
서명
public void OnSingularLinkResolved(SingularLinkParams
linkParams)

참고: 싱귤러링크파람 객체에는 다음 값이 포함됩니다:

  • Deeplink - 싱귤러 플랫폼의 링크 관리 페이지에 구성된 딥링크 대상.
  • Passthrough - 링크에 추가된 패스스루 매개변수(있는 경우).
  • IsDeferred - 링크가 디퍼드 딥링크로 구성되어 있는지 여부.
사용 예
public void OnSingularLinkResolved(SingularLinkParams
linkParams){ // 추적 링크 세부 정보를 읽고 기록하세요. Debug.Log("deeplink: " + linkParams.Deeplink); Debug.Log("passthrough: " + linkParams.Passthrough); Debug.Log("is_deferred: " + linkParams.IsDeferred); }

레거시 링크로 딥링크 처리하기

이전 Singular 고객인 경우 최신 Singular 링크 대신 레거시 트래킹 링크(Singular의 이전 트래킹 링크 메커니즘)를 사용하고 있을 수 있습니다. 레거시 링크는 Create LinkView Links 페이지에서 관리되며 딥링킹 및 디퍼드 딥링킹 기능도 제공합니다.

조직에서 레거시 링크를 사용하는 경우 위에서 설명한 SingularLinksHandler 대신 SingularDeferredDeepLinkHandler 이라는 딥링크용 핸들러를 구현해야 합니다. 구현 방식은 매우 유사합니다.

2.5. SDK 초기화하기

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

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

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

수동 초기화

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

  1. SingularSDK 개체의 검사 창에서 Initialize on Awake 옵션을 비활성화합니다.
  2. SingularSDK.InitializeSingularSDK 정적 메서드를 사용하여 SDK를 초기화합니다:
SingularSDK.InitializeSingularSDK 메서드
설명 Awake에서 초기화되지 않은 경우 Singular SDK를 초기화합니다.
Signature
public void InitializeSingularSDK()
사용 예시
// SDK 키와 SDK 비밀 번호는
// SingularSDK와 연결된 게임 개체 SingularSDK.InitializeSingularSDK();

스레드 안전에 대한 참고 사항: Singular Unity SDK는 항상 다른 Unity 메서드를 호출하는 것과 같은 방식으로 동일한 스레드에서 호출해야 합니다.

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

기본적으로 앱이 백그라운드에서 60초 이상 실행된 후 포그라운드로 돌아오면 Singular SDK는 새 세션을 등록합니다. SingularSDKObject의 Session Timeout Sec 속성을 수정하여 기본 시간 제한 값을 변경할 수 있습니다.

2.7. 싱귤러에 사용자 ID 보내기(선택 사항)

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

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

  • 사용자 ID는 모든 식별자가 될 수 있으며 PII(개인 식별 정보)를 노출해서는 안 됩니다. 예를 들어 사용자의 이메일 주소, 사용자 이름 또는 전화번호를 사용해서는 안 됩니다. 싱귤러는 퍼스트 파티 데이터에만 고유한 해시값을 사용할 것을 권장합니다.
  • 또한 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(string customUserId)
사용 예제
SingularSDK.SetCustomUserId("custom_user_id");
SingularSDK.UnsetCustomUserId 메서드
설명 Singular로 전송된 사용자 ID를 설정 해제합니다.
서명 public void UnsetCustomUserId()
사용 예
SingularSDK.UnsetCustomUserId();

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

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

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

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

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

3. 이벤트 및 수익 추적

3.1. 이벤트 추적(비수익)

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

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

싱귤러로 전송되는 이벤트 목록(함께 제공되는 속성 포함)은 UA/마케팅/비즈니스 팀에서 조직의 마케팅 KPI를 기반으로 작성해야 합니다. 비즈니스 팀은 인앱 이벤트 추적 방법 가이드를 따를 수 있습니다.

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

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

참고: 표준 이벤트의 경우, Unity SDK 표준 이벤트 및 어트리뷰트 목록에 표시된 대로 이벤트의 Unity 이름을 사용하십시오(예: sngLogin).

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

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)

메모: When passing dictionaries, dictionary values must have one of these types: string, int, long, float, double, null, ArrayList, Dictionary<String,object>

사용예

// 표준 이벤트 로그인 보내기
SingularSDK.Event(sngLogin);
  
// 두 개의 키 값 쌍을 전달하는 맞춤 이벤트 예시
SingularSDK.Event("Myevent", "Key1", "Value1", "Key2", 1234);
// 사전을 전달하는 JSONEvent의 예 SingularSDK.Event(new Dictionary<string, object>() { {"Key1", "Value1"}, {"Key2", new Dictionary<string, object>() { {"SubKey1", "SubValue1"}, {"SubKey2", "SubValue2"} } }}, "JSONEvent");

3.2. 수익 추적

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

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

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

SingularSDK.InAppPurchase 메서드
설명 구매 이벤트를 추적하려면 IAP 제품을 Singular로 보내세요.
서명
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)

Notes:

  • product IAP에서 받은 제품 객체는 다음과 같습니다. UnityEngine.Purchasing.Product
  • attributes: 이 파라미터를 사용하여 Singular에 추가 정보를 전달하세요. 전달할 속성이 없으면 null을 전달하세요. 
  • isRestored: 트랜잭션이 복원되었는지 여부를 나타냅니다. 기본값은 false입니다.
사용예
// 단일 제품이 있고 추가 속성이 없는 IAP
SingularSDK.InAppPurchase(myProduct, null);
// 단일 제품 및 속성이 포함된 IAP
var attr = new Dictionary<string, object>() {
["my_first_attribute"] = "value1",
["my_second_attribute"] = "value2"};
 
SingularSDK.InAppPurchase(myProduct, attr);

// 추가 속성이 없고 맞춤 이벤트 이름이 없는 단일 제품을 사용한 IAP입니다.

SingularSDK.InAppPurchase("MyCustomProduct",
myProduct, null);

// 제품 목록이 포함된 IAP(추가 속성 없음)
SingularSDK.InAppPurchase(myProductList, null);

// 제품 목록이 포함된 IAP, 추가 속성 및 맞춤 이벤트 이름이 없습니다.

SingularSDK.InAppPurchase("MyCustomProducts",
myProductList, null);
수익을 추적하는 다른 방법: 수익 및 커스텀 수익 메소드

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

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

참고: 인앱 구매 대신 수익/커스텀 수익을 사용하는 경우, 싱귤러는 구매 영수증을 확인할 수 없습니다.

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)
메모: 다음과 같이 3자리 ISO 4217 통화 코드로 통화를 전달합니다. "USD", "EUR", "INR".
사용예
// 제품 세부정보 없이 수익 이벤트 보내기
SingularSDK.Revenue("USD", 9.99);

// 제품 세부정보와 함께 수익 이벤트 보내기
SingularSDK.Revenue("USD", 50.50, "abc123", "myProductName", 
"myProductCategory", 2, 25.50)
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)
메모: 다음과 같이 3자리 ISO 4217 통화 코드로 통화를 전달합니다. "USD", "EUR", "INR".
사용예
// 맞춤 이름으로 수익 이벤트 보내기
SingularSDK.CustomRevenue("MyCustomRevenue", "USD", 9.99);

// 맞춤 이름 + 제품 세부정보로 수익 이벤트 보내기
SingularSDK.CustomRevenue("MyCustomRevenue", "USD", 50.50, 
"abc123", "myProductName", "myProductCategory", 2, 25.50)

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

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

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

중요:

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

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

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

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

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

요구사항:

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

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

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

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

4. 고급 옵션

4.1. 단축 리퍼러 링크 생성

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

싱귤러 링크에 파라미터가 추가되어 길이가 길어진 경우 단축 링크를 사용하여공유하기에 편리한 더 짧고 안전한 링크로 변환할 수 있습니다.

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

단축 링크를 만들려면 다음이 필요합니다:

  • 앱 다운로드로 연결되는 싱귤러 링크 ( 싱귤러 링크 FAQ 참조).
  • 링크에 동적으로 추가하려는 모든 파라미터 (옵션 목록은 트래킹 링크 파라미터 참조).
  • 링크를 공유한 사용자의 새 앱 설치를 추적할 수 있도록 하려면 추천 사용자의 이름과 ID를 입력합니다.

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

void callback(string shortLinkURL, string error){
    // shortLinkURL이 null이 아닌 경우 여기에 공유 논리를 추가하세요. 오류가 발생한 경우 오류 원인에 따라 함수에 전달된 매개변수를 재시도/중단/수정하는 논리를 추가하세요.
}

SingularSDK.createReferrerShortLink(
    "https://sample.sng.link/B4tbm/v8fp?_dl=https%3A%2F%2Fabc.com",
    "John Doe", // 추천인 이름
    "342", // 추천인 ID
    new Dictionary<string, string>() { 
        // 추가하려는 매개변수가 포함된 Dictionary 객체
        {"channel", "sms"}
    },
    callback 
);

4.2. 광고 수익 어트리뷰션 지원 추가

참고: 버전 3.0.0부터 싱귤러는 SDK를 통해 광고 수익 어트리뷰션을 설정할 수 있는 옵션을 추가했습니다.

앱에서 싱귤러 SDK를 업데이트하지 않고도 API 호출을 사용하여 기존 방식으로 광고 수익 어트리뷰션을 설정할 수 있습니다. 하지만 SKAdNetwork 캠페인에 대한 광고 수익을 측정하려면 SDK를 통해 광고 수익 어트리뷰션을 설정해야 합니다.

싱귤러 SDK에서 광고 수익 어트리뷰션 지원을 추가하려면 다음과 같이 하세요:

  1. 싱귤러 SDK를 최신 버전으로 업데이트합니다.
  2. 광고 수익 데이터에 사용하는 미디에이션 플랫폼에 따라 적절한 코드 스니펫을 싱귤러 SDK 통합에 추가합니다.

참고: 통화를 3글자 ISO 4217 통화 코드(예: 'USD', 'EUR', 'INR')로 전달합니다.

AdMob
    1. 참고: 이 기능은 애드몹 계정에서 활성화해야 합니다.

      참조 https://support.google.com/admob/answer/11322405#getstarted

참고: 구글 애드몹 유니티 SDK가 변경되었습니다!

현재 및 이전 버전의 Google AdMob Unity SDK에 대한 최신 마이그레이션에 대해 자세히 알아보려면 여기를 참조하세요. 여기에서 Google 문서를 참조하세요: Google AdMob Mobile Ads SDK (Unity) 마이그레이션

Admob Unity SDK v8.0.0+ (C#) Admob Unity SDK Legacy (C#)

다음 코드는 애드몹 유니티 SDK v8.0.0 이상용입니다.

듣기 rewarded ad 이벤트에 대해 설명되어 있습니다, 여기

private void RegisterEventHandlers(RewardedAd ad)
{
// 광고가 수익을 올린 것으로 추정될 때 발생합니다.
ad.OnAdPaid += (AdValue adValue) =>
{
    // 단일 애드몬 이벤트 생성 및 전송
    SingularAdData data = new SingularAdData(
       "Admob",
        adValue.CurrencyCode,
        adValue.Value/1000000f);
    Singular.AdRevenue(data);
};
}
IronSource
  1. IronSource의 이벤트 온임프레션성공에서수신한 오브젝트를 검색합니다.
  2. IronSource에서 ARM SDK 포스트백 플래그가 켜져 있는지 확인합니다.
  3. 참조https://developers.is.com/ironsource-mobile/general/ad-revenue-measurement-postbacks/#step-1
C#
IronSourceImpressionData impressionData;
SingularAdData data = new SingularAdData(
"IronSource",
"USD",
impressionData.revenue); Singular.AdRevenue(data);
TradPlus
  1. TradplusAds 이벤트에서 받은 오브젝트 검색: AddGlobalAdImpression
  2. 트레이드플러스 광고 노출 콜백에 단수 추가하기
C#
TradplusAds.Instance().AddGlobalAdImpression(OnGlobalAdImpression);

void OnGlobalAdImpression(Dictionary<string, object="object"> adInfo) {
   double revenue = 0;
   double.TryParse(
adInfo["ecpm"].ToString(),
NumberStyles.Float| NumberStyles.AllowThousands,
CultureInfo.InvariantCulture, out revenue); if(revenue != 0) revenue = revenue / 1000; SingularAdData data = new SingularAdData(
"TradPlus",
"USD",
revenue); SingularSDK.AdRevenue(data); }
기타(일반)
  1. 관련 데이터로 SingularAdData 객체를 초기화합니다.
  2. 싱귤러에 데이터 보고
C#
SingularAdData data = new SingularAdData(
   YOUR_AD_PLATFORM,
   커런시 코드,
   9.90);

SingularSDK.AdRevenue(data);

4.3. 언인스톨 트래킹

참고: 언인스톨 트래킹은 Enterprise 고객만 사용할 수 있습니다.

Android 언인스톨 트래킹

Android 앱에 대해 언인스톨 트래킹을 사용 설정하려면 먼저 언인스톨 트래킹 설정에 설명된 대로 싱귤러 플랫폼에서 설정을 추가합니다. 그런 다음 아래 지침을 따르세요.

참고: 구글은 2018년 4월에 GCM API를 더 이상 사용하지 않습니다. 언인스톨 트래킹에는 FCM을 사용합니다.

Firebase 클라우드 메시징(FCM)을 사용하여 언인스톨 트래킹 활성화하기:

1. FCM 연동:

언인스톨 기능을 사용하려면 Firebase 클라우드 메시징(FCM) 플랫폼의 서비스를 사용해야 합니다. 아직 FCM을 사용하고 있지 않다면 Google의 Android에서 Firebase 클라우드 메시징 클라이언트 앱을 설정하는 방법에 대한 지침을 따르세요.

FCM 요구 사항(출처)

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

사용자기기가 해당 Android 버전에서 실행되지 않는 경우 싱귤러 언인스톨 트래킹을 사용할 수 없습니다.

2. 안드로이드 매니페스트.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 Device Token을 등록하고 전송합니다:

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

SingularSDK.RegisterTokenForUninstall(String fcmDeviceToken);

'RegisterTokenForUninstall' 메서드는 'SingularSDK.InitializeSingularSDK()' 메서드보다 먼저 호출해야 합니다.

iOS 언인스톨 트래킹

iOS의 앱 언인스톨 트래킹은 Apple 푸시 알림 서비스(APNS)을 기반으로 합니다. 앱이 현재 푸시 알림을 지원하지 않는 경우 Apple 가이드를 참조하세요. 앱이 이미 푸시 알림을 지원하는 경우, SDK가 초기화된 후 RegisterTokenForUninstall 메서드를 사용하여 APNS에서 반환된 디바이스 토큰을 전달하면 됩니다.

SingularSDK.RegisterTokenForUninstall 메서드
설명 Pass the device token returned from APNS. Note that the APNS token is usually binary data in the native form, but you need to pass it as a string.
서명
public static void RegisterTokenForUninstall
(string APNSToken)
사용예
// APNS 토큰을 16진수 문자열로 전달합니다.
  SingularSDK.RegisterTokenForUninstall("ba85ab31a7c7
f5c2f012587f29fb0e596d4b67e7b7b2838fa1a8582c1f7dbdee");

4.4. 글로벌 프로퍼티 추가

싱귤러 SDK를 사용하면 앱에서 전송되는 모든 세션 및 이벤트와 함께 싱귤러 서버로 전송할 사용자 지정 추가 속성을 정의할 수 있습니다. 이러한 속성은 사용자, 앱 모드 또는 상태 등 원하는 모든 정보를 나타낼 수 있습니다. 이러한 속성을 설정하면 보고서 디멘션(Dimension)으로 사용하여 세분화된 데이터를 조회할 수 있습니다.

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

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

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

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

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

초기화 후 글로벌 프로퍼티 설정

앱 실행 중 언제든지 글로벌 프로퍼티를 설정, 설정 해제 및 검색하려면 다음 메서드를 사용하세요.

SingularSDK.SetGlobalProperty 방법
설명

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

노트:

  • 해당 프로퍼티가 아직 존재하지 않고 다른 전역 속성이 이미 5개 있는 경우 프로퍼티는 추가되지 않습니다.
  • 프로퍼티가 이미 설정된 경우 overrideExisting 매개 변수는 기존 값을 재정의할지 여부를 결정합니다.
  • 프로퍼티가 성공적으로 설정되면 메서드는 true를 반환하고, 그렇지 않으면 false를 반환합니다.
서명 public static bool SetGlobalProperty(string key, string value, bool overrideExisting)
사용예
bool result = SingularSDK.SetGlobalProperty("key", "value", false);
SingularSDK.GetGlobalProperties 방법
설명 모든 글로벌 프로퍼티 키, 값을 맵으로 검색합니다.
서명 public static Dictionary<string, string> GetGlobalProperties()
사용예
Dictionary<string, string> props = SingularSDK.GetGlobalProperties();
SingularSDK.UnsetGlobalProperty 방법
설명 특정 글로벌 프로퍼티를 제거합니다.
서명 public static void UnsetGlobalProperty(string key)
사용예
SingularSDK.UnsetGlobalProperty(“test_key”);
SingularSDK.ClearGlobalProperties 방법
설명 모든 글로벌 프로퍼티를 초기화합니다.
서명 public static void ClearGlobalProperties()
사용예
SingularSDK.clearGlobalProperties();

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

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

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

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

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

5.1. 데이터 공유 제한

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

데이터 공유 제한

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

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

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

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

SingularSDK.LimitDataSharing 방법
서명 SingularSDK.LimitDataSharing(bool shouldLimitDataSharing)
설명 프라이빗 데이터 공유에 대한 사용자 동의(옵트인)를 Singular에 알립니다.
사용예
// 사용자가 데이터 공유를 선택했습니다.
SingularSDK.LimitDataSharing(false);

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

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

SingularSDK.TrackingOptIn 방법
설명 추적에 대한 사용자 동의(옵트인)를 Singular에 알립니다.
사용예
SingularSDK.TrackingOptIn();
SingularSDK.StopAllTracking 방법
설명 이 앱에서 이 사용자에 대한 모든 추적 활동을 중지합니다.
메모:이 방법을 호출하면 앱이 다시 시작된 후에도 SDK가 효과적으로 비활성화됩니다(상태는 지속됨)! 추적을 다시 활성화하는 유일한 방법은resumeAllTracking()을 호출하는 것입니다.
사용예
SingularSDK.StopAllTracking();
SingularSDK.ResumeAllTracking 방법
설명 이 앱에서 이 사용자에 대한 추적을 재개합니다.
사용예
SingularSDK.ResumeAllTracking();
SingularSDK.IsAllTrackingStopped 방법
설명 이 앱에서 이 사용자에 대한 추적 상태를 확인하세요. StopAllTracking()을 사용하여 추적이 중지되고 재개되지 않은 경우 true를 반환합니다.
사용예
SingularSDK.IsAllTrackingStopped();