การทำ Interest-based หรือ Ads Personalization เป็นพื้นฐานอย่างหนึ่งสำหรับ Mobile App ที่จะช่วยให้แอปสามารถแสดงเนื้อหาจำพวกโฆษณาที่เหมาะสมกับผู้ใช้แต่ละคนได้ อย่างมีประสิทธิภาพ

จึงทำให้ Google Play Services มีสิ่งที่เรียกว่า Advertising ID ซึ่งเป็น User-resettable ID  แทนการใช้ Non-resettable ID เพื่อใช้ประโยชน์ในการทำโฆษณาภายในแอปโดยเฉพาะ

เพื่อปกป้อง User Privacy จึงทำให้แอปบน Android ในปัจจุบันเรียกใช้งาน Non-resettable ID ไม่ได้แล้ว

โดยปกติการทำ Content Personalization นั้นถือเป็นเรื่องปกติสำหรับแอปส่วนใหญ่อยู่แล้ว เช่น แอป Medium ที่แนะนำบทความที่เกี่ยวข้องกับบทความที่เคยอ่าน

แต่ Interest-based หรือ Ads Personalization จะแตกต่างกันออกไปตรงที่จะใช้ Ads/Analytics Service Provider เพื่อทำ Retargeting จากภายนอกแอปแทน เช่น กดดูสินค้าที่สนใจใน Shopee แล้วไปเห็น Ads ของสินค้าที่เกี่ยวข้องบน Facebook ซึ่งแน่นอนว่าบางส่วนก็สร้างความรำคาญให้กับผู้ใช้อยู่ไม่น้อย

ด้วยเหตุนี้จึงทำให้ Google เริ่มโปรเจค Privacy Sandbox ขึ้นมาเพื่อเป็นทางเลือกให้กับผู้ใช้ว่าต้องการให้แอปสามารถทำ Ads Personalization ได้หรือไม่ และเมื่อกลางปี 2021 ที่ผ่านมาก็ได้เริ่มเปิดใช้งานฟีเจอร์ที่เกี่ยวกับโปรเจคดังกล่าวบน Android 12 ขึ้นไป

โดยฟีเจอร์ดังกล่าวจะเปิดให้ผู้ใช้สามารถลบ Advertising ID ภายในเครื่องได้ ทำให้แอปต่าง ๆ ที่เรียกใช้งาน Advertising ID จะได้ค่าเป็น

และ Google Play Services จะเปิดให้แอนดรอยด์ทุกเวอร์ชันสามารถใช้งานฟีเจอร์ดังกล่าวได้ตั้งแต่วันที่ 1 เมษายน 2022 เป็นต้นไป

ทำไมต้องใช้ Advertising ID จาก Google Play Services

ในการทำ Ads Personalization จะต้องใช้ Generated ID บางอย่างเพื่อใช้อ้างอิงผู้ใช้คนนั้น ๆ โดยจะต้องจำค่าเดิมได้ถึงแม้ว่าจะลบแอปออกจากเครื่องแล้วลงใหม่ก็ตาม

จึงทำให้ Advertising ID จาก Google Play Services เหมาะกับเงื่อนไขนี้มากที่สุด เพราะผู้ใช้ก็ไม่สามารถลบ Google Play Services (ด้วยวิธีทั่วไป) ออกจากเครื่อง และเมื่อ Google Play Services สร้าง Advertising ID ขึ้นมา ก็จะทำให้ทุกแอปในเครื่องเรียกใช้งานและได้ค่าเดียวกันด้วย

แต่ Advertising ID ก็เป็น User-resettable ID ที่ผู้ใช้สามารถ Reset ค่าได้นะ

เกิดอะไรขึ้นเมื่อผู้ใช้ปิด Advertising ID

โดยปกติแล้วการเรียก Advertising ID จาก Google Play Services มาใช้งาน จะเรียกด้วยคำสั่งดังนี้

val context: Context = /* ... */
val advertisingId = AdvertisingIdClient.getAdvertisingIdInfo(context).getId()

โดย Advertising ID ที่ได้จะเป็น UUID ที่ Google Play Services สร้างขึ้นมาให้

be0072a4-eae0-49c7-b10e-eed123456789

เมื่อผู้ใช้ปิด Advertising ID ภายในเครื่องก็จะได้เป็นเลขศูนย์ทั้งหมดแบบนี้แทน

00000000-0000-0000-0000-000000000000

นั่นหมายความว่าโค้ดยังคงสามารถทำงานได้ปกติ แต่ Advertising ID ของผู้ใช้ทุกคนที่ปิด Advertising ID ไว้จะได้เป็นค่าเดียวกันทั้งหมด โดย Ads/Analytics Service Provider ส่วนใหญ่จัดการเรื่องนี้ให้แล้ว (กรองทิ้งนั่นเอง)

Permission สำหรับขอ Advertising ID

สำหรับแอปที่ต้องการ Advertising ID จาก Google Play Services และกำหนด Target API Level 32 ขึ้นไป จะต้องประกาศ Permission ไว้ใน Android Manifest ด้วย

<uses-permission android:name="com.google.android.gms.permission.AD_ID"/>

เพราะถ้าไม่ใส่ ก็จะได้ Advertising ID เป็นศูนย์ทั้งหมดเช่นกัน

ในกรณีที่กำหนด Target API Level ต่ำกว่า 32 อยู่ ยังไม่จำเป็นต้องใส่ Permission ตัวนี้ก็ได้ แต่ทางที่ดีก็แนะนำให้ไว้ดีกว่า เพราะในอนาคตก็ต้องมีเปลี่ยน Target API Level ให้สูงขึ้นตามที่ Google Play กำหนดอยู่ดี

เช่น AppsFlyer แนะนำให้ใส่ Permission ถึงแม้ว่าในแอปกำหนด Target API Level ต่ำกว่า 31 ก็ตาม

สรุป

ในโลกที่บริการต่าง ๆ เปิดให้ใช้งานได้ฟรี โดยแลกกับข้อมูลส่วนตัวของผู้ใช้ ทำให้การคุ้มครองข้อมูลความเป็นส่วนของผู้ใช้กลายเป็นสิ่งสำคัญเช่นกัน

การใช้งานแอปจากที่ใดที่หนึ่ง ก็อาจจะทำให้ต้องเจอโฆษณาจากทุกที่เพียงเพราะข้อมูลจากในแอปนั้นส่งต่อให้ Ads/Analytics Service Provider โดยที่ผู้ใช้ไม่รู้ตัว ทำให้ Mobile Platform ยอดนิยมอย่าง Android และ iOS หันมาใส่ใจในเรื่องนี้มากขึ้น และเพิ่มทางเลือกเพื่อช่วยให้ผู้ใช้สามารถตัดสินใจด้วยตัวเองได้

และแน่นอนว่านักพัฒนาแอปอย่างเราก็ควรปฏิบัติตามด้วยเช่นกัน

แหล่งข้อมูลอ้างอิง