GAID คืออะไรและจะดึงข้อมูลด้วยโปรแกรมได้อย่างไร? Google Advertising ID (GAID) คือรหัสซอฟต์แวร์ที่ผู้ใช้สามารถรีเซ็ตได้ ซึ่งให้บริการโดย Google Play services สำหรับการวัดผลโฆษณา โดยจะดึงข้อมูลผ่านโปรแกรมนอกเธรดหลักด้วย AdvertisingIdClient API หลังจากตรวจสอบให้แน่ใจว่าไฟล์ manifest ของแอปที่ผสานกันมีสิทธิ์ AD_ID เมื่อจำเป็น
Google Advertising ID (GAID) หรือที่รู้จักกันในชื่อ Android Advertising ID (AAID) คือสตริงที่ไม่ซ้ำกันซึ่งผู้ใช้สามารถรีเซ็ตได้ โดยให้บริการโดย Google Play services สำหรับการระบุแหล่งที่มาของโฆษณา การกำหนดเป้าหมายโฆษณาเฉพาะบุคคล และการวิเคราะห์บนอุปกรณ์ Android แอปที่กำหนดเป้าหมาย Android 13 (API ระดับ 33) ขึ้นไปจะต้องตรวจสอบให้แน่ใจว่าไฟล์ manifest ที่ผสานแล้วมีสิทธิ์
com.google.android.gms.permission.AD_IDเมื่อเข้าถึงรหัสโฆษณาของ Google Play services มิฉะนั้น API จะส่งค่าเป็นศูนย์ทั้งหมดกลับมา
| คำศัพท์ | คำนิยาม |
|---|---|
| GAID | Google Advertising ID ที่ให้บริการโดย Google Play services สำหรับการวัดผลโฆษณา |
| AdvertisingIdClient | API ของ Google Play services ที่ใช้ในการคิวรีข้อมูลเมตาของรหัสโฆษณา |
| สิทธิ์ AD_ID | สิทธิ์ในไฟล์ Android manifest ที่จำเป็นสำหรับแอปที่กำหนดเป้าหมาย API ระดับ 33 ขึ้นไปเมื่อเข้าถึงรหัสโฆษณาของ Google Play services |
| รหัสที่เป็นค่าศูนย์ | ค่าเซนติเนลที่เป็นศูนย์ทั้งหมด (00000000-0000-0000-0000-000000000000) ที่ส่งคืนเมื่อรหัสโฆษณาไม่พร้อมใช้งานหรือไม่ถูกเปิดเผย |
GAID คืออะไรและ Google Advertising ID ทำงานอย่างไร
โครงสร้างทางเทคนิคของรหัสโฆษณา
Google Advertising ID (GAID) จะถูกส่งกลับโดย Google Play services เป็นสตริงรหัสทึบแสง ซึ่งมักจะอยู่ในรูปแบบ UUID แบบเลขฐานสิบหกตัวพิมพ์เล็ก 128 บิต (เช่น 38400000-8cf0-11bd-b23e-10b96e4ef00d) แอปพลิเคชันควรปฏิบัติกับสตริงที่ส่งคืนเสมือนเป็นรหัสทึบแสง แทนที่จะอนุมานลอจิกทางธุรกิจจากรูปแบบของมัน
ต่างจากรหัสระดับฮาร์ดแวร์ GAID ถูกออกแบบมาพร้อมกับการควบคุมความเป็นส่วนตัวที่ชัดเจน:
- ผู้ใช้สามารถรีเซ็ตได้: ผู้ใช้สามารถสร้างรหัสสุ่มใหม่ได้ตลอดเวลาผ่านการตั้งค่าอุปกรณ์
- ผู้ใช้สามารถลบได้: เริ่มตั้งแต่ Android 12 เป็นต้นมา ผู้ใช้สามารถลบรหัสโฆษณาของตนได้ ซึ่งเป็นการสั่งให้ Google Play services ระงับการส่งรหัสโฆษณาไปยังแอปทั้งหมด
- ขอบเขตอุปกรณ์ต่อโปรไฟล์: โดยทั่วไปแล้วรหัสโฆษณาจะใช้งานได้ทั่วทั้งแอปสำหรับโปรไฟล์ผู้ใช้เดียวกันบนอุปกรณ์ แต่โปรไฟล์ผู้ใช้หรือแขก Android ที่แตกต่างกันบนอุปกรณ์ทางกายภาพเครื่องเดียวกันจะได้รับรหัสโฆษณาที่แตกต่างกัน
บทบาทของ Google Play Services ในการจัดการสถานะของรหัส
GAID ไม่ได้เป็นส่วนหนึ่งของเฟรมเวิร์ก Android แบบโอเพนซอร์สหลัก แต่เป็นบริการระดับแอปพลิเคชันที่จัดการและให้บริการแบบไดนามิกโดยไลบรารีไคลเอ็นต์ Google Play services ที่เป็นกรรมสิทธิ์ (com.google.android.gms:play-services-ads-identifier)
เมื่อแอปพลิเคชันเรียกใช้ Google Play services ไคลเอ็นต์จะทำการสื่อสารแบบบล็อกกิ้งกับ Google Play services เพื่อดึงรหัสโฆษณาปัจจุบันและการตั้งค่าจำกัดการติดตามโฆษณาของผู้ใช้
เหตุใด GAID จึงเข้ามาแทนที่รหัสฮาร์ดแวร์
ในรุ่น Android ยุคแรกๆ เครือข่ายโฆษณาและนักพัฒนาจะติดตามเหตุการณ์การแปลงโดยใช้รหัสฮาร์ดแวร์ที่ไม่สามารถรีเซ็ตได้:
- International Mobile Equipment Identity (IMEI): ผูกติดกับฮาร์ดแวร์เซลลูลาร์ของอุปกรณ์
- Media Access Control (MAC) Address: ผูกติดกับฮาร์ดแวร์อินเทอร์เฟซเครือข่าย
- ANDROID_ID (SSAID): บน Android 8.0+ รุ่นใหม่ รหัสนี้จะมีขอบเขตต่อการผสมผสานระหว่างคีย์การเซ็นชื่อแอป ผู้ใช้ และอุปกรณ์ แทนที่จะทำหน้าที่เป็นคีย์โฆษณาข้ามแอปสากล
สำหรับกรณีการใช้งานด้านโฆษณาบน Google Play นักพัฒนาต้องใช้รหัสโฆษณาเมื่อใช้งานได้ แทนที่จะใช้รหัสอุปกรณ์ถาวรตัวอื่นมาแทนที่
ดูเพิ่มเติม: GAID ──> สถาปัตยกรรมระบุแหล่งที่มาบนมือถือ
ข้อกำหนดสิทธิ์ของ Android 13: การประกาศ Manifest ของ AD_ID
โมเดลการบังคับใช้ระดับ API 33
เริ่มต้นด้วย Android 13 (API ระดับ 33) ทาง Google ได้introduced สิทธิ์ com.google.android.gms.permission.AD_ID:
- Target SDK 33 ขึ้นไป: แอปพลิเคชันที่กำหนดเป้าหมาย Android 13 หรือสูงกว่าจะต้องประกาศสิทธิ์
AD_IDในไฟล์ manifest หากละเว้นสิทธิ์นี้ Google Play services จะส่งคืนสตริงที่เป็นศูนย์ (00000000-0000-0000-0000-000000000000) - Target SDK 32 ลงมา: ไม่จำเป็นต้องมีสิทธิ์
AD_IDในไฟล์ manifest อย่างไรก็ตาม รหัสโฆษณายังคงอาจไม่พร้อมใช้งานหรือเป็นศูนย์เนื่องจากการตั้งค่าความเป็นส่วนตัวของรหัสโฆษณาของผู้ใช้ รวมถึงสถานะการจำกัดการติดตามโฆษณาหรือการลบ - การประกาศนโยบาย Play Store: เมื่อส่งการอัปเดตที่กำหนดเป้าหมาย API ระดับ 33+ นักพัฒนาจะต้องกรอกการประกาศรหัสโฆษณาปัจจุบันใน Google Play Console ให้เสร็จสิ้น โดยรายงานอย่างถูกต้องว่าแอปใช้รหัสนี้หรือไม่และอย่างไร

การกำหนดค่า AndroidManifest.xml และการพึ่งพา Gradle
หากต้องการประกาศสิทธิ์ ให้ใส่แท็ก <uses-permission> ไว้ภายใน AndroidManifest.xml ในไฟล์ build.gradle ของโมดูลแอปของคุณ ให้เพิ่มการพึ่งพา play-services-ads-identifier อย่างเป็นทางการ
การกำหนดค่าด้านล่างแสดงไวยากรณ์สิทธิ์ของ manifest และการตั้งค่าการพึ่งพา Gradle:
```xml
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.myapp">
<!-- จำเป็นต้องใช้บน API 33+ เพื่อเข้าถึง GAID ที่ไม่ใช่ศูนย์ -->
<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">
<!-- ส่วนประกอบของแอปพลิเคชัน -->
</application>
</manifest>
// ตำแหน่ง: app/build.gradle
// หมายเหตุ: แสดงเวอร์ชันการพึ่งพาตัวอย่าง โปรดตรวจสอบรุ่นเสถียรปัจจุบันในที่เก็บข้อมูลอย่างเป็นทางการก่อนนำไปใช้งานจริง
dependencies {
// ไลบรารี Ads Identifier อย่างเป็นทางการของ Google Play services
implementation 'com.google.android.gms:play-services-ads-identifier:18.0.1'
// Kotlin Coroutines สำหรับการทำงานแบบอะซิงโครนัสนอกเธรดหลัก
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.7.3'
}
ทำความเข้าใจกับการผสาน Manifest: การฉีด SDK ทางอ้อม
เมื่อสร้าง APK ของ Android หรือ Android App Bundle (AAB) ระบบบิลด์ Gradle จะผสานไฟล์ manifest จากไลบรารีของบุคคลที่สามที่นำเข้าทั้งหมดเข้าเป็นไฟล์ AndroidManifest.xml หลักไฟล์เดียว
หาก SDK ของเครือข่ายโฆษณา เครื่องมือวิเคราะห์ หรือไลบรารีระบุแหล่งที่มาที่นำเข้าประกาศ com.google.android.gms.permission.AD_ID ไว้ใน manifest ภายใน สิทธิ์นั้นจะถูกผสานเข้ากับการสร้างบิลด์หลักของคุณโดยอัตโนมัติ นักพัฒนาสามารถตรวจสอบ app/build/outputs/logs/manifest-merger-release-report.txt เพื่อตรวจสอบว่าการพึ่งพาใดเป็นตัวนำสิทธิ์ดังกล่าวเข้ามา
การดึงข้อมูลด้วยโปรแกรม: การดึง GAID ผ่าน AdvertisingIdClient ใน Kotlin
กฎข้อบังคับในการ执行นอกเธรดหลัก (Main-Thread Execution Rule)
การเรียกใช้ AdvertisingIdClient.getAdvertisingIdInfo(context) จะเป็นการเริ่มต้นการเรียกใช้งานแบบซิงโครนัสไปยัง Google Play services โดย Google ห้ามมิให้ดำเนินการเมธอดนี้บนเธรดหลัก (UI) อย่างเด็ดขาด
การเรียก getAdvertisingIdInfo() บนเธรดหลักจะทำให้เกิดข้อยกเว้น IllegalStateException ทันที:
java.lang.IllegalStateException: Calling this from your main thread can lead to deadlock
เพื่อป้องกันข้อผิดพลาด ANR (Application Not Responding) และการแครชขณะรันไทม์ของแอปพลิเคชัน นักพัฒนาจะต้องส่งคำสั่งการดึงข้อมูลภายในตัวทำงานเบื้องหลัง (Background Worker) หรือ Kotlin Coroutine โดยใช้ Dispatchers.IO

การใช้งานแท็กงานเบื้องหลังโดยใช้ Kotlin Coroutines
การใช้งาน Kotlin ด้านล่างนี้แสดง AdvertisingIdManager ที่มีความปลอดภัยของเธรด ซึ่งดำเนินการดึงข้อมูลนอกเธรดหลัก จัดการข้อยกเว้นความพร้อมใช้งานของ Google Play services และตรวจสอบความสมบูรณ์ของรหัส:
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"
/**
* ดึงข้อมูล Google Advertising ID นอกเธรดการทำงานหลักผ่านโปรแกรม
* จัดการข้อยกเว้น สถานะค่าศูนย์ และการเลือกไม่รับของผู้ใช้โดยอัตโนมัติ
*/
suspend fun fetchGaid(context: Context): GaidResult = withContext(Dispatchers.IO) {
try {
// เรียกใช้งาน IPC ของ Google Play services แบบบล็อกกิ้งบน IO coroutine dispatcher
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, "รหัสโฆษณาไม่พร้อมใช้งานหรือเป็นค่าศูนย์")
GaidResult(
gaid = null,
isLimitAdTrackingEnabled = isLAT,
isZeroed = true,
isAvailable = false
)
} else {
Log.d(TAG, "ดึงข้อมูลรหัสโฆษณาสำเร็จ เปิดใช้งาน LAT: $isLAT")
GaidResult(
gaid = rawId,
isLimitAdTrackingEnabled = isLAT,
isZeroed = false,
isAvailable = true
)
}
} catch (e: GooglePlayServicesNotAvailableException) {
Log.e(TAG, "ไม่ได้ติดตั้ง Google Play services หรือไม่พร้อมใช้งานบนอุปกรณ์นี้", e)
GaidResult(gaid = null, isLimitAdTrackingEnabled = true, isZeroed = false, isAvailable = false)
} catch (e: GooglePlayServicesRepairableException) {
Log.w(TAG, "Google Play services จำเป็นต้องมีการอัปเดตหรือการกู้คืนโดยผู้ใช้", e)
GaidResult(gaid = null, isLimitAdTrackingEnabled = true, isZeroed = false, isAvailable = false)
} catch (e: IOException) {
Log.e(TAG, "เกิดข้อผิดพลาดในการสื่อสารขณะเชื่อมต่อกับ Google Play services", e)
GaidResult(gaid = null, isLimitAdTrackingEnabled = true, isZeroed = false, isAvailable = false)
} catch (e: IllegalStateException) {
Log.e(TAG, "สถานะไม่ถูกต้องขณะดึงข้อมูลรหัสโฆษณา", e)
GaidResult(gaid = null, isLimitAdTrackingEnabled = true, isZeroed = false, isAvailable = false)
} catch (e: Exception) {
Log.e(TAG, "เกิดข้อผิดพลาดที่ไม่คาดคิดขณะดึงข้อมูล Google Advertising ID", e)
GaidResult(gaid = null, isLimitAdTrackingEnabled = true, isZeroed = false, isAvailable = false)
}
}
}
การวิเคราะห์ AdvertisingIdClient.Info และการจัดการการจำกัดการติดตามโฆษณา
เมธอด AdvertisingIdClient.getAdvertisingIdInfo() จะส่งคืนออบเจ็กต์ AdvertisingIdClient.Info ซึ่งประกอบด้วยคุณสมบัติสำคัญสองประการ:
getId()(String): สตริงตัวอักษรและตัวเลขที่แทนรหัสโฆษณาisLimitAdTrackingEnabled()(Boolean): เมื่อเปิดใช้งานการจำกัดการติดตามโฆษณา นโยบายของ Google Play จะห้ามไม่ให้ใช้ข้อมูลรหัสโฆษณาเพื่อสร้างโปรไฟล์โฆษณาหรือกำหนดเป้าหมายโฆษณาเฉพาะบุคคล แต่นโยบายยังคงอนุญาตกิจกรรมต่างๆ เช่น โฆษณาตามบริบท การจำกัดความถี่ การติดตามการแปลง การรายงาน และการตรวจจับความปลอดภัย/การฉ้อโกง อย่างไรก็ตาม บน Google Play services ปัจจุบัน ตัวรหัสโฆษณาเองจะถูกตั้งค่าเป็นศูนย์เมื่อเปิดใช้งานการตั้งค่านี้ ดังนั้นแอปพลิเคชันจึงไม่ควรคิดว่า GAID ที่ใช้งานได้จะยังคงมีอยู่
การจัดการรหัสที่เป็นค่าศูนย์และสถานะการลบโดยผู้ใช้
สตริง 00000000-0000-0000-0000-000000000000: ปรากฏขึ้นเมื่อใดและเพราะเหตุใด
ในสภาพแวดล้อมการใช้งานจริง AdvertisingIdClient.Info.getId() จะส่งคืนค่า 00000000-0000-0000-0000-000000000000 เมื่อ:
- ผู้ใช้ลบรหัสโฆษณา: ผู้ใช้เข้าไปที่การตั้งค่าอุปกรณ์และทำการลบรหัสโฆษณาของตน
- เปิดใช้งานการจำกัดการติดตามโฆษณา: ผู้ใช้เปิดใช้งานการจำกัดการติดตามโฆษณาบนเวอร์ชัน OS ที่รองรับ
- สิทธิ์ Manifest หายไป: แอปพลิเคชันกำหนดเป้าหมาย Android 13+ (API ระดับ 33+) และไม่สามารถประกาศ
com.google.android.gms.permission.AD_IDในไฟล์ manifest ที่ผสานแล้ว

เวิร์กโฟลว์การตั้งค่าผู้ใช้: การลบรหัสโฆษณา
ผู้ใช้บน Android รุ่นปัจจุบันสามารถลบรหัสของตนได้โดยไปที่:
การตั้งค่า > ความเป็นส่วนตัว > โฆษณา > ลบรหัสโฆษณา (ป้ายกำกับที่แน่นอนอาจแตกต่างกันไปตาม OEM ของอุปกรณ์)
เมื่อถูกลบ Google Play services จะล้างค่าพื้นฐานนั้นทิ้ง คำขอ API ครั้งต่อๆ ไปในแอปทั้งหมดที่ติดตั้งไว้จะส่งคืนสตริงที่เป็นศูนย์
ข้อกำหนดนโยบาย Google Play สำหรับสถานะการรีเซ็ตและการลบ
อ้างอิงตาม นโยบายสำหรับนักพัฒนาซอฟต์แวร์ของ Google Play เกี่ยวกับรหัสโฆษณา นักพัฒนาต้องจัดการกับการดำเนินการด้านความเป็นส่วนตัวของผู้ใช้ตามกฎที่กำหนดไว้:
- ข้อกำหนดการรีเซ็ต: เมื่อผู้ใช้รีเซ็ตรหัสโฆษณาของตน นักพัฒนาจะต้องไม่เชื่อมโยงรหัสโฆษณาใหม่เข้ากับรหัสโฆษณาเดิมหรือข้อมูลที่ได้มาจากรหัสนั้นโดยปราศจากความยินยอมที่ชัดเจนจากผู้ใช้
- ข้อกำหนดการลบ: เมื่อผู้ใช้ลบรหัสโฆษณาของตน นักพัฒนาจะต้องไม่เชื่อมต่ออุปกรณ์นั้นกับข้อมูลที่ลิงก์หรือได้มาจากรหัสโฆษณาเดิมของมัน
การทำความสะอาดข้อมูลอินพุตของรหัสในไปป์ไลน์การนำเข้าข้อมูลปลายทาง
เอนจิ้นการระบุแหล่งที่มาส่วนหลังต้องใช้งานฟิลเตอร์ตรวจสอบความถูกต้องเพื่อป้องกันไม่ให้สตริงที่เป็นศูนย์สร้างความเสียหายให้กับฐานข้อมูลการระบุแหล่งที่มา:
fun isGaidValid(gaid: String?): Boolean {
if (gaid.isNullOrBlank()) return false
val zeroedGaid = "00000000-0000-0000-0000-000000000000"
return !gaid.equals(zeroedGaid, ignoreCase = true)
}
หากตรวจพบรหัสที่เป็นค่าศูนย์ ระบบปลายทางจะต้องไม่ปฏิบัติกับมันเสมือนเป็น GAID ที่ใช้งานได้หรือคีย์สำหรับจับคู่รหัส การประมวลผลการระบุแหล่งที่มาหรือการวิเคราะห์ใดๆ ควรอ้างอิงจากสัญญาณอื่นๆ ที่ได้รับอนุญาตอย่างอิสระเท่านั้น
นโยบายครอบครัวของ Google Play และข้อจำกัดด้านหมวดหมู่แอป
แนวปฏิบัติด้านข้อมูลในแอปสำหรับครอบครัว
Google Play บังคับใช้กฎการคุ้มครองข้อมูลที่เข้มงวดสำหรับแอปพลิเคชันที่เข้าร่วมโครงการ Families หรือกำหนดเป้าหมายไปที่เด็กๆ:
- ข้อห้ามในการส่งต่อ AAID: แอปพลิเคชันที่กำหนดเป้าหมายไปที่เด็กโดยเฉพาะจะต้องไม่ส่งต่อรหัสโฆษณา (AAID) สำหรับแอปที่กำหนดเป้าหมาย API ระดับ 33 ขึ้นไป Google แนะนำให้ละเว้นหรือปิดใช้งานสิทธิ์
AD_IDเพื่อเป็นกลไกการปฏิบัติตามข้อกำหนดที่ง่ายดาย - การจัดการกลุ่มเป้าหมายแบบผสม: แอปพลิเคชันที่กำหนดเป้าหมายทั้งเด็กและผู้ชมที่มีอายุมากกว่าจะต้องไม่ส่งต่อ AAID จากเด็กหรือผู้ใช้ที่ไม่ทราบอายุ โดยค่าเริ่มต้น แอปและ SDK ควรหลีกเลี่ยงการส่งต่อ AAID จนกว่าการยืนยันอายุจะยืนยันได้ว่าผู้ใช้ไม่ใช่เด็ก
การใช้ tools:node=“remove” ใน Manifest
หากแอปพลิเคชันของคุณกำหนดเป้าหมายเด็ก แต่ SDK ของบุคคลที่สามที่นำเข้าเข้ามาทำการฉีดสิทธิ์ AD_ID โดยอัตโนมัติผ่านการผสานไฟล์ manifest ให้เพิ่มแอตทริบิวต์ tools:node="remove" ในไฟล์ AndroidManifest.xml หลักของคุณ:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.example.familyapp">
<!-- ลบ AD_ID ที่ถูกฉีดเข้ามาโดยการพึ่งพาทางอ้อมอย่างชัดเจน -->
<uses-permission
android:name="com.google.android.gms.permission.AD_ID"
tools:node="remove"/>
</manifest>
ทางเลือกในการวัดผลเฉพาะกรณีการใช้งานเมื่อ GAID ไม่พร้อมใช้งาน
เมื่อ GAID เป็นค่าศูนย์ ถูกลบ หรือถูกจำกัดด้วยนโยบาย ทีมวิศวกรรมจะปรับใช้ทางเลือกเฉพาะกรณีการใช้งานตามวัตถุประสงค์การทำงานของตน:
- การระบุแหล่งที่มาของแคมเปญ: ใช้ Google Play Install Referrer API เพื่อดึงพารามิเตอร์แคมเปญที่จัดการโดยสโตร์ซึ่งส่งผ่าน URL ของ Play Store (
referrer=...) โดยทำงานเป็นอิสระจากการลบ GAID - การเริ่มต้นใช้งานและความตั้งใจของผู้ใช้: ใช้การกำหนดเส้นทางพารามิเตอร์ตามบริบทของฝ่ายแรกเพื่อกู้คืนโทเค็นการแนะนำ โค้ดโปรโมชัน และปลายทางลิงก์เชิงลึกที่ส่งมาจากหน้า Landing Page ของเว็บ
- การวิเคราะห์และการฉ้อโกงที่มีขอบเขตสำหรับนักพัฒนา: ใช้ App Set ID (
AppSetIdClient) เพื่อสร้างรหัสที่ใช้ร่วมกันในแอปต่างๆ ที่เผยแพร่ภายใต้บัญชีนักพัฒนาเดียวกัน โดยไม่ต้องมีการติดตามโฆษณาข้ามแอป
GAID ไม่พร้อมใช้งานหรือเป็นค่าศูนย์
│
┌───────────────────────┼───────────────────────┐
│ │ │
▼ ▼ ▼
แคมเปญที่มีค่าใช้จ่าย การเริ่มต้นใช้งาน & การวิเคราะห์ & การฉ้อโกง
การระบุแหล่งที่มา ความตั้งใจในการแนะนำ ที่เป็นของนักพัฒนา
│ │ │
▼ ▼ ▼
Google Play First-Party App Set ID
Install Referrer Contextual (กำหนดขอบเขตโดย
(Store URL) Routing นักพัฒนาหรือแอป)

ตารางเปรียบเทียบ: GAID เทียบกับ Install Referrer เทียบกับ App Set ID
| มิติข้อมูล | Google Advertising ID (GAID) | Google Play Install Referrer | App Set ID (AppSet) |
|---|---|---|---|
| ประเภทของรหัส | UUID โฆษณาข้ามแอปที่รีเซ็ตได้ | สตริงพารามิเตอร์แคมเปญที่จัดการโดยสโตร์ | รหัสที่มีขอบเขตระดับนักพัฒนาหรือแอป ขึ้นอยู่กับการติดตั้งและบริบทของ Play services |
| สิทธิ์ Manifest | com.google.android.gms.permission.AD_ID |
ไม่มี | ไม่มี |
| ผลกระทบจากการลbโดยผู้ใช้ | ส่งคืนสตริงที่เป็นศูนย์ | เป็นอิสระจากการลบ GAID | อาจรีเซ็ตหลังจากผ่านไป 13 เดือนโดยไม่มีการเข้าถึง API เมื่อแอปสุดท้ายในชุดถูกถอนการติดตั้ง หรือหลังจากการรีเซ็ตเป็นค่าเริ่มต้นจากโรงงาน |
| กรณีการใช้งานหลัก | การระบุแหล่งที่มาของโฆษณาข้ามแอปและการทำรีทาร์เก็ตing | การติดตามประสิทธิภาพแคมเปญบน Play Store | การตรวจจับการฉ้อโกงและการวิเคราะห์ที่เป็นของนักพัฒนา |
| ความเหมาะสมกับนโยบาย Families | ต้องไม่ถูกส่งต่อจากเด็ก | ไม่อยู่ภายใต้ข้อห้ามในการส่งต่อเฉพาะ AAID; การใช้งานยังคงต้องปฏิบัติตามนโยบาย Families ที่เกี่ยวข้อง | ได้รับการสนับสนุนจาก Google สำหรับการวิเคราะห์ในแอปสำหรับครอบครัว |
คำถามที่พบบ่อย (FAQ)
เหตุใดการเรียก AdvertisingIdClient จึงเกิดข้อผิดพลาด IllegalStateException?
จะเกิดอะไรขึ้นหากแอปกำหนดเป้าหมาย Android 13 และไม่ได้ประกาศสิทธิ์ AD_ID?
ฉันจะลบสิทธิ์ AD_ID ที่ถูกฉีดเข้ามาโดยการพึ่งพา SDK ของบุคคลที่สามได้อย่างไร?
บทสรุปและกรอบการตัดสินใจ
Google Advertising ID ยังคงเป็นรหัสที่สามารถรีเซ็ตได้ซึ่งมีความสำคัญสำหรับกรณีการใช้งานด้านโฆษณาบน Android และการวิเคราะห์ผู้ใช้ แต่การทำงานบน Android 13+ จำเป็นต้องปฏิบัติตามนโยบายสิทธิ์ของ manifest มาตรฐานการทำงานเบื้องหลัง และการจัดการสถานะรหัสที่เป็นศูนย์อย่างราบรื่น เมื่อ GAID ไม่พร้อมใช้งาน ทีมวิศวกรรมควรเลือกใช้เครื่องมือวัดผลตามกรณีการใช้งานเฉพาะ เช่น Install Referrer สำหรับการระบุแหล่งที่มาของแคมเปญบน Play Store, พารามิเตอร์บริบทของฝ่ายแรกสำหรับสถานะการเริ่มต้นใช้งาน, หรือ App Set ID สำหรับสถานการณ์การวิเคราะห์และการป้องกันการฉ้อโกงที่เป็นของนักพัฒนา
หากต้องการสำรวจรูปแบบการใช้งานสำหรับการระบุแหล่งที่มาบน Android และไปป์ไลน์ลิงก์เชิงลึก โปรดตรวจสอบ เอกสารประกอบของ OpoInstall
เอกสารที่เกี่ยวข้อง
-
แนวคิด: วงจรชีวิตของ Advertising ID, สิทธิ์ Manifest ของ AD_ID, การดึงข้อมูลผ่านเธรดเบื้องหลัง, การจัดการรหัสที่เป็นศูนย์
-
เทคโนโลยี: Google Play Services, AdvertisingIdClient API, Google Play Install Referrer API, OpoInstall Android SDK
-
มาตรฐาน: นโยบายสำหรับนักพัฒนาของ Google Play, การเปลี่ยนแปลงพฤติกรรมของ Android 13, มาตรฐาน IETF RFC 4122 UUID
-
API และคลาส:
AdvertisingIdClient,AdvertisingIdClient.Info,AppSetIdClient, OpoInstall Context API
เอกสารประกอบอย่างเป็นทางการ
Share this article



