본문으로 건너뛰기

클라이언트 SDK 자주 묻는 질문

최근 업데이트 2026. 10. 03.

클라이언트 SDK의 전송 전략은 무엇입니까?​

네이티브 클라이언트 SDK(Unity, Unreal, Flutter 등 포함)의 데이터는 먼저 로컬 데이터베이스에 캐시되며, 다음과 같은 경우에 데이터 전송이 트리거됩니다.

  • App이 백그라운드로 전환될 때
  • 30초마다 1회 전송(AE 백엔드에서 설정 가능)
  • 캐시된 데이터가 30건을 초과하면 전송 트리거(AE 백엔드에서 설정 가능)
  • flush 인터페이스를 직접 호출할 때

미니 프로그램, 미니 게임 SDK와 JavaScript SDK는 기본적으로 실시간으로 전송하며, batch 모드를 활성화하면 먼저 로컬에 캐시한 후 전송합니다.

디바이스 ID는 어떻게 결정됩니까?​

네이티브 클라이언트 SDK(Unity, Unreal, Flutter 등 포함)의 디바이스 ID 결정 로직은 다음과 같습니다.

  • Android: Android ID 사용

Android 8.0 미만 시스템에서 Android ID는 디바이스 고유 식별자이며, 펌웨어를 다시 설치하거나 공장 초기화를 해야만 변경되고 모든 앱이 공유합니다. Android 8.0 이상 시스템에서는 앱 서명 키, 유저, 디바이스의 각 조합마다 고유한 ANDROID_ID 값을 가집니다. 따라서 같은 디바이스에서 실행되더라도 서명 키가 다른 앱은 같은 Android ID를 볼 수 없습니다(같은 유저라도 마찬가지입니다). 특수한 경우: 유저가 Android 8.0 미만 디바이스에 APP을 설치했다가 삭제한 후 8.0 이상으로 업그레이드하고 앱을 다시 설치하면 Android ID가 이전과 달라집니다. 다시 설치하지 않았다면 Android ID는 변경되지 않습니다.

  • iOS: 먼저 IDFV를 가져오고, 가져올 수 없으면 랜덤 UUID를 사용합니다. 처음 가져온 디바이스 ID 값은 키체인에 저장되며, 이후 IDFV가 변경되더라도 더 이상 바뀌지 않습니다.

미니 프로그램, 미니 게임 및 JavaScript 인터페이스는 이와 같은 디바이스 식별 번호를 가져올 수 없으므로 랜덤으로 생성한 ID를 디바이스 ID로 사용합니다. 유저가 캐시를 삭제하면 이 디바이스 ID가 변경됩니다.

클라이언트 SDK가 지원하는 최소 시스템 버전은 무엇입니까?​

클라이언트 SDK가 지원하는 최소 버전은 Android 4.0과 iOS 8.0입니다

전송 문제는 어떻게 해결합니까?​

일반적인 문제는 클라이언트 로그로 빠르게 파악할 수 있으며, 각 연동 가이드에서 클라이언트 로그를 활성화하는 방법을 소개하고 있습니다.

Android에서는 enableTrackLog 인터페이스를 호출하여 클라이언트 로그를 활성화할 수 있습니다. ThinkingData로 Android SDK의 로그를 필터링할 수 있습니다.

TDAnalytics.enableTrackLog(true);

iOS에서는 setLogLevel 인터페이스를 호출하여 로그 출력을 활성화하고, THINKING으로 iOS SDK의 로그를 필터링할 수 있습니다.

[TDAnalytics setLogLevel:TDLoggingLevelDebug]

로그를 활성화한 후 로그를 기술 지원 엔지니어에게 보내 문제 파악에 도움을 받을 수 있습니다.

수집 주소가 올바른지 확실하지 않다면 헬스 체크 인터페이스로 수집 주소에 접근할 수 있는지 확인할 수 있습니다. https://YOUR_RECEIVER_URL/health-check에 접속하여 페이지가 ok를 반환하면 수신 측 주소가 올바르게 설정된 것입니다.

그 밖에 트래킹 방안 모듈의 기능으로도 데이터 전송 과정의 문제를 쉽게 찾을 수 있습니다.

Unity SDK로 데이터를 전송할 때 주의할 점은 무엇입니까?​

  1. SDK 초기화는 Awake()에서 완료되므로 Awake에서 호출을 트리거하면 안 됩니다
  2. 기본적으로 모든 인터페이스는 메인 스레드에서만 호출할 수 있습니다.
  3. SDK는 Android 시스템의 컴포넌트 라이프사이클로 APP이 포그라운드로 전환되었는지 백그라운드로 전환되었는지를 판단합니다. 그러나 Unity에서는 프로그램 시작 시점에 SDK를 초기화한다고 보장할 수 없으므로, 백그라운드로 전환될 때에야 최초 시작 이벤트를 판단할 수 있는 경우가 있습니다. 현재는 처음 백그라운드로 전환될 때 ta_app_start를 보완하여 전송합니다(전송은 조금 늦지만 이벤트 시간 #event_time은 정확하므로 이후 분석에 영향을 주지 않습니다)

크래시 이벤트에는 어떤 내용이 포함되며, 크래시 이벤트는 어떻게 수집합니까?​

클라이언트 SDK는 일부 크래시 로그 수집을 지원합니다. SDK를 초기화한 후 APP Crash 자동 수집을 활성화해야 합니다. 크래시 이벤트의 이벤트 이름은 ta_app_crash입니다.

크래시 이벤트 수집이 트리거되는 경우:

  • Android 플랫폼: 가상 머신에서 처리되지 않은 예외가 발생한 경우

  • iOS 플랫폼:

    • Unix 시그널 예외: SIGABRT, SIGILL, SIGSEGV, SIGFPE, SIGBUS
    • NSException 예외
  • Unity 엔진의 C# 예외 수집

이 문서가 도움이 되었나요?