Airbridge Device ID 결정 로직

Airbridge Device ID는 각 OS에서 제공하는 Device UUID를 활용하여 각 디바이스를 고유하게 식별해내는 ID로 사용되고 있습니다.

Device UUID 란?

Device UUID(Universally Unique Identifier)는 iOS, Android 디바이스 마다 부여되는 고유한(Unique) 값입니다. 각각의 아이디는 e3fc0d3e-e1c7-49ea-bce3-6994721eb712와 같은 포맷으로 이루어져 있으며, 목적에 따라 다른 용도로 활용하게 됩니다.

iOS

Airbridge는 iOS에서 제공하는 2가지 종류의 Device UUID를 사용하고 있으며, 각 Device UUID는 아래와 같은 특징을 가집니다.

IDFA (Identifier for Advertising)

  • iOS에서 제공하는 Device 마다 고유한 ID
  • 앱을 재설치 하여도 초기화 되지 않음
  • 하나의 앱이라도 ATT 추적요청을 동의한 사용자가 설정 앱에서 모든 앱의 ATT 추적요청 응답을 거부로 바꾸면 초기화 됨
  • 사용자가 ATT 추적요청에 동의하지 않은 경우, 00000000-0000-0000-0000-000000000000 값으로 고정됨
  • Simulator인 경우, 00000000-0000-0000-0000-000000000000 값으로 고정됨

📘

사용자가 ATT 추적요청에 동의하지 않은 경우

  • 앱에서 ATT 추적요청을 하지 않은 경우 (아직 요청하기 이전인 상태를 포함)
  • 사용자가 ATT 추적요청에 비동의를 선택한 경우
  • 사용자의 연령이 광고추적을 해서는 안되는 경우
  • 사용자가 설정앱에서 모든 앱의 ATT 추적요청에 자동으로 거부하는 옵션을 설정한 경우 (옵션명: Allow Apps to Request to Track)

📘

Limit Ad Tracking에 대해서

  • Limit Ad Tracking 은 iOS 14.0 부터 deprecated 되었으며, iOS는 14.5부터 언제나 true로 제공합니다.
    • iOS 14.0 ~ 14.1 은 언제나 true로 제공합니다.
    • iOS 14.2 ~ 14.4 는 Allow Apps to Request to Track 설정이 true면 false, false면 true로 제공합니다.
    • iOS 14.5 ~ 는 언제나 true로 제공합니다.

IDFV (Identifier for Vendor)

  • iOS에서 제공하는 Device 내 App Vendor 마다 고유한 ID
  • 디바이스에 com.example.1app , com.example.2app 과 같이 Vendor가 같은 App이 복수개 설치되는 경우, 각 App은 같은 IFV 값을 가짐
  • 그 Vendor의 App이 모두 삭제되고, 다시 App이 설치되면, 다른 IDFV 값을 가짐

Airbridge iOS SDK에서는 IDFA와 IDFV를 활용하여 아래와 같은 우선순위로 Airbridge Device ID를 결정하고 있습니다.

  1. IDFA 사용
  2. IDFV 사용: 사용자가 ATT 추적요청에 동의하지 않았거나 Device가 Simulator 인 경우
  3. Random UUID 사용: 예상하지 못한 이유로 IDFA, IDFV 모두 가져오는데 실패한 경우 Random하게 UUID를 만들어 사용합니다. (실제 데이터로 발견된 케이스 없음)

Android

Airbridge Android SDK는 Android에서 제공하는 1가지 종류의 Device UUID를 사용하고 있으며, 각 Device UUID는 아래와 같은 특징을 가집니다.

GAID (Google Advertising Identifier)

  • Google Play Service에서 제공하는 Device 마다 고유한 ID
  • 앱을 재설치 하여도 초기화 되지 않음
  • 사용자가 설정앱에서 초기화 버튼을 클락하면 초기화 됨
  • 사용자가 Limit Ad Tracking을 true로 설정하면, 00000000-0000-0000-0000-000000000000 값으로 고정됨
  • Google Play Service가 없는 디바이스에서는 수집될 수 없음 (예: Amazon FireStick)

Airbridge Android SDK에서는 GAID를 활용하여 다음과 같이 Airbridge Device ID를 결정하고 있습니다.

  1. GAID 사용
  2. Random UUID 사용: Google Play Service가 해당 디바이스에 존재하지 않아 해당 값을 수집할 수 없는 경우, Random하게 UUID를 만들어 사용합니다.