Apakah itu GAID dan bagaimana cara mendapatkannya secara atur cara? Google Advertising ID (GAID) ialah pengecam perisian yang boleh ditetapkan semula oleh pengguna yang disediakan oleh perkhidmatan Google Play untuk ukuran pengiklanan, diambil secara atur cara di luar benang utama menggunakan API AdvertisingIdClient selepas memastikan manifest apl gabungan mengandungi kebenaran AD_ID apabila diperlukan.
Google Advertising ID (GAID), juga dikenali sebagai Android Advertising ID (AAID), ialah rentetan unik yang boleh ditetapkan semula oleh pengguna yang disediakan oleh perkhidmatan Google Play untuk atribusi pengiklanan, sasaran iklan yang dipersonalisasi dan analitik pada peranti Android. Apl yang mensasarkan Android 13 (peringkat API 33) atau lebih tinggi mesti memastikan manifest gabungan mengandungi kebenaran
com.google.android.gms.permission.AD_IDapabila mereka mengakses ID Pengiklanan perkhidmatan Google Play; jika tidak, API akan mengembalikan nilai semua sifar.
| Terma | Definisi |
|---|---|
| GAID | Google Advertising ID yang disediakan oleh perkhidmatan Google Play untuk ukuran iklan. |
| AdvertisingIdClient | API perkhidmatan Google Play yang digunakan untuk menyoal metadata pengecam pengiklanan. |
| Kebenaran AD_ID | Kebenaran manifest Android yang diperlukan untuk apl yang mensasarkan peringkat API 33+ apabila mengakses ID Pengiklanan perkhidmatan Google Play. |
| Pengecam Bernilai Sifar | Nilai sentinel semua sifar (00000000-0000-0000-0000-000000000000) yang dikembalikan apabila ID Pengiklanan tidak tersedia atau ditahan. |
Apakah GAID dan Bagaimana Google Advertising ID Beroperasi
Anatomi Teknikal ID Pengiklanan
Google Advertising ID (GAID) dikembalikan oleh perkhidmatan Google Play sebagai rentetan pengecam legap yang biasanya diformatkan sebagai UUID heksadesimal huruf kecil 128-bit (cth., 38400000-8cf0-11bd-b23e-10b96e4ef00d). Aplikasi harus merawat rentetan yang dikembalikan sebagai pengecam legap daripada menyimpulkan logik perniagaan daripada pemformatannya.
Tidak seperti pengecam peringkat perkakasan, GAID direka bentuk dengan kawalan privasi yang jelas:
- Boleh Ditetapkan Semula oleh Pengguna: Pengguna boleh menjana pengecam rawak baharu pada bila-bila masa melalui tetapan peranti.
- Boleh Dihapuskan oleh Pengguna: Bermula dalam Android 12, pengguna boleh menghapuskan ID pengiklanan mereka, mengarahkan perkhidmatan Google Play untuk menahan pengecam pengiklanan daripada semua apl.
- Skop Peranti Setiap Profil: ID Pengiklanan secara amnya tersedia merentas apl untuk profil pengguna peranti yang sama, tetapi profil pengguna atau tetamu Android yang berbeza pada peranti fizikal yang sama menerima pengecam pengiklanan yang berbeza.
Peranan Perkhidmatan Google Play dalam Menguruskan Status Pengecam
GAID bukan sebahagian daripada rangka kerja Android sumber terbuka teras. Ia adalah perkhidmatan peringkat aplikasi yang diuruskan dan disajikan secara dinamik oleh perpustakaan pelanggan perkhidmatan Google Play proprietari (com.google.android.gms:play-services-ads-identifier).
Apabila aplikasi memanggil perkhidmatan Google Play, pelanggan melakukan komunikasi menyekat dengan perkhidmatan Google Play untuk mendapatkan semula pengecam pengiklanan semasa dan keutamaan had penjejakan iklan pengguna.
Mengapa GAID Menggantikan Pengecam Perkakasan
Dalam keluaran Android awal, rangkaian iklan dan pembangun menjejaki acara penukaran menggunakan pengecam perkakasan yang tidak boleh ditetapkan semula:
- Identiti Peralatan Mudah Alih Antarabangsa (IMEI): Terikat pada perkakasan selular peranti.
- Alamat Kawalan Akses Media (MAC): Terikat pada perkakasan antara muka rangkaian.
- ANDROID_ID (SSAID): Pada keluaran Android 8.0+ moden, pengecam ini disskopkan setiap gabungan kekunci penandatanganan apl, pengguna dan peranti daripada berfungsi sebagai kunci pengiklanan silang apl universal.
Untuk kes penggunaan pengiklanan di Google Play, pembangun mesti menggunakan ID Pengiklanan apabila ia tersedia daripada menggantikan pengecam peranti berterusan yang lain.
Lihat Juga: GAID ──> Arkitektur Atribusi Mudah Alih
Keperluan Kebenaran Android 13: Pengisytiharan Manifest AD_ID
Model Penguatkuasaan Peringkat API 33
Bermula dengan Android 13 (peringkat API 33), Google memperkenalkan kebenaran com.google.android.gms.permission.AD_ID:
- SDK Sasaran 33 dan Ke Atas: Aplikasi yang mensasarkan Android 13 atau lebih tinggi mesti mengisytiharkan kebenaran
AD_IDdalam manifest mereka. Jika kebenaran ditinggalkan, perkhidmatan Google Play mengembalikan rentetan sifar (00000000-0000-0000-0000-000000000000). - SDK Sasaran 32 dan Ke Bawah: Kebenaran
AD_IDtidak diperlukan dalam manifest. Walau bagaimanapun, ID Pengiklanan masih boleh tidak tersedia atau bernilai sifar kerana tetapan privasi ID pengiklanan pengguna, termasuk had penjejakan iklan atau status penyingkiran. - Pengisytiharan Dasar Gedung Play: Apabila menyerahkan kemas kini yang mensasarkan peringkat API 33+, pembangun mesti melengkapkan pengisytiharan ID Pengiklanan semasa dalam Konsol Google Play, melaporkan dengan tepat sama ada dan cara apl menggunakan pengecam tersebut.

Mengkonfigurasi AndroidManifest.xml dan Kebergantungan Gradle
Untuk mengisytiharkan kebenaran, sertakan tag <uses-permission> di dalam AndroidManifest.xml. Dalam fail build.gradle modul apl anda, tambahkan kebergantungan rasmi play-services-ads-identifier.
Konfigurasi di bawah menunjukkan sintaks kebenaran manifest dan persediaan kebergantungan Gradle:
```xml
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.myapp">
<!-- Diperlukan pada API 33+ untuk mengakses GAID bukan sifar -->
<uses-permission android:name="com.google.android.gms.permission.AD_ID"/>
<application
android:allowBackup="true"
android:label="@string/app_name"
android:theme="@style/Theme.MyApp">
<!-- Komponen Aplikasi -->
</application>
</manifest>
// Lokasi: app/build.gradle
// Nota: Versi kebergantungan contoh ditunjukkan; sahkan keluaran stabil semasa dalam repositori rasmi sebelum kegunaan pengeluaran.
dependencies {
// Perpustakaan Pengenal Iklan perkhidmatan Google Play rasmi
implementation 'com.google.android.gms:play-services-ads-identifier:18.0.1'
// Coroutine Kotlin untuk pelaksanaan tak segerak di luar benang utama
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3'
}
Memahami Penggabungan Manifest: Suntikan SDK Transitif
Apabila membina APK Android atau Android App Bundle (AAB), sistem binaan Gradle menggabungkan manifest daripada semua perpustakaan pihak ketiga yang diimport ke dalam satu fail akhir AndroidManifest.xml.
Jika SDK rangkaian iklan yang diimport, alat analitik atau perpustakaan atribusi mengisytiharkan com.google.android.gms.permission.AD_ID dalam manifest dalamannya, kebenaran tersebut digabungkan secara automatik ke dalam binaan akhir anda. Pembangun boleh memeriksa app/build/outputs/logs/manifest-merger-release-report.txt untuk mengaudit kebergantungan yang memperkenalkan kebenaran tersebut.
Pengambilan Semula Atur Cara: Mendapatkan GAID melalui AdvertisingIdClient dalam Kotlin
Peraturan Pelaksanaan Wajib Di Luar Benang Utama
Memanggil AdvertisingIdClient.getAdvertisingIdInfo(context) memulakan panggilan segerak kepada perkhidmatan Google Play. Google melarang secara jelas pelaksanaan kaedah ini pada benang utama (UI).
Memanggil getAdvertisingIdInfo() pada benang utama membuang IllegalStateException serta-merta:
java.lang.IllegalStateException: Memanggil ini daripada benang utama anda boleh menyebabkan kebuntuan (deadlock)
Untuk mengelakkan ralat ANR (Aplikasi Tidak Responsif) aplikasi dan keruntuhan masa runcit, pembangun mesti menghantar panggilan pengekstrakan di dalam pekerja latar belakang atau Coroutine Kotlin menggunakan Dispatchers.IO.

Melaksanakan Tugas Pekerja Latar Belakang Menggunakan Coroutine Kotlin
Pelaksanaan Kotlin di bawah menunjukkan AdvertisingIdManager yang selamat benang yang melaksanakan pengekstrakan di luar benang utama, mengendalikan pengecualian ketersediaan perkhidmatan Google Play, dan mengesahkan integriti pengecam:
package com.example.myapp.analytics
import android.content.Context
import android.util.Log
import com.google.android.gms.ads.identifier.AdvertisingIdClient
import com.google.android.gms.common.GooglePlayServicesNotAvailableException
import com.google.android.gms.common.GooglePlayServicesRepairableException
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.withContext
import java.io.IOException
data class GaidResult(
val gaid: String?,
val isLimitAdTrackingEnabled: Boolean,
val isZeroed: Boolean,
val isAvailable: Boolean
)
object AdvertisingIdManager {
private const val TAG = "AdvertisingIdManager"
private const val ZEROED_GAID = "00000000-0000-0000-0000-000000000000"
/**
* Mendapatkan semula Google Advertising ID secara atur cara di luar benang pelaksanaan utama.
* Mengendalikan pengecualian, status bernilai sifar, dan pilihan keluar pengguna secara automatik.
*/
suspend fun fetchGaid(context: Context): GaidResult = withContext(Dispatchers.IO) {
try {
// Memanggil IPC perkhidmatan Google Play penyekatan pada penghantar coroutine IO
val adInfo: AdvertisingIdClient.Info = AdvertisingIdClient.getAdvertisingIdInfo(context)
val rawId = adInfo.id
val isLAT = adInfo.isLimitAdTrackingEnabled
val isZeroed = rawId == null || rawId.equals(ZEROED_GAID, ignoreCase = true)
if (isZeroed) {
Log.w(TAG, "ID Pengiklanan tidak tersedia atau bernilai sifar.")
GaidResult(
gaid = null,
isLimitAdTrackingEnabled = isLAT,
isZeroed = true,
isAvailable = false
)
} else {
Log.d(TAG, "ID Pengiklanan berjaya didapatkan semula. LAT diaktifkan: $isLAT")
GaidResult(
gaid = rawId,
isLimitAdTrackingEnabled = isLAT,
isZeroed = false,
isAvailable = true
)
}
} catch (e: GooglePlayServicesNotAvailableException) {
Log.e(TAG, "Perkhidmatan Google Play tidak dipasang atau tidak tersedia pada peranti ini.", e)
GaidResult(gaid = null, isLimitAdTrackingEnabled = true, isZeroed = false, isAvailable = false)
} catch (e: GooglePlayServicesRepairableException) {
Log.w(TAG, "Perkhidmatan Google Play memerlukan kemas kini atau pemulihan pengguna.", e)
GaidResult(gaid = null, isLimitAdTrackingEnabled = true, isZeroed = false, isAvailable = false)
} catch (e: IOException) {
Log.e(TAG, "Ralat komunikasi menyambung ke perkhidmatan Google Play.", e)
GaidResult(gaid = null, isLimitAdTrackingEnabled = true, isZeroed = false, isAvailable = false)
} catch (e: IllegalStateException) {
Log.e(TAG, "Keadaan haram semasa mendapatkan semula ID Pengiklanan.", e)
GaidResult(gaid = null, isLimitAdTrackingEnabled = true, isZeroed = false, isAvailable = false)
} catch (e: Exception) {
Log.e(TAG, "Ralat tidak dijangka semasa mendapatkan semula Google Advertising ID.", e)
GaidResult(gaid = null, isLimitAdTrackingEnabled = true, isZeroed = false, isAvailable = false)
}
}
}
Mengkhasai AdvertisingIdClient.Info dan Mengendalikan Had Penjejakan Iklan
Kaedah AdvertisingIdClient.getAdvertisingIdInfo() mengembalikan objek AdvertisingIdClient.Info yang mengandungi dua sifat utama:
getId()(Rentetan): Rentetan abjad angka yang mewakili pengecam pengiklanan.isLimitAdTrackingEnabled()(Boolean): Apabila had penjejakan iklan diaktifkan, dasar Google Play melarang penggunaan data ID Pengiklanan untuk mencipta profil pengiklanan atau menyasarkan iklan peribadi. Dasar ini masih membenarkan aktiviti seperti pengiklanan konteks, pembatasan kekerapan, penjejakan penukaran, pelaporan, dan pengesanan keselamatan/penipuan; walau bagaimanapun, pada perkhidmatan Google Play semasa, ID Pengiklanan itu sendiri bernilai sifar apabila tetapan ini diaktifkan, jadi aplikasi tidak seharusnya menganggap GAID yang boleh digunakan kekal tersedia.
Mengendalikan Pengecam Bernilai Sifar dan Status Penyingkiran Dimulakan Pengguna
Rentetan 00000000-0000-0000-0000-000000000000: Bila dan Mengapa Ia Muncul
Dalam persekitaran pengeluaran, AdvertisingIdClient.Info.getId() mengembalikan 00000000-0000-0000-0000-000000000000 apabila:
- Pengguna Menghapuskan ID Pengiklanan: Pengguna menavigasi ke tetapan peranti dan menghapuskan ID pengiklanan mereka.
- Had Penjejakan Iklan Diaktifkan: Pengguna mengaktifkan had penjejakan iklan pada versi OS yang disokong.
- Kebenaran Manifest Hilang: Aplikasi mensasarkan Android 13+ (peringkat API 33+) dan gagal mengisytiharkan
com.google.android.gms.permission.AD_IDdalam manifest gabungannya.

Aliran Kerja Tetapan Pengguna: Menghapuskan ID Pengiklanan
Pengguna pada keluaran Android semasa boleh mengalih keluar pengecam mereka dengan menavigasi ke:
Tetapan > Privasi > Iklan > Hapuskan ID pengiklanan (label tepat mungkin berbeza mengikut OEM peranti).
Apabila dihapuskan, perkhidmatan Google Play membersihkan nilai asas. Panggilan API seterusnya merentas semua apl yang dipasang mengembalikan rentetan bernilai sifar.
Keperluan Dasar Google Play untuk Tetapan Semula dan Status Penyingkiran
Menurut Dasar Pembangun Google Play mengenai ID Pengiklanan, pembangun mesti mengendalikan tindakan privasi pengguna mengikut peraturan yang jelas:
- Keperluan Tetapan Semula: Apabila pengguna menetapkan semula ID Pengiklanan mereka, pembangun tidak boleh merapatkan atau menyambungkan ID Pengiklanan baharu kepada ID Pengiklanan sebelumnya atau data yang diterbitkan daripadanya tanpa persetujuan pengguna yang jelas.
- Keperluan Penyingkiran: Apabila pengguna menghapuskan ID Pengiklanan mereka, pembangun tidak boleh menyambungkan peranti tersebut kepada data yang dipautkan kepada atau diterbitkan daripada ID Pengiklanan sebelumnya.
Membersihkan Input Pengecam dalam Saluran Pengambilan Hiliran
Enjin atribusi bahagian belakang mesti melaksanakan penapis pengesahan untuk mengelakkan rentetan bernilai sifar daripada mencemarkan pangkalan data atribusi:
fun isGaidValid(gaid: String?): Boolean {
if (gaid.isNullOrBlank()) return false
val zeroedGaid = "00000000-0000-0000-0000-000000000000"
return !gaid.equals(zeroedGaid, ignoreCase = true)
}
Jika pengecam bernilai sifar dikesan, sistem hiliran tidak boleh merawatnya sebagai GAID yang boleh digunakan atau kunci padanan pengecam; sebarang pemprosesan atribusi atau analitik harus bergantung hanya pada isyarat lain yang dibenarkan secara bebas.
Dasar Keluarga Google Play dan Sekatan Kategori Apl
Amalan Data dalam Apl Keluarga
Google Play menguatkuasakan peraturan perlindungan data yang ketat untuk aplikasi yang menyertai program Keluarga atau mensasarkan kanak-kanak:
- Larangan Menghantar AAID: Aplikasi yang menyasarkan kanak-kanak sahaja tidak boleh menghantar ID Pengiklanan (AAID). Untuk apl yang mensasarkan peringkat API 33 atau lebih tinggi, Google mengesyorkan agar meninggalkan atau melumpuhkan kebenaran
AD_IDsebagai mekanisme pematuhan yang mudah. - Pengendalian Khalayak Campuran: Aplikasi yang mensasarkan kedua-dua kanak-kanak dan khalayak lebih tua tidak boleh menghantar AAID daripada kanak-kanak atau pengguna yang tidak diketahui umurnya. Secara lalai, apl dan SDK harus mengelak daripada menghantar AAID sehingga pengesahan umur mengesahkan pengguna bukan kanak-kanak.
Menggunakan tools:node=“remove” dalam Manifest
Jika aplikasi anda mensasarkan kanak-kanak, tetapi SDK pihak ketiga yang diimport menyuntik kebenaran AD_ID secara automatik melalui penggabungan manifest, tambahkan atribut tools:node="remove" dalam AndroidManifest.xml utama anda:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.example.familyapp">
<!-- Alih keluar secara eksplisit AD_ID yang disuntik oleh kebergantungan transitif -->
<uses-permission
android:name="com.google.android.gms.permission.AD_ID"
tools:node="remove"/>
</manifest>
Alternatif Ukuran Khusus Kes Kegunaan Apabila GAID Tidak Tersedia
Apabila GAID bernilai sifar, dihapuskan, atau disekat oleh dasar, pasukan kejuruteraan menggunakan alternatif khusus kes kegunaan berdasarkan objektif fungsi mereka:
- Atribusi Kempen: Gunakan API Google Play Install Referrer untuk mendapatkan semula parameter kempen yang diantarai kedai yang diluluskan melalui URL Gedung Play (
referrer=...). Beroperasi secara bebas daripada penyingkiran GAID. - Penyertaan dan Niat Pengguna: Gunakan penghalaan parameter konteks pihak pertama untuk memulihkan token rujukan, kod promo, dan destinasi pautan mendalam yang diluluskan daripada halaman pendaratan web.
- Analitik dan Penipuan Berskop Pembangun: Gunakan App Set ID (
AppSetIdClient) untuk menjana pengecam berkongsi merentas apl yang diterbitkan di bawah akaun pembangun yang sama, tanpa penjejakan pengiklanan silang apl.
GAID Tidak Tersedia atau Bernilai Sifar
│
┌───────────────────────┼───────────────────────┐
│ │ │
▼ ▼ ▼
Kempen Berbayar Penyertaan & Milik-Pembangun
Atribusi Niat Rujukan Analitik & Penipuan
│ │ │
▼ ▼ ▼
Google Play Pihak-Pertama App Set ID
Install Referrer Konteks (Skop-Pembangun
(URL Gedung) Penghalaan atau Skop-Apl)

Matrik Perbandingan: GAID berbanding Install Referrer berbanding App Set ID
| Dimensi | Google Advertising ID (GAID) | Google Play Install Referrer | App Set ID (AppSet) |
|---|---|---|---|
| Jenis Pengecam | UUID Pengiklanan Silang Apl Boleh Ditetapkan Semula | Rentetan Parameter Kempen Diantarai Kedai | Pengecam skop pembangun atau apl, bergantung pada konteks pemasangan dan perkhidmatan Play |
| Kebenaran Manifest | com.google.android.gms.permission.AD_ID |
Tiada | Tiada |
| Kesan Penyingkiran Pengguna | Mengembalikan Rentetan Sifar | Bebas daripada penyingkiran GAID | Boleh ditetapkan semula selepas 13 bulan tanpa akses API, apabila apl terakhir dalam set dinyahpasang, atau selepas tetapan semula kilang |
| Kes Kegunaan Utama | Atribusi iklan silang apl & penargetan semula | Penjejakan prestasi kempen Gedung Play | Pengesanan penipuan & analitik milik pembangun |
| Kesesuaian Dasar Keluarga | Tidak boleh dihantar daripada kanak-kanak | Tidak tertakluk kepada larangan penghantaran khusus AAID; penggunaan mesti tetap mematuhi dasar Keluarga yang berkenaan | Galakan oleh Google untuk analitik dalam apl Keluarga |
Soalan Lazim (FAQ)
Mengapa memanggil AdvertisingIdClient mengalami kerosakan dengan IllegalStateException?
Apakah yang berlaku jika apl mensasarkan Android 13 dan tidak mengisytiharkan kebenaran AD_ID?
Bagaimanakah saya boleh mengalih keluar kebenaran AD_ID yang disuntik oleh kebergantungan SDK pihak ketiga?
Rangka Kerja Ringkasan dan Keputusan
Google Advertising ID kekal sebagai pengecam boleh ditetapkan semula yang penting untuk kes penggunaan pengiklanan Android dan analitik pengguna, tetapi beroperasi pada Android 13+ memerlukan pematuhan terhadap dasar kebenaran manifest, piawaian pelaksanaan latar belakang, dan pengendalian anggun bagi status pengecam bernilai sifar. Apabila GAID tidak tersedia, pasukan kejuruteraan harus memilih primitif ukuran berdasarkan kes kegunaan tertentu—contohnya, Install Referrer untuk atribusi kempen Gedung Play, parameter konteks pihak pertama untuk status penyertaan, atau App Set ID untuk analitik milik pembangun dan senario pencegahan penipuan.
Untuk meneroka corak pelaksanaan untuk atribusi Android dan saluran pautan mendalam, semak dokumentasi OpoInstall.
Bahan Berkaitan
-
Konsep: Kitaran Hayat ID Pengiklanan, Kebenaran Manifest AD_ID, Pengekstrakan Benang Latar Belakang, Pengendalian Pengecam Bernilai Sifar
-
Teknologi: Perkhidmatan Google Play, API AdvertisingIdClient, API Google Play Install Referrer, SDK Android OpoInstall
-
Piawaian: Dasar Pembangun Google Play, Perubahan Tingkah Laku Android 13, Piawaian UUID IETF RFC 4122
-
API & Kelas:
AdvertisingIdClient,AdvertisingIdClient.Info,AppSetIdClient, API Konteks OpoInstall
Dokumentasi Rasmi
Share this article



