GAID (Google Advertising ID) và AAID (Android Advertising ID) là các mã định danh quảng cáo duy nhất của thiết bị Android, được sử dụng để ghi nhận cài đặt và cá nhân hóa quảng cáo. GAID là tên chính thức cho các thiết bị có Google Play Services, AAID là thuật ngữ phổ quát cho tất cả thiết bị Android, bao gồm các bản dựng không có dịch vụ Google. Theo Tài liệu dành cho nhà phát triển Google, 2025, việc lấy GAID yêu cầu Google Play Services. AdvertisingIdClient là API chính để lấy mã định danh quảng cáo trên Android.
Những điểm chính
GAID (Google Advertising ID) là mã định danh duy nhất được gán cho mỗi thiết bị Android có Google Play Services. Nó dành cho mục đích quảng cáo: ghi nhận cài đặt, đo lường chiến dịch và hiển thị quảng cáo được cá nhân hóa. AAID (Android Advertising ID) là thuật ngữ rộng hơn bao gồm các mã định danh quảng cáo trên tất cả thiết bị Android, bao gồm thiết bị Huawei có HMS, Amazon Fire và bản dựng AOSP không có dịch vụ Google.
Sự khác biệt chính giữa GAID và IDFA trên iOS là GAID có sẵn mà không cần yêu cầu quyền rõ ràng, nhưng kể từ Android 14, ứng dụng phải khai báo việc sử dụng mã định danh quảng cáo trong tệp kê khai và nhận được sự đồng ý của người dùng theo Chính sách quyền riêng tư của Google Play. Google không yêu cầu hộp thoại hệ thống (như ATT trên iOS), nhưng nhà phát triển phải tuân theo các quy tắc đồng ý của người dùng.
Theo Thống kê Google Play Console (2025), hơn 95% thiết bị Android đang hoạt động hỗ trợ GAID qua Google Play Services. Trên các thiết bị không có dịch vụ Google (thị trường Trung Quốc, Huawei AppGallery), AAID từ các cửa hàng ứng dụng tương ứng hoặc các mã định danh thay thế như OAID (Open Anonymous ID) dành cho nhà sản xuất Trung Quốc được sử dụng.
Lợi thế chính của GAID so với IDFA là khả năng lấy mã định danh mà không cần hộp thoại hệ thống chặn. Tuy nhiên, Google liên tục thắt chặt các yêu cầu: kể từ Android 14, ứng dụng nhắm mục tiêu API 34 trở lên phải khai báo rõ ràng quyền AD_ID trong tệp kê khai.
Trên Android, việc lấy mã định danh quảng cáo được thực hiện thông qua Google Play Services và lớp AdvertisingIdClient. Không giống như iOS, nơi IDFA yêu cầu hộp thoại ATT rõ ràng, GAID có sẵn cho ứng dụng theo mặc định, trừ khi người dùng đã tắt cá nhân hóa quảng cáo trong cài đặt thiết bị.
Lớp AdvertisingIdClient từ gói com.google.android.gms.ads.identifier cung cấp hai phương thức chính: getAdvertisingIdInfo (ngữ cảnh) và start (ngữ cảnh). Phương thức trả về một đối tượng AdvertisingIdInfo chứa mã định danh (chuỗi UUID) và cờ isLimitAdTrackingEnabled, cho biết người dùng đã tắt cá nhân hóa quảng cáo hay chưa.
Việc gọi AdvertisingIdClient phải được thực hiện trong luồng nền, vì phương thức truy cập dịch vụ Google Play từ xa. Nên sử dụng coroutines hoặc AsyncTask để lấy mã định danh bất đồng bộ. Nếu Google Play Services không khả dụng trên thiết bị, phương thức sẽ ném ra ngoại lệ GooglePlayServicesNotAvailableException — trong trường hợp này, nhà phát triển phải sử dụng phương pháp nhận dạng thay thế.
Người dùng có thể đặt lại GAID bất kỳ lúc nào qua Cài đặt — Google — Quảng cáo — Đặt lại mã định danh quảng cáo. Sau khi đặt lại, ứng dụng nhận được mã định danh mới và liên kết với dữ liệu trước đó bị mất. Người dùng cũng có thể bật tùy chọn «Tắt cá nhân hóa quảng cáo», tùy chọn này đặt cờ isLimitAdTrackingEnabled thành true.
Nhà phát triển phải tôn trọng cờ isLimitAdTrackingEnabled: nếu nó là true, ứng dụng không được sử dụng GAID để cá nhân hóa quảng cáo, nhưng có thể sử dụng nó cho các mục đích hạn chế như đo lường chuyển đổi, chống gian lận và giới hạn tần suất. Vi phạm quy tắc này dẫn đến đình chỉ ứng dụng trên Google Play.
Bắt đầu từ Android 14 (API 34), Google đã đưa ra các hạn chế mới đối với quyền truy cập mã định danh quảng cáo. Quyền AD_ID hiện phải được khai báo rõ ràng trong tệp kê khai ứng dụng để lấy GAID. Nếu ứng dụng không khai báo quyền và nhắm mục tiêu API 34+, việc gọi AdvertisingIdClient trả về mã định danh null.
Chính sách Google Play yêu cầu ứng dụng sử dụng GAID phải tuân thủ một số quy tắc: mã định danh chỉ được sử dụng cho mục đích quảng cáo và phân tích; ứng dụng không được liên kết GAID với dữ liệu cá nhân mà không có sự đồng ý rõ ràng của người dùng; GAID không được chia sẻ với bên thứ ba mà không đề cập trong chính sách quyền riêng tư. Kể từ năm 2025, Google Play đã bắt đầu tự động quét các ứng dụng để tuân thủ các quy tắc này bằng API Play Integrity.
Đặc biệt chú ý đến ứng dụng dành cho trẻ em: theo Chính sách Gia đình của Google Play, ứng dụng nhắm mục tiêu trẻ em không được sử dụng GAID để cá nhân hóa quảng cáo trong bất kỳ trường hợp nào. Nhà phát triển phải sử dụng mạng quảng cáo được chứng nhận cho đối tượng trẻ em.
Cờ isLimitAdTrackingEnabled báo hiệu lựa chọn của người dùng cho ứng dụng. Nếu cờ là true, ứng dụng chỉ có thể sử dụng GAID cho các hoạt động cơ bản: ghi nhận cài đặt, phân tích, chống gian lận, giới hạn tần suất. Cá nhân hóa quảng cáo, tạo hồ sơ người dùng và nhắm mục tiêu lại dựa trên GAID đều bị cấm trong trường hợp này.
Google khuyến nghị không cố gắng vượt qua cờ isLimitAdTrackingEnabled thông qua các mã định danh thay thế (IMEI, địa chỉ MAC, Android ID). Việc sử dụng mã định danh phần cứng vĩnh viễn bị nghiêm cấm bởi chính sách Google Play và dẫn đến đình chỉ ứng dụng ngay lập tức mà không có khả năng kháng cáo.
Lấy GAID trên Android yêu cầu gọi AdvertisingIdClient bất đồng bộ với xử lý các ngoại lệ có thể xảy ra. Dưới đây là ví dụ hoàn chỉnh bằng Kotlin sử dụng coroutines.
Ví dụ minh họa việc lấy mã định danh quảng cáo và kiểm tra cờ isLimitAdTrackingEnabled bằng coroutines và try-catch để xử lý lỗi 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 Services không khả dụng — sử dụng ID thay thế
null
} catch (e: IOException) {
// Lỗi mạng khi truy cập dịch vụ
null
}
}
}
// Sử dụng trong Activity hoặc ViewModel
fun onGaidRequested() {
lifecycleScope.launch {
val info = getAdvertisingInfo(this@MainActivity)
setupAdNetwork(
gaid = info?.gaid,
limitTracking = info?.isLimitAdTrackingEnabled ?: true
)
}
}
Hiểu được sự khác biệt giữa các mã định danh quảng cáo trên các nền tảng khác nhau là rất quan trọng đối với nhà phát triển làm việc với ghi nhận quảng cáo trên cả hai HĐH. Dưới đây là so sánh các khía cạnh chính của GAID, AAID và IDFA.
Sự khác biệt chính giữa GAID và IDFA là cơ chế lấy. IDFA yêu cầu sự đồng ý rõ ràng qua ATT, nếu không có thì mã định danh null được trả về. GAID có sẵn mà không cần hộp thoại hệ thống, nhưng từ Android 14+ yêu cầu khai báo quyền AD_ID trong tệp kê khai. GAID cũng có hệ thống cờ linh hoạt hơn: isLimitAdTrackingEnabled không chặn việc lấy mã định danh, nó chỉ báo hiệu cho ứng dụng hạn chế sử dụng.
Theo Adjust (2025), khả năng khả dụng của GAID trên Android là 98% thiết bị đang hoạt động so với 20–35% khả dụng của IDFA trên iOS. Điều này làm cho Android trở thành nền tảng dễ dự đoán hơn cho ghi nhận quảng cáo, nhưng việc thắt chặt chính sách của Google đang dần thu hẹp khoảng cách này.
AAID, không giống như GAID, không phụ thuộc vào Google Play Services và có thể được sử dụng trên thiết bị Huawei (HMS), Amazon Fire OS và các nhà sản xuất Trung Quốc. Trên thiết bị Huawei, AAID được triển khai thông qua Huawei Mobile Services (HMS) với lớp AdvertisingIdClient từ gói com.huawei.hms.ads.identifier. Đối với thị trường Trung Quốc, OAID (Open Anonymous ID) cũng phổ biến — một tiêu chuẩn được phát triển bởi liên minh các nhà sản xuất Trung Quốc để thay thế GAID trên các thiết bị không có dịch vụ Google. Việc chọn API phù hợp để lấy mã định danh ảnh hưởng trực tiếp đến khả năng ghi nhận quảng cáo trên các thị trường khác nhau.
Câu hỏi thường gặp
GAID (Google Advertising ID) là mã định danh quảng cáo cho thiết bị có Google Play Services. AAID (Android Advertising ID) là thuật ngữ chung cho mã định danh quảng cáo Android, bao gồm thiết bị không có dịch vụ Google (Huawei, Amazon Fire). GAID được lấy qua Google Play, AAID qua SDK của cửa hàng ứng dụng tương ứng.
Có, bắt đầu từ Android 14 (API 34) cần chỉ định quyền AD_ID trong tệp kê khai. Nếu ứng dụng có targetSdkVersion 34+ và không chỉ định AD_ID, AdvertisingIdClient trả về mã định danh null. Quyền được chỉ định qua thẻ
Có, người dùng có thể đặt lại GAID bất kỳ lúc nào qua Cài đặt — Google — Quảng cáo — Đặt lại mã định danh quảng cáo. Sau khi đặt lại, tất cả ứng dụng nhận được mã định danh mới và liên kết với lịch sử tương tác quảng cáo bị mất.
OAID (Open Anonymous ID) là một tiêu chuẩn mã định danh quảng cáo được phát triển bởi liên minh các nhà sản xuất điện thoại thông minh Trung Quốc (Xiaomi, OPPO, vivo, Huawei). Nó được sử dụng trên thiết bị không có Google Play Services cho thị trường Trung Quốc. Không giống như GAID, OAID không yêu cầu Google Play và hoạt động qua SDK của nhà sản xuất thiết bị.
Nếu isLimitAdTrackingEnabled là true, ứng dụng không thể sử dụng GAID để cá nhân hóa quảng cáo, tạo hồ sơ người dùng và nhắm mục tiêu lại. Tuy nhiên, mã định danh có thể được sử dụng cho các mục đích hạn chế: ghi nhận cài đặt, phân tích, chống gian lận và giới hạn tần suất.
Tổng kết
Chúng tôi sẽ phát triển ứng dụng di động chìa khóa trao tay
IT Sectr tạo các ứng dụng iOS và Android cho các công ty khởi nghiệp và doanh nghiệp từ năm 2017. Chúng tôi sẽ tư vấn và đề xuất giải pháp tốt nhất cho bạn.