GAID(Google Advertising ID)和AAID(Android Advertising ID)——是Android设备的唯一广告标识符,用于安装归因和广告个性化。GAID是带有Google Play Services设备的官方名称,AAID是所有Android设备的通用术语,包括没有Google服务的版本。根据Google Developer Documentation, 2025,获取GAID需要连接Google Play服务。AdvertisingIdClient——在Android上获取广告标识符的主要API。
要点
GAID(Google Advertising ID)——是分配给每个安装了Google Play Services的Android设备的唯一标识符。它用于广告目的:安装归因、活动效果衡量和个性化广告展示。AAID(Android Advertising ID)——更广泛的术语,涵盖所有Android设备上的广告标识符,包括带有HMS的华为设备、Amazon Fire和没有Google服务的AOSP版本。
GAID与iOS上IDFA的主要区别——GAID无需明确的权限请求即可使用,但从Android 14开始,应用程序必须在其manifest中声明使用广告标识符,并根据Google Play隐私政策获取用户同意。Google不需要系统对话框(如iOS上的ATT),但开发人员必须遵守用户同意规则。
根据Google Play Console Statistics (2025),超过95%的活跃Android设备通过Google Play Services支持GAID。在没有Google服务的设备上(中国市场、华为AppGallery),使用来自相应应用商店的AAID或替代标识符,如为中国制造商提供的OAID(Open Anonymous ID)。
GAID相对于IDFA的关键优势——无需系统对话框即可获取标识符。然而,Google不断提高要求:从Android 14开始,targeting API 34及以上的应用程序必须在manifest中明确指定AD_ID权限。
在Android上,广告标识符的获取通过Google Play Services和AdvertisingIdClient类实现。与iOS不同,IDFA需要明确的ATT对话框,GAID默认情况下对应用程序可用,除非用户在设备设置中关闭了广告个性化。
来自com.google.android.gms.ads.identifier包的AdvertisingIdClient类提供两个主要方法:getAdvertisingIdInfo(上下文)和start(上下文)。该方法返回一个AdvertisingIdInfo对象,包含标识符(UUID字符串)和isLimitAdTrackingEnabled标志,该标志指示用户是否已关闭广告个性化。
AdvertisingIdClient调用必须在后台线程中执行,因为该方法访问远程的Google Play服务。建议使用协程或AsyncTask来异步获取标识符。如果设备上Google Play Services不可用,该方法抛出GooglePlayServicesNotAvailableException异常——在这种情况下,开发人员必须使用替代识别方法。
用户可以随时通过设置 — Google — 广告 — 重置广告标识符来重置GAID。重置后,应用程序将获得新的标识符,与之前数据的关联将丢失。用户还可以启用"关闭广告个性化"选项,该选项将isLimitAdTrackingEnabled标志更改为true。
开发人员必须尊重isLimitAdTrackingEnabled标志:如果为true,应用程序不得使用GAID进行广告个性化,但可以将其用于有限目的,如转化衡量、反欺诈和展示频率限制。违反此规则将导致应用程序在Google Play中被封锁。
从Android 14(API 34)开始,Google对广告标识符的访问实施了新的限制。现在必须在应用程序manifest中明确指定AD_ID权限才能获取GAID。如果应用程序未指定权限且targeting API 34+,AdvertisingIdClient调用将返回零标识符。
Google Play政策要求使用GAID的应用程序遵守几个规则:标识符只能用于广告和分析目的;未经用户明确同意,应用程序不得将GAID与个人数据关联;未经隐私政策说明,不得将GAID传递给第三方。自2025年起,Google Play开始使用Play Integrity API自动扫描应用程序是否符合这些规则。
特别关注针对儿童的应用程序:根据Google Play家庭政策,面向儿童的应用程序在任何情况下都不得使用GAID进行广告个性化。开发人员必须使用经过认证的适合儿童受众的广告网络。
isLimitAdTrackingEnabled标志向应用程序传达用户的选择。如果标志为true,应用程序只能将GAID用于基本操作:安装归因、分析、反欺诈、频率限制。在这种情况下,基于GAID的广告个性化、用户资料创建和再营销是被禁止的。
Google建议不要试图通过替代标识符(IMEI、MAC地址、Android ID)绕过isLimitAdTrackingEnabled标志。使用永久性硬件标识符被Google Play政策明确禁止,并会导致应用程序立即被封锁,无上诉可能。
在Android上获取GAID需要异步调用AdvertisingIdClient并处理可能的异常。下面是一个使用协程的Kotlin完整示例。
该示例演示了使用协程和try-catch获取广告标识符并检查isLimitAdTrackingEnabled标志以处理Google Play Services错误。
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服务不可用——使用替代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
)
}
}
了解不同平台上广告标识符之间的差异对于在两个操作系统上进行广告归因的开发人员至关重要。以下是GAID、AAID和IDFA关键方面的比较。
GAID和IDFA之间的主要区别——获取机制。IDFA需要通过ATT获得明确同意,否则返回零标识符。GAID在没有系统对话框的情况下可用,但从Android 14+开始需要在manifest中声明AD_ID权限。GAID还具有更灵活的标志系统:isLimitAdTrackingEnabled不会阻止获取标识符,只是通知应用程序需要限制使用。
根据Adjust (2025),GAID在Android上的可用性为活跃设备的98%,而IDFA在iOS上的可用性为20-35%。这使得Android成为广告归因更可预测的平台,但Google政策的收紧正在逐渐缩小这一差距。
与GAID不同,AAID不依赖于Google Play Services,可用于华为(HMS)、Amazon Fire OS和中国制造商的设备。在华为设备上,AAID通过华为移动服务(HMS)实现,使用来自com.huawei.hms.ads.identifier包的AdvertisingIdClient类。在中国市场,OAID(Open Anonymous ID)也很普遍——由中国制造商联盟开发的标准,用于在没有Google服务的设备上替代GAID。选择合适的API来获取标识符直接影响不同市场上广告归因的可用性。
常见问题
GAID(Google Advertising ID)——带有Google Play Services设备的广告标识符。AAID(Android Advertising ID)——Android广告标识符的通用术语,包括没有Google服务的设备(华为、Amazon Fire)。GAID通过Google Play获取,AAID通过相应应用商店的SDK获取。
是的,从Android 14(API 34)开始需要在manifest中指定AD_ID权限。如果应用程序的targetSdkVersion为34+且未指定AD_ID,AdvertisingIdClient将返回零标识符。权限通过
是的,用户可以随时通过设置 — Google — 广告 — 重置广告标识符来重置GAID。重置后,所有应用程序将获得新的标识符,与广告交互历史的关联将丢失。
OAID(Open Anonymous ID)——由中国智能手机制造商联盟(小米、OPPO、vivo、华为)开发的广告标识符标准。用于没有Google Play Services的设备,面向中国市场。与GAID不同,OAID不需要Google Play,通过设备制造商的SDK工作。
如果isLimitAdTrackingEnabled为true,应用程序不能使用GAID进行广告个性化、用户资料创建和再营销。但是,该标识符可以用于有限目的:安装归因、分析、反欺诈和展示频率限制。
总结
我们将开发一款交钥匙移动应用程序
IT Sectr自2017年以来为初创企业和企业打造iOS和Android应用程序。我们将为您提供咨询并提出最佳解决方案。