menu
Is this helpful?

# 클라이언트 SDK 자주 발생하는 문제

# 클라이언트 SDK의 전송 룰은 어떤 것입니까?

네이티브 클라이언트 SDK (Unity, Unreal, Flutter 등을 포함) 데이터는 처음에 로컬 데이터베이스에 캐시되며, 다음 상황에서 데이터 전송됩니다:

  • 앱이 백그라운드로 들어갑니다
  • 분 단위로 30초마다 (TE 시스템 내에서 설정 가능)
  • 30개 이상의 캐시 데이터로 한 번 (TE시스템 내에서 설정 가능)
  • 인터페이스를 호출하다

미니 프로그램 및 JavaScript SDK는 로컬 캐시 없이 실시간으로 전송합니다.

# 디바이스 ID의 값의 로직은 무엇입니까?

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

  • Android: Android ID

Android 8.0 이전 시스템의 경우, Android ID는 디바이스의 유니크한 식별자입니다. 초기화 또는 출하 시 설정 복원은 변경됩니다. 모든 앱이 공유합니다. Android 8.0 이후에는, 앱 서명 키, 유저, 디바이스의 각 조합에 유니크한 ANDROID_ID 값이 있습니다. 따라서, 같은 디바이스에서 실행되고 있지만 다른 서명 키를 사용하는 앱은, 같은 Android ID를 인식하지 않게 됩니다(같은 유저라도). 특별한 경우: 유저가 8.0 이전 디바이스에 앱을 설치하고, 나중에 언인스톨하고, 8.0으로 업그레이드한 후에 앱을 재설치하는 경우, Android ID는 이전과 다릅니다. 재설치가 없는 경우, Android ID는 변경되지 않습니다.

  • iOS: 처음에 IDFV를 얻고, 얻을 수 없는 경우에는 랜덤한 UUID를 사용합니다. 처음에 얻은 디바이스 ID의 값은 키체인에 저장되며, 그 후의 IDFV가 변경되어도 변경되지 않습니다.

미니 프로그램의 JavaScript 인터페이스는 동일한 디바이스 ID를 얻을 수 없으며, 랜덤으로 생성된 ID를 디바이스 ID로 사용합니다. 사용자가 캐시를 삭제하면, 디바이스 ID가 변경됩니다.

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

Android 4.0 과 iOS 8.0

# 데이터 전송 문제는 어떻게 확인하나요?

일반적인 문제는 클라이언트 로그를 사용하여 빠르게 특정할 수 있습니다. 각 SDK 가이드에서, 클라이언트 로그를 활성화하는 방법을 소개하고 있습니다.

Android에서는 enableTrackLog 인터페이스를 호출하여 클라이언트 측의 로그를 유효하게 할 수 있습니다. ThinkingAnalytics을 통해 Android SDK 로그를 필터링할 수 있습니다.

TDAnalytics.enableTrackLog(true);

iOS에서는 setLogLevel 인터페이스를 호출하여 로그의 프린트를 활성화하고, THINKING를 통해 iOS SDK 로그를 필터 처리할 수 있습니다.

[TDAnalytics setLogLevel:TDLoggingLevelDebug]

로그를 열어서 기술 지원 엔지니어와 공유하면 문제를 특정하는 데 도움을 줄 수 있습니다.

보내는 사람의 이메일 주소가 올바른지 확실하지 않은 경우, 인터페이스를 확인하여 보내는 사람의 이메일 주소의 리치 가능성을 확인할 수 있습니다. https://YOUR_RECEIVER_URL/health-check 에 액세스하면, 페이지에 ok 가 반환되며, 업로드 URL이 올바르게 구성되어 있음을 나타냅니다.

# Unity SDK를 사용하여 데이터를 전송할 때 주의해야 할 사항은 무엇입니까?

  1. SDK의 초기화는 Awake()에서 수행되므로, 호출을 Awake에서 트리거할 수 없습니다.
  2. 기본적으로, 모든 인터페이스는 메인 스레드에서만 호출할 수 있습니다.
  3. APP가 포어그라운드로 들어가거나 백그라운드로 돌아가는 것은 Android 시스템의 컴포넌트 라이프사이클을 통해 판단합니다. 그러나, Unity는 프로그램의 처음에서 SDK가 초기 설정되는 것을 보장할 수 없기 때문에, 백그라운드로 돌아갈 때 첫 스타트 이벤트를 판단할 수 있는 가능성이 있습니다. 현재 시점에서, 처음으로 백그라운드로 돌아갈 때 ta_app_start를 추가합니다 (전송은 조금 늦어지지만, 이벤트 시간 #event_time은 정확하며, 그 이후의 분석에는 영향을 주지 않습니다).

# 크래시 이벤트에는 무엇이 포함되어 있나요? 크래시 이벤트의 수집 방법은 무엇인가요?

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

크래시 이벤트의 수집을 트리거하는 상황:

  • Android:VM에서 잡히지 않은 예외가 발생했습니다
  • iOS :
    • Unix 틀린 데이터 신호: SIGABRT, SIGILL, SIGSEGV, SIGFPE, SIGBUS
    • NSException 예외
  • Unity 엔진에서의 C# 예외 수집