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

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

IDFA (Identifier for Advertising)

  • iOS 에서 제공하는 Device 마다 고유한 ID
  • 앱을 재설치 하여도 초기화 되지 않음
  • Device 사용자가 초기화 할 수 있음
  • Limit AD Tracking을 true로 설정한 경우, 00000000-0000-0000-0000-000000000000 값으로 고정됨
  • XCode Simulator 인 경우, 00000000-0000-0000-0000-000000000000 값으로 고정됨

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 사용: Limit AD Tracking 이 true 또는 Device 가 Simulator 인 경우
  3. Random UUID: 예상하지 못한 이유로 IDFA, IDFV 모두 가져오는데 실패한 경우 Random으로 UUID를 만들어 사용합니다. (실제 데이터로 발견된 케이스 없음)

Android

Android에서는 OS 레벨에서 3가지 종류의 Device UUID를 제공하고 있으며, 각 Device UUID는 아래와 같은 특징을 가집니다.

GAID (Google Advertising Identifier)

  • 구글 애드에서 제공하는 고유 ID로 옵션에서 유저의 의도에 의해 언제든지 초기화가 가능한 정보입니다. 안드로이드에서는 최대한 해당 ID를 사용하도록 추천하고 있습니다. 해당 정보는 Google Play Service가 없는 디바이스에서는 빈 값으로 대치되게 되는데 대표적인 예로 AMAZON FireStick과 같은 경우 기본적으로 GAID는 비어있습니다.

IMEI (International Mobile Equipment Identity)

  • 하드웨어마다 발급되는 고유 ID로 해당 기기를 바꾸기 전까지 절대로 바뀌지 않는 정보입니다. 가장 강력한 구분자로 현재는 서비스에서 해당 정보를 저장하지 않도록 강제 하고 있습니다.

Android Secure Identifier

  • 안드로이드OS에서 제공하는 고유 ID로 해당 기기의 OS가 새로 설치되기 전까지는 바뀌지 않는 정보입니다. IMEI 다음으로 강력한 구분자로 현재는 GDPR 등등의 이유로 서비스에서 해당 정보 사용을 지양하도록 권고 하고 있습니다.

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

  1. GAID 사용
  2. Random UUID 사용: Google Play Service가 해당 디바이스에 존재하지 않아 해당 값을 얻어오지 못한 경우 Random으로 UUID를 만들어 사용합니다.