GAID(Google Advertising ID)와 AAID(Android Advertising ID)는 설치 속성 및 광고 개인화에 사용되는 Android 기기의 고유 광고 식별자입니다. GAID는 Google Play Services가 있는 기기의 공식 명칭이며, AAID는 Google 서비스가 없는 빌드를 포함한 모든 Android 기기의 범용 용어입니다. Google Developer Documentation, 2025에 따르면 GAID를 얻으려면 Google Play Services가 필요합니다. AdvertisingIdClient는 Android에서 광고 식별자를 얻기 위한 주요 API입니다.
핵심 사항
GAID(Google Advertising ID)는 Google Play Services가 설치된 각 Android 기기에 할당되는 고유 식별자입니다. 설치 속성, 캠페인 측정, 개인화된 광고 제공 등 광고 목적으로 사용됩니다. AAID(Android Advertising ID)는 HMS가 있는 Huawei 기기, Amazon Fire, Google 서비스가 없는 AOSP 빌드를 포함한 모든 Android 기기의 광고 식별자를 포괄하는 광범위한 용어입니다.
GAID와 iOS의 IDFA의 주요 차이점은 GAID는 명시적 권한 요청 없이 사용할 수 있지만, Android 14부터 앱은 매니페스트에서 광고 식별자 사용을 선언하고 Google Play 개인정보처리방침에 따라 사용자 동의를 받아야 한다는 점입니다. Google은 (iOS의 ATT와 같은) 시스템 대화상자를 요구하지 않지만, 개발자는 사용자 동의 규칙을 따라야 합니다.
Google Play Console Statistics(2025)에 따르면 활성 Android 기기의 95% 이상이 Google Play Services를 통해 GAID를 지원합니다. Google 서비스가 없는 기기(중국 시장, Huawei AppGallery)에서는 해당 앱 스토어의 AAID 또는 중국 제조업체용 OAID(Open Anonymous ID)와 같은 대체 식별자가 사용됩니다.
IDFA에 대한 GAID의 주요 이점은 차단 시스템 대화상자 없이 식별자를 얻을 수 있다는 것입니다. 그러나 Google은 지속적으로 요구 사항을 강화하고 있습니다. Android 14부터 API 34 이상을 대상으로 하는 앱은 매니페스트에서 AD_ID 권한을 명시적으로 선언해야 합니다.
Android에서 광고 식별자 획득은 Google Play Services와 AdvertisingIdClient 클래스를 통해 구현됩니다. IDFA에 명시적 ATT 대화상자가 필요한 iOS와 달리, 사용자가 기기 설정에서 광고 개인화를 비활성화하지 않은 한 GAID는 기본적으로 앱에서 사용할 수 있습니다.
com.google.android.gms.ads.identifier 패키지의 AdvertisingIdClient 클래스는 getAdvertisingIdInfo(컨텍스트)와 start(컨텍스트)라는 두 가지 주요 메서드를 제공합니다. 이 메서드는 식별자(UUID 문자열)와 사용자가 광고 개인화를 비활성화했는지 여부를 나타내는 isLimitAdTrackingEnabled 플래그가 포함된 AdvertisingIdInfo 객체를 반환합니다.
AdvertisingIdClient 호출은 백그라운드 스레드에서 수행해야 합니다. 이 메서드는 원격 Google Play 서비스에 액세스하기 때문입니다. 비동기 식별자 획득을 위해 코루틴 또는 AsyncTask를 사용하는 것이 좋습니다. 기기에서 Google Play Services를 사용할 수 없는 경우 메서드는 GooglePlayServicesNotAvailableException을 throw합니다. 이 경우 개발자는 대체 식별 방법을 사용해야 합니다.
사용자는 언제든지 설정 — Google — 광고 — 광고 ID 재설정을 통해 GAID를 재설정할 수 있습니다. 재설정 후 앱은 새 식별자를 받고 이전 데이터와의 연결이 끊어집니다. 사용자는 '광고 개인화 비활성화' 옵션을 켤 수도 있으며, 이렇게 하면 isLimitAdTrackingEnabled 플래그가 true로 설정됩니다.
개발자는 isLimitAdTrackingEnabled 플래그를 존중해야 합니다. true인 경우 앱은 광고 개인화에 GAID를 사용해서는 안 되지만, 전환 측정, 사기 방지, 빈도 제한과 같은 제한된 목적으로는 사용할 수 있습니다. 이 규칙을 위반하면 Google Play에서 앱이 정지됩니다.
Android 14(API 34)부터 Google은 광고 식별자에 대한 액세스에 새로운 제한을 도입했습니다. GAID를 얻으려면 이제 AD_ID 권한을 앱 매니페스트에서 명시적으로 선언해야 합니다. 앱이 권한을 선언하지 않고 API 34+를 대상으로 하는 경우 AdvertisingIdClient 호출은 null 식별자를 반환합니다.
Google Play 정책은 GAID를 사용하는 앱이 여러 규칙을 준수하도록 요구합니다. 식별자는 광고 및 분석 목적으로만 사용할 수 있습니다. 앱은 명시적 사용자 동의 없이 GAID를 개인 데이터와 연결해서는 안 됩니다. GAID는 개인정보처리방침에 명시하지 않고 제3자와 공유해서는 안 됩니다. 2025년부터 Google Play는 Play Integrity API를 사용하여 이러한 규칙 준수 여부를 앱을 자동으로 스캔하기 시작했습니다.
어린이 앱에는 특별한 주의가 필요합니다. Google Play Families Policy에 따르면 어린이를 대상으로 하는 앱은 어떤 상황에서도 광고 개인화에 GAID를 사용할 수 없습니다. 개발자는 어린이 대상으로 인증된 광고 네트워크를 사용해야 합니다.
isLimitAdTrackingEnabled 플래그는 사용자의 선택을 앱에 알립니다. 플래그가 true인 경우 앱은 기본 작업(설치 속성, 분석, 사기 방지, 빈도 제한)에만 GAID를 사용할 수 있습니다. 이 경우 GAID 기반 광고 개인화, 사용자 프로파일링, 리타겟팅이 금지됩니다.
Google은 대체 식별자(IMEI, MAC 주소, Android ID)를 통해 isLimitAdTrackingEnabled 플래그를 우회하지 말 것을 권장합니다. 영구 하드웨어 식별자 사용은 Google Play 정책에 의해 엄격히 금지되며 이의 제기 없이 즉시 앱이 정지됩니다.
Android에서 GAID를 얻으려면 가능한 예외를 처리하면서 AdvertisingIdClient를 비동기적으로 호출해야 합니다. 아래는 코루틴을 사용한 Kotlin의 전체 예제입니다.
예제는 코루틴과 try-catch를 사용하여 Google Play Services 오류를 처리하면서 광고 식별자를 가져오고 isLimitAdTrackingEnabled 플래그를 확인하는 방법을 보여줍니다.
import com.google.android.gms.ads.identifier.AdvertisingIdClient
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
data class AdvertisingInfo(
val gaid: String,
val isLimitAdTrackingEnabled: Boolean
)
suspend fun getAdvertisingInfo(context: Context): AdvertisingInfo? {
return withContext(Dispatchers.IO) {
try {
val adInfo = AdvertisingIdClient.getAdvertisingIdInfo(context)
AdvertisingInfo(
gaid = adInfo.id,
isLimitAdTrackingEnabled = adInfo.isLimitAdTrackingEnabled(true)
)
} catch (e: GooglePlayServicesNotAvailableException) {
// Google Play Services를 사용할 수 없음 — 대체 ID 사용
null
} catch (e: IOException) {
// 서비스 액세스 중 네트워크 오류
null
}
}
}
// Activity 또는 ViewModel에서 사용
fun onGaidRequested() {
lifecycleScope.launch {
val info = getAdvertisingInfo(this@MainActivity)
setupAdNetwork(
gaid = info?.gaid,
limitTracking = info?.isLimitAdTrackingEnabled ?: true
)
}
}
두 OS 모두에서 광고 속성 작업을 하는 개발자에게 다양한 플랫폼 간 광고 식별자의 차이를 이해하는 것은 매우 중요합니다. 아래는 GAID, AAID, IDFA의 주요 측면에 대한 비교입니다.
GAID와 IDFA의 주요 차이점은 획득 메커니즘입니다. IDFA는 ATT를 통한 명시적 동의가 필요하며, 동의가 없으면 null 식별자가 반환됩니다. GAID는 시스템 대화상자 없이 사용할 수 있지만 Android 14+부터 매니페스트에서 AD_ID 권한 선언이 필요합니다. GAID에는 더 유연한 플래그 시스템도 있습니다. isLimitAdTrackingEnabled는 식별자 획득을 차단하지 않고 앱에 사용을 제한하도록 신호를 보냅니다.
Adjust(2025)에 따르면 Android에서 GAID 가용성은 활성 기기의 98%인 반면 iOS에서 IDFA 가용성은 20–35%입니다. 이는 Android를 광고 속성에 더 예측 가능한 플랫폼으로 만들지만, Google 정책 강화로 인해 이 격차가 점차 줄어들고 있습니다.
AAID는 GAID와 달리 Google Play Services에 종속되지 않으며 Huawei(HMS), Amazon Fire OS 및 중국 제조업체 기기에서 사용할 수 있습니다. Huawei 기기에서는 com.huawei.hms.ads.identifier 패키지의 AdvertisingIdClient 클래스를 사용하여 Huawei Mobile Services(HMS)를 통해 AAID가 구현됩니다. 중국 시장에서는 OAID(Open Anonymous ID)도 일반적입니다. 이는 Google 서비스가 없는 기기에서 GAID를 대체하기 위해 중국 제조업체 연합이 개발한 표준입니다. 식별자 획득을 위한 올바른 API 선택은 다양한 시장에서 광고 속성의 가용성에 직접적인 영향을 미칩니다.
자주 묻는 질문
GAID(Google Advertising ID)는 Google Play Services가 있는 기기용 광고 식별자입니다. AAID(Android Advertising ID)는 Google 서비스가 없는 기기(Huawei, Amazon Fire)를 포함한 Android 광고 식별자의 일반 용어입니다. GAID는 Google Play를 통해 얻고, AAID는 해당 앱 스토어의 SDK를 통해 얻습니다.
네, Android 14(API 34)부터 매니페스트에서 AD_ID 권한을 지정해야 합니다. 앱이 targetSdkVersion 34+이고 AD_ID를 지정하지 않으면 AdvertisingIdClient가 null 식별자를 반환합니다. 권한은
네, 사용자는 언제든지 설정 — Google — 광고 — 광고 ID 재설정을 통해 GAID를 재설정할 수 있습니다. 재설정 후 모든 앱이 새 식별자를 받고 광고 상호작용 기록과의 연결이 끊어집니다.
OAID(Open Anonymous ID)는 중국 스마트폰 제조업체 연합(Xiaomi, OPPO, vivo, Huawei)이 개발한 광고 식별자 표준입니다. 중국 시장을 위해 Google Play Services가 없는 기기에서 사용됩니다. GAID와 달리 OAID는 Google Play가 필요하지 않으며 기기 제조업체의 SDK를 통해 작동합니다.
isLimitAdTrackingEnabled가 true인 경우 앱은 GAID를 광고 개인화, 사용자 프로파일링, 리타겟팅에 사용할 수 없습니다. 그러나 설치 속성, 분석, 사기 방지, 빈도 제한과 같은 제한된 목적으로는 식별자를 사용할 수 있습니다.
요약
턴키 방식의 모바일 애플리케이션을 개발해 드립니다
IT Sectr는 2017년부터 스타트업과 기업을 위한 iOS 및 Android 애플리케이션을 만듭니다. 저희가 상담해 드리고 최적의 솔루션을 제안하겠습니다.