App Tracking Transparency (ATT) เป็นกลไกของ iOS ที่ต้องการความยินยอมอย่างชัดแจ้งจากผู้ใช้เพื่อเข้าถึงตัวระบุโฆษณา IDFA ก่อนการติดตามในแอปและเว็บไซต์ เปิดตัวใน iOS 14.5 ATT บังคับให้นักพัฒนาทุกคนต้องแสดงกล่องโต้ตอบของระบบที่ขออนุญาตติดตาม ตาม เอกสารสำหรับนักพัฒนา Apple ทุกแอปที่ใช้ IDFA สำหรับโฆษณาแบบกำหนดเป้าหมายหรือการระบุแหล่งที่มา ต้องรวมเฟรมเวิร์ก ATT และได้รับอนุญาตให้เข้าถึง
ประเด็นสำคัญ
App Tracking Transparency เป็นเฟรมเวิร์กของ Apple เพื่อปกป้องความเป็นส่วนตัวของผู้ใช้ เปิดตัวใน iOS 14.5 โดยกำหนดให้แอปต้องได้รับ การอนุญาตอย่างชัดแจ้ง เพื่อเข้าถึงตัวระบุโฆษณาของอุปกรณ์ (IDFA) ก่อนนำไปใช้ในการติดตาม
ก่อน ATT นักพัฒนาสามารถอ่าน IDFA ได้โดยไม่ต้องขออนุญาต ทำให้เครือข่ายโฆษณาสามารถสร้างโปรไฟล์ผู้ใช้และติดตามกิจกรรมระหว่างแอปและเว็บไซต์ได้ Apple ถือว่านี่เป็นการละเมิดความเป็นส่วนตัวและได้นำกล่องโต้ตอบความยินยอมที่จำเป็นมาใช้
เฟรมเวิร์กนี้พร้อมใช้งานตั้งแต่ iOS 14.0 แต่กลายเป็นข้อบังคับสำหรับทุกแอปที่ใช้ IDFA เมื่อ iOS 14.5 เปิดตัวในเดือนเมษายน 2021 ตาม Flurry Analytics หลังจากการนำ ATT มาใช้ ผู้ใช้ในสหรัฐอเมริกาน้อยกว่า 25% ยินยอมให้ติดตาม ซึ่งเปลี่ยนแปลงตลาดโฆษณาบนมือถืออย่างสิ้นเชิง
ATT ตรวจสอบการอนุญาตผ่านกล่องโต้ตอบของระบบพิเศษที่แอปไม่สามารถแก้ไขหรือเลี่ยงได้ ผู้ใช้เห็นป็อปอัพมาตรฐานพร้อมข้อความที่นักพัฒนาให้ไว้และเลือก “อนุญาต” หรือ “ขอให้แอปไม่ติดตาม”
Apple วางตำแหน่ง ATT เป็นส่วนหนึ่งของกลยุทธ์ความเป็นส่วนตัวโดยรวม ซึ่งรวมถึง ฉลากโภชนาการความเป็นส่วนตัว ใน App Store และ Privacy Manifest กลไกทั้งสามทำงานร่วมกัน: ฉลากแสดงข้อมูลที่แอปเก็บรวบรวม Manifest ประกาศเหตุผลในการใช้ API และ ATT ให้ผู้ใช้ควบคุมการติดตาม
การปฏิเสธการติดตามไม่ได้ขัดขวางการทำงานของแอปเอง — ผู้ใช้ยังคงใช้ฟีเจอร์ทั้งหมดได้ แต่เครือข่ายโฆษณาจะไม่ได้รับ IDFA สำหรับการปรับแต่งเฉพาะบุคคลและการระบุแหล่งที่มา ทางเลือกของ Apple สำหรับ IDFA ได้แก่ SKAdNetwork และการระบุแหล่งที่มาแบบความน่าจะเป็น
ตาม Branch Metrics หลังจากการนำ ATT มาใช้ สัดส่วนของแอปที่ได้รับ IDFA ลดลงจาก 70% เหลือ 20% ทั่วโลก สิ่งนี้นำไปสู่การทบทวนแนวทางการระบุแหล่งที่มาของการติดตั้งและการสร้างรายได้จากโฆษณา
ใน iOS 15 Apple ไม่ได้เพิ่มความเข้มงวดของข้อกำหนด ATT แต่เพิ่ม รายงานความเป็นส่วนตัวของแอป — รายงานที่แสดงให้ผู้ใช้เห็นว่าแอปเข้าถึงเซ็นเซอร์และข้อมูลบ่อยเพียงใด iOS 16 ขยายการควบคุม: ผู้ใช้สามารถเปลี่ยนการตั้งค่าการติดตามได้ทุกเมื่อผ่าน การตั้งค่า → ความเป็นส่วนตัว → การติดตาม
สำคัญ: หากผู้ใช้เลือก “ขอให้แอปไม่ติดตาม” ในกล่องโต้ตอบ ATT แอปจะไม่ได้รับค่า IDFA — แต่จะคืนสตริงที่เป็นศูนย์: 00000000-0000-0000-0000-000000000000 การพยายามอ่าน IDFA ด้วยวิธีอื่นหรือวิธีเลี่ยงจะนำไปสู่การปฏิเสธแอปใน App Store
เริ่มจาก iOS 17 Apple เพิ่มความเข้มงวดในการตรวจสอบ: หากแอปขอ IDFA โดยไม่แสดงกล่องโต้ตอบของระบบ ATT แอปจะได้รับการปฏิเสธในระดับระบบปฏิบัติการ ไม่ใช่แค่ตัวระบุที่ว่างเปล่า ซึ่งขจัดความเป็นไปได้ในการเก็บ IDFA ในพื้นหลังโดยที่ผู้ใช้ไม่รู้
กระบวนการขอ ATT ประกอบด้วยสามขั้นตอน: การตรวจสอบสถานะ การแสดงกล่องโต้ตอบของระบบ และการประมวลผลการตอบกลับ นักพัฒนาไม่สามารถข้ามขั้นตอนใดได้ — ระบบปฏิบัติการควบคุมแต่ละขั้นตอน
ก่อนเรียกกล่องโต้ตอบ แอปต้องตรวจสอบสถานะปัจจุบันผ่าน ATTrackingManager สถานะที่เป็นไปได้: notDetermined (ยังไม่ได้ขอ), restricted (ถูกห้ามโดยนโยบายอุปกรณ์), denied (ผู้ใช้ปฏิเสธ), authorized (อนุญาตแล้ว)
หากสถานะถูกกำหนดแล้ว (authorized หรือ denied) จะไม่สามารถเรียกกล่องโต้ตอบอีกครั้ง — ผู้ใช้ได้ตัดสินใจถาวรแล้ว วิธีเดียวที่จะเปลี่ยนการตัดสินใจคือผ่านการตั้งค่าระบบ iOS
ในการตรวจสอบสถานะ ให้ใช้คุณสมบัติ ATTrackingManager.trackingAuthorizationStatus การเรียกต้องเกิดขึ้นบนเธรดหลักเนื่องจากกล่องโต้ตอบของระบบเป็นส่วนประกอบของ UI
import AppTrackingTransparency
import AdSupport
func checkTrackingStatus() {
let status = ATTrackingManager.trackingAuthorizationStatus
switch status {
case .notDetermined:
requestTrackingPermission()
case .authorized:
readIDFA()
case .denied, .restricted:
useAlternativeTracking()
@unknown default:
break
}
}
ในการแสดงกล่องโต้ตอบ ให้เรียกเมธอด requestTrackingAuthorization พร้อม closure ที่รับผลลัพธ์ของการเลือกของผู้ใช้ สำคัญ: กล่องโต้ตอบจะแสดงเพียงครั้งเดียว หากนักพัฒนาพยายามเรียกอีกครั้ง ระบบจะละเว้นคำขอ
ข้อความในกล่องโต้ตอบประกอบด้วยสองส่วน: ส่วนหัวของระบบ (ไม่สามารถเปลี่ยนแปลงได้) และข้อความที่กำหนดเองซึ่งนักพัฒนาระบุใน Info.plist ผ่านคีย์ NSUserTrackingUsageDescription
กล่องโต้ตอบควรปรากฏในบริบทที่เป็นธรรมชาติ — ไม่ใช่ทันทีเมื่อเปิดแอป แต่เมื่อมีการพยายามใช้ฟังก์ชันที่เกี่ยวข้องกับการติดตามครั้งแรก Apple แนะนำให้แสดงกล่องโต้ตอบหลังจากที่ผู้ใช้เข้าใจคุณค่าของฟีเจอร์แล้ว
func requestTrackingPermission() {
ATTrackingManager.requestTrackingAuthorization { status in
DispatchQueue.main.async {
switch status {
case .authorized:
let idfa = ASIdentifierManager.shared().advertisingIdentifier
print("IDFA: \(idfa)")
case .denied:
print("ผู้ใช้ปฏิเสธการติดตาม")
default:
break
}
}
}
}
IDFA (Identifier for Advertisers) เป็นตัวระบุโฆษณาเฉพาะสำหรับอุปกรณ์ iOS ใช้สำหรับโฆษณาแบบกำหนดเป้าหมายและการระบุแหล่งที่มาของการติดตั้ง ก่อน ATT นักพัฒนาได้รับผ่าน ASIdentifierManager โดยไม่มีข้อจำกัด หลังจาก ATT การเข้าถึง IDFA จะถูกบล็อกจนกว่าผู้ใช้จะให้ความยินยอมอย่างชัดแจ้ง
IDFA เป็นสตริง UUID ที่ไม่ซ้ำกันสำหรับแต่ละอุปกรณ์ iOS เครือข่ายโฆษณาใช้ IDFA สำหรับ: การติดตามการติดตั้งแอป (การระบุแหล่งที่มา) การแสดงโฆษณาที่เกี่ยวข้องตามความสนใจของผู้ใช้ การวัดประสิทธิภาพของแคมเปญโฆษณา และ การกำหนดเป้าหมายซ้ำ — การดึงผู้ใช้ที่ยังไม่ดำเนินการตามเป้าหมายกลับมา
หลังจากผู้ใช้ปฏิเสธการติดตาม ASIdentifierManager จะคืนค่า 00000000-0000-0000-0000-000000000000 แอปยังคงสามารถอ่าน IDFA เพื่อวัตถุประสงค์ทางเทคนิค (เช่น การป้องกันการฉ้อโกง) แต่ไม่สามารถส่งต่อให้เครือข่ายโฆษณาได้
ตาม Singular (2024) อัตราความยินยอม ATT ทั่วโลกอยู่ที่ 25–35% โดยยุโรป (GDPR) สูงกว่า (40–50%) เมื่อเทียบกับสหรัฐอเมริกา (15–25%) สิ่งนี้ผลักดันให้แพลตฟอร์มโฆษณาพัฒนาวิธีการระบุแหล่งที่มาทางเลือก
SKAdNetwork เป็นเฟรมเวิร์กของ Apple สำหรับการระบุแหล่งที่มาของการติดตั้งโดยไม่เปิดเผย IDFA ทำงานในระดับระบบปฏิบัติการ: เครือข่ายโฆษณาส่ง postback ที่ลงนาม Apple ตรวจสอบและส่งต่อให้นักพัฒนา การระบุแหล่งที่มาเกิดขึ้นโดยไม่ระบุผู้ใช้เฉพาะเจาะจง เฉพาะในระดับแคมเปญ
การระบุแหล่งที่มาแบบความน่าจะเป็นใช้สัญญาณอุปกรณ์หลายอย่าง — รุ่น, เวอร์ชัน iOS, เขตเวลา, ความสว่างหน้าจอ — เพื่อจับคู่การติดตั้งกับการแสดงโฆษณาอย่างความน่าจะเป็น อย่างไรก็ตาม Apple ห้ามวิธีการนี้ในแนวปฏิบัติ และการใช้อาจนำไปสู่ การปฏิเสธแอป
Google, Adjust และ AppsFlyer ได้พัฒนาโซลูชันแบบผสมผสานของตนเองที่รวม SKAdNetwork เข้ากับข้อมูลรวมที่เป็นกรรมสิทธิ์ ตัวอย่างเช่น Google Ads Conversion Tracking ใช้ postback ของ SKAdNetwork และโมเดลการเรียนรู้ของเครื่องของตนเองสำหรับการระบุแหล่งที่มาโดยไม่ต้องใช้ IDFA
ในการรวม ATT คุณต้องเพิ่มคีย์ NSUserTrackingUsageDescription ใน Info.plist และนำเข้าเฟรมเวิร์ก AppTrackingTransparency ด้านล่างคือขั้นตอนสำหรับ Swift และ Objective-C
ขั้นตอนแรกคือเพิ่มคีย์ NSUserTrackingUsageDescription ใน Info.plist พร้อมข้อความที่อธิบายว่าเหตุใดแอปจึงต้องการติดตาม ข้อความนี้จะปรากฏในกล่องโต้ตอบของระบบ ตัวอย่าง: “IDFA ของคุณใช้เพื่อแสดงโฆษณาที่ปรับแต่งเฉพาะบุคคลและติดตามประสิทธิภาพของแคมเปญ”
หากไม่มีคีย์นี้ การเรียก requestTrackingAuthorization จะทำให้แอป หยุดทำงาน — Apple ตรวจสอบการมีอยู่ของ NSUserTrackingUsageDescription อย่างชัดแจ้งก่อนแสดงกล่องโต้ตอบ ข้อความควรกระชับ เฉพาะเจาะจง และสะท้อนถึงการใช้ข้อมูลจริง
สำคัญ: คีย์นี้เพิ่มด้วยตนเองผ่านแท็บ Info ของ Xcode หรือโดยการแก้ไขซอร์ส XML ของ Info.plist หลังจากเพิ่มแล้ว ให้สร้างโปรเจกต์ใหม่และตรวจสอบว่าคีย์ปรากฏในไบนารีสุดท้าย
<!-- Info.plist -->
<key>NSUserTrackingUsageDescription</key>
<string>This identifier is used to deliver
personalized ads and measure campaign performance.</string>
ในโปรเจกต์จริง ควรเรียกคำขอ ATT ก่อนการเปิดตัวโมดูลโฆษณาหรือตัวติดตามครั้งแรก ขอแนะนำให้อธิบายคุณค่าของความยินยอมบนหน้าจอแยกต่างหาก (คำแนะนำก่อนอนุญาต) ก่อน — ซึ่งจะเพิ่มอัตราความยินยอม 20–30%
คำแนะนำก่อนอนุญาตคือ UI ที่กำหนดเองซึ่งแสดงประโยชน์ของการเปิดใช้งานการติดตาม (“ช่วยเราแสดงโฆษณาที่เกี่ยวข้องให้คุณ”) หลังจากแตะ “ดำเนินการต่อ” กล่องโต้ตอบของระบบ ATT จึงจะปรากฏ Adjust (2024) บันทึกการเพิ่มขึ้นของความยินยอม 40% เมื่อใช้หน้าจอก่อนอนุญาต
final class TrackingManager {
static let shared = TrackingManager()
func requestTrackingIfNeeded() {
guard ATTrackingManager.trackingAuthorizationStatus
== .notDetermined
else { return }
ATTrackingManager.requestTrackingAuthorization { _ in
NotificationCenter.default.post(
Notification(Name("trackingStatusChanged"))
)
}
}
}
นักพัฒนามักทำผิดพลาดทั่วไปเมื่อรวม ATT ซึ่งนำไปสู่อัตราการยินยอมที่ลดลงหรือการปฏิเสธแอปโดยผู้ตรวจสอบ App Store มาดูปัญหาที่พบบ่อยที่สุดห้าประการกัน
ข้อผิดพลาดที่พบบ่อยที่สุดคือการแสดงกล่องโต้ตอบของระบบ ATT บนหน้าจอแรกทันทีหลังจากโหลดแอป ผู้ใช้ยังไม่เข้าใจคุณค่าของแอปและมีแนวโน้มที่จะกด “ปฏิเสธ” IronSource (2023) แสดงให้เห็นว่าความยินยอมลดลง 32% เมื่อขอบนหน้าจอแรกเทียบกับการขอหลังจากเซสชันที่สาม
คำแนะนำ: ขอติดตามหลังจากผู้ใช้ดำเนินการที่มีคุณค่า (ดูเนื้อหา เริ่มการแนะนำ) หรือหลังจาก 3–5 เซสชันการใช้งานแอป ซึ่งจะเพิ่มความไว้วางใจและการรับรู้ถึงคุณค่า
การแสดงกล่องโต้ตอบของระบบ ATT โดยไม่มีคำอธิบายล่วงหน้าเป็นข้อผิดพลาดที่ทำให้อัตราการเปลี่ยนใจลดลงเหลือ 15–20% ผู้ใช้เห็นคำขอที่ไม่คาดคิดและปฏิเสธโดยสัญชาตญาณ หน้าจอก่อนอนุญาตที่อธิบายประโยชน์ช่วยเพิ่มความยินยอมเป็น 35–45%
ข้อความก่อนอนุญาตควรเฉพาะเจาะจง: “อนุญาตให้เราแสดงโฆษณาที่เกี่ยวข้อง — สิ่งนี้ช่วยให้เราคงฟรีได้” หลีกเลี่ยงวลีที่คลุมเครือ — สิ่งเหล่านี้ลดความไว้วางใจ GameAnalytics แสดงในปี 2023 ว่าหน้าจอก่อนอนุญาตที่อธิบายประโยชน์ให้ความยินยอมมากกว่า 28% เมื่อเทียบกับหน้าจอว่างเปล่า
หากผู้ใช้ปฏิเสธการติดตามแล้วหรือสถานะเป็น restricted (การควบคุมโดยผู้ปกครอง นโยบายองค์กร) แอปไม่ควรเรียกกล่องโต้ตอบ ATT อีกครั้ง การเรียกซ้ำจะไม่ทำงานและถูกมองว่าเป็นการละเมิดความเป็นส่วนตัว ให้เปลี่ยนไปใช้ SKAdNetwork และ โฆษณาตามบริบทแทน
ในสถานะ restricted แอปไม่สามารถระบุได้ว่าตัวเลือก “อนุญาตคำขอติดตาม” เปิดใช้งานในการตั้งค่าหรือไม่ ในกรณีนี้ ให้ใช้ SKAdNetwork เป็นวิธีการระบุแหล่งที่มาเพียงวิธีเดียวเสมอและอย่าแสดงหน้าจอก่อนอนุญาต
การอ่าน IDFA ผ่าน ASIdentifierManager.shared().advertisingIdentifier โดยไม่ได้รับอนุญาต ATT ก่อนจะคืนสตริงที่เป็นศูนย์ นักพัฒนาบางคนพยายามใช้วิธีการเข้าถึง IDFA แบบเก่าผ่าน API ส่วนตัว — สิ่งนี้รับประกัน การปฏิเสธ ในระหว่างการตรวจสอบแอป
Apple ใช้การวิเคราะห์โค้ดแบบคงที่และการเรียนรู้ของเครื่องเพื่อตรวจจับวิธีการเลี่ยง แม้ว่าแอปจะผ่านการตรวจสอบ การอัปเดตครั้งต่อไปหรือการตรวจสอบอัตโนมัติอาจเปิดเผยการละเมิดและนำไปสู่การระงับบัญชีนักพัฒนา
ข้อความที่ยาวเกินไป คลุมเครือ หรือทำให้เข้าใจผิดในคีย์ NSUserTrackingUsageDescription เป็นเหตุผลในการปฏิเสธโดยผู้ตรวจสอบ Apple ตรวจสอบว่าคำอธิบายตรงกับการใช้ข้อมูลจริง หากแอปไม่มีโฆษณาแต่ระบุ “เพื่อวัตถุประสงค์ในการโฆษณา” ผู้ตรวจสอบจะปฏิเสธบิลด์
รูปแบบที่แนะนำ: คำอธิบายเฉพาะเกี่ยวกับวัตถุประสงค์ของการใช้ IDFA ความยาว 2–3 ประโยค ตัวอย่างสำหรับแอปที่ไม่มีโฆษณา: “ตัวระบุใช้สำหรับการวิเคราะห์และการป้องกันการฉ้อโกง ข้อมูลจะไม่ถูกแชร์กับบุคคลที่สามและไม่ใช้สำหรับการทำโปรไฟล์”
คำถามที่พบบ่อย
หากแอปใช้ IDFA หรือการติดตามโดยไม่มี ATT Apple จะ ปฏิเสธ ในระหว่างการตรวจสอบ แม้ว่าจะไม่มีการติดตาม ก็แนะนำให้เพิ่ม ATT เพื่อความโปร่งใส — มิฉะนั้น ความเสี่ยงในการถูกปฏิเสธจะเพิ่มขึ้นทุกครั้งที่อัปเดต
ใช่ แอปทำงานได้อย่างสมบูรณ์ แต่เครือข่ายโฆษณาจะไม่ได้รับ IDFA สำหรับการปรับแต่งเฉพาะบุคคลและการระบุแหล่งที่มา ฟีเจอร์ทั้งหมดของแอปยกเว้นโฆษณาที่ปรับแต่งเฉพาะบุคคลยังคงใช้งานได้
ใช่ ผู้ใช้สามารถเปลี่ยนการตัดสินใจได้ทุกเมื่อผ่าน การตั้งค่า → ความเป็นส่วนตัว → การติดตาม แอปไม่สามารถ รีเซ็ตสถานะโดยทางโปรแกรม — ทำได้ผ่านการตั้งค่าระบบเท่านั้น
ใช้หน้าจอก่อนอนุญาตที่อธิบายประโยชน์ และขอติดตามไม่ใช่ในการเปิดครั้งแรก แต่หลังจากผู้ใช้ดำเนินการที่มีคุณค่า Meta (2024) แสดงให้เห็นว่าความยินยอมเพิ่มขึ้น 35% เมื่อขอแบบเลื่อนออกไป
แอปในหมวดหมู่ “เด็ก” ไม่สามารถใช้ IDFA และ ATT สำหรับการติดตามตามกฎของ Apple นอกจากนี้ยังห้ามแชร์ข้อมูลกับบุคคลที่สามเพื่อการวิเคราะห์หรือโฆษณา
สรุป
เราจะพัฒนาแอปพลิเคชันบนมือถือแบบครบวงจร
IT Sectr สร้างแอปพลิเคชัน iOS และ Android สำหรับสตาร์ทอัพและธุรกิจตั้งแต่ปี 2017 เราจะให้คำแนะนำและเสนอวิธีแก้ปัญหาที่ดีที่สุดแก่คุณ
อ่านเพิ่มเติม