จะ optimize อัตราการยินยอม (Opt-In) ของ App Tracking Transparency (ATT) ได้อย่างไร? การปรับปรุงประสบการณ์การขออนุญาต ATT เกี่ยวข้องกับการให้บริบทก่อนการขออนุญาตที่ชัดเจน การเขียนคำอธิบาย NSUserTrackingUsageDescription ให้แม่นยำ และการเลือกจุดที่เหมาะสมในเส้น ใช้งานของผู้ใช้ (User Journey) เพื่อแสดงคำขอสิทธิ์ของระบบ ผลลัพธ์ต่ออัตราการให้สิทธิ์ควรได้รับการประเมินจากข้อมูลจริง
Identifier for Advertisers (IDFA) คือตัวระบุอุปกรณ์ที่สามารถรีเซ็ตได้ซึ่ง Apple จัดเตรียมไว้ เพื่อใช้สำหรับการระบุแหล่งที่มาของการตลาด (Marketing Attribution) และการวัดผลบน iOS ภายใต้กรอบงาน App Tracking Transparency (ATT) แอปพลิเคชันจะสามารถเข้าถึง IDFA ได้หลังจากได้รับอนุญาตอย่างชัดเจนจากผู้ใช้ผ่านหน้าต่างขอสิทธิ์
ATTrackingManagerเท่านั้น
| คำศัพท์ | คำอธิบาย |
|---|---|
| IDFA | ตัวระบุสำหรับการตลาดระดับแพลตฟอร์มของ Apple ซึ่งอยู่ภายใต้กรอบงาน App Tracking Transparency |
| App Tracking Transparency | กรอบงานของ Apple ที่กำหนดให้ต้องมีการขออนุญาตจากผู้ใช้ก่อนที่จะติดตามผู้ใช้ข้ามแอปและเว็บไซต์ |
| ATTrackingManager | API ดั้งเดิมของ AppTrackingTransparency ที่ใช้สำหรับร้องขอสิทธิ์การติดตาม |
| Pre-Permission Primer | หน้าจอภายในแอปที่กำหนดเอง ซึ่งแสดงผลก่อนหน้าต่างระบบเพื่ออธิบายเหตุผลที่มีการขอสิทธิ์ |
เศรษฐศาสตร์ของการเข้าถึง IDFA และการ optimization ความยินยอม ATT
บทบาทของการเข้าถึง IDFA ที่ได้รับอนุญาตในการวัดผล iOS สมัยใหม่
การเข้าถึง IDFA ที่ได้รับอนุญาตสามารถสนับสนุนเวิร์กโฟลว์การวัดผลและการระบุแหล่งที่มาของการตลาดระดับผู้ใช้ เมื่อการใช้ข้อมูลการติดตามของแอปพลิเคชันเป็นไปตาม ATT และข้อกำหนดของพันธมิตรด้านการตลาดและการวัดผล ในกรณีที่ไม่สามารถใช้งานสิทธิ์การติดตามได้ ทีมงานที่ยังคงต้องการเครื่องมือวัดผลสามารถเลือกใช้แนวทางที่ได้รับอนุญาตแยกต่างหากและจัดการผ่านแพลตฟอร์ม เช่น AdAttributionKit หรือการผสานการทำงาน SKAdNetwork ที่มีอยู่
เมื่อได้รับอนุญาต IDFA จะทำหน้าที่เป็นคีย์เชื่อมโยงข้อมูลแบบ deterministic สำหรับการผสานการทำงานกับเครือข่ายพันธมิตรที่รองรับ ช่วยให้สามารถประเมินผลลัพธ์การแปลงระดับแคมเปญได้โดยไม่ต้องอาศัยการจำลองทางสถิติ แต่หากไม่ได้รับอนุญาต แอปพลิเคชันจะเปลี่ยนผ่านการวัดผลไปยังกรอบงานดั้งเดิมของแพลตฟอร์มแทน
ปัญหาของการแสดงหน้าต่างแจ้งเตือนทันทีที่เปิดแอปครั้งแรก (Cold-Launch Prompts)
การขอสิทธิ์การติดตามจากผู้ทันทีเมื่อเปิดแอปครั้งแรกเป็นสิ่งที่ Apple อนุญาตในเชิงเทคนิค แต่อาจให้บริบทไม่เพียงพอต่อการตัดสินใจอย่างมีข้อมูล เนื่องจากผู้ใช้ยังไม่ทันได้สัมผัสกับฟังก์ชันการทำงานของแอปพลิเคชัน:
- ขาดความไว้วางใจในตัวผลิตภัณฑ์: ผู้ใช้ใหม่ยังไม่ทันได้สร้างความมั่นใจในฟังก์ชันการทำงาน คุณค่าของแบรนด์ หรือแนวปฏิบัติด้านความปลอดภัยของข้อมูลในแอปพลิเคชัน
- บริบทที่ไม่ชัดเจน: กล่องโต้ตอบของระบบปรากฏขึ้นโดยไม่มีคำอธิบายล่วงหน้า ทำให้ผู้ใช้ที่มีความระมัดระวังเลือกตัวเลือก "ขอให้แอปไม่ติดตาม" เป็นค่าเริ่มต้น
- ความล้าจากการขอสิทธิ์ (Permission Fatigue): การซ้อนทับกล่องโต้ตอบขอสิทธิ์ของระบบหลายรายการ (เช่น การแจ้งเตือนพุช, ATT และตำแหน่งที่ตั้ง) ระหว่างการเริ่มใช้งานแอปครั้งแรกจะสร้างความยุ่งยากและเพิ่มอัตราการเลิกใช้งานตั้งแต่เริ่มต้น เอกสาร API ของ Apple ระบุว่าหากมีคำขอสิทธิ์ที่ค้างอยู่ คำขอสิทธิ์ในลำดับถัดไปจะไม่แสดงขึ้นมา

การประเมินประสิทธิภาพการ Opt-In ด้วยข้อมูลจริง
อัตราความยินยอมที่สามารถทำได้จะแตกต่างกันไปตามหมวดหมู่ของแอป ความเชื่อมั่นของกลุ่มเป้าหมาย จังหวะเวลาในการแสดงหน้าต่างแจ้งเตือน และความชัดเจนของข้อความ ทีมงานควรประเมินรูปแบบการ optimization ผ่านการทดสอบ A/B แบบควบคุม แทนที่จะอิงตามเกณฑ์มาตรฐานอุตสาหกรรมตายตัว
ดูเพิ่มเติม: IDFA ──> โมเดลการระบุแหล่งที่มาบนมือถือ
กลไกทางเทคนิคของกรอบงาน AppTrackingTransparency
สถานะการให้สิทธิ์ทั้ง 4 รูปแบบ
การเข้าถึง IDFA ถูกควบคุมอย่างเข้มงวดโดย ATTrackingManager.AuthorizationStatus enum:
notDetermined(0): ผู้ใช้ยังไม่เห็นกล่องโต้ตอบขอสิทธิ์restricted(1): อุปกรณ์ถูกจำกัดด้วยการควบคุมโดยผู้ปกครอง, โปรไฟล์การกำหนดค่าทางการศึกษา หรือ MDM ขององค์กร จึงไม่สามารถให้สิทธิ์การติดตามได้และปุ่มสลับการตั้งค่าจะถูกปิดการใช้งานdenied(2): แอปไม่มีสิทธิ์เข้าถึงข้อมูลที่เกี่ยวข้องกับแอปเพื่อการติดตาม หลังจากที่ผู้ใช้ปฏิเสธคำขอauthorized(3): ผู้ใช้ออนุญาตให้มีการติดตาม บนอุปกรณ์ iOS และ iPadOS ที่รองรับ โดยปกติจะอนุญาตให้เข้าถึงตัวระบุการตลาดที่ไม่ใช่ค่าศูนย์

กฎการแสดงหน้าต่างระบบครั้งเดียว
ระบบปฏิบัติการ iOS บังคับใช้กฎการแสดงผลครั้งเดียวสำหรับ ATTrackingManager.requestTrackingAuthorization เมื่อผู้ใช้โต้ตอบกับหน้าต่างโมดอลของระบบโดยเลือก “อนุญาต” หรือ “ขอให้แอปไม่ติดตาม” แล้ว ระบบจะจดจำสถานะที่กำหนดนั้นและจะไม่แสดงหน้าต่างแจ้งเตือนอีกตลอดการติดตั้งแอปพลิเคชันนั้น
แม้ว่าหน้าต่างแจ้งเตือนของระบบจะไม่ปรากฏขึ้นเป็นครั้งที่สอง แต่ผู้ใช้สามารถปรับเปลี่ยนการอนุญาตการติดตามได้ด้วยตนเองตลอดเวลาภายในแอปพลิเคชันการตั้งค่า (Settings) ของ iOS
วิธีที่ iOS บังคับให้ตัวระบุเป็นศูนย์เมื่อมีการปฏิเสธสิทธิ์การติดตาม
บน iOS 14.5 ขึ้นไป ตัวระบุการตลาดมักจะส่งค่าเป็นศูนย์ทั้งหมด (00000000-0000-0000-0000-000000000000) เมื่อไม่ได้รับอนุญาตให้ติดตาม นักพัฒนาควรตรวจสอบทั้งสถานะการให้สิทธิ์ ATT และค่าตัวระบุที่ส่งกลับมาตามความต้องการ แทนที่จะสมมติว่าสตริงที่ถูกแคชไว้ยังคงใช้งานได้ตลอดการเปิดแอปพลิเคชัน
สถาปัตยกรรม UX อัตราการแปลงสูง: กลยุทธ์ Pre-Permission Primer
กายผ่าของตัวชี้แนะบริบทที่มีประสิทธิภาพ: ข้อจำกัดตามหลัก HIG ของ Apple
อ้างอิงจาก หลักเกณฑ์อินเทอร์เฟซมนุษย์ของ Apple ด้านความเป็นส่วนตัว (Apple’s Human Interface Guidelines on Privacy) แอปพลิเคชันสามารถแสดงหน้าจอแจ้งเตือนล่วงหน้าที่กำหนดเองก่อนหน้าต่างขอสิทธิ์ของระบบได้ หากจำเป็นต้องมีบริบทเพิ่มเติม อย่างไรก็ตาม Apple กำหนดกฎการออกแบบที่เข้มงวดสำหรับหน้าจออธิบายล่วงหน้าเหล่านี้:
- ปุ่มดำเนินการเดี่ยว: หน้าจออธิบายล่วงหน้าต้องมีปุ่มเพียงปุ่มเดียว (เช่น “ดำเนินการต่อ” หรือ “ถัดไป”) ที่นำไปสู่หน้าต่างระบบโดยตรง ห้ามมีปุ่ม “ยกเลิก”, “ปิด” หรือ “ยังไม่ใช่ตอนนี้” ที่เป็นการเลี่ยงหรือชะลอการแจ้งเตือนของระบบ
- ห้ามเลียนแบบ UI ของระบบ: หน้าจออธิบายล่วงหน้าต้องไม่เลียนแบบรูปลักษณ์ของกล่องแจ้งเตือนระบบ iOS ดั้งเดิม หรือแสดงปุ่มจำลองที่มีป้ายกำกับว่า “อนุญาต”
- ห้ามใช้ภาพชักจูง: อินเทอร์เฟซต้องไม่ใช้กราฟิก ลูกศร หรือสไตล์ที่มีความคอนทราสต์สูงซึ่งออกแบบมาเพื่อชักใยหรือชี้นำผู้ใช้ให้เลือก “อนุญาต” ในหน้าต่างระบบถัดไป
การปฏิบัติตามแนวทางตรวจสอบ App Store ข้อ 5.1.2
ภายใต้ แนวทางตรวจสอบ App Store ของ Apple ส่วน 5.1.2 Apple ได้บังคับใช้ขอบเขตที่ชัดเจนเกี่ยวกับการขอสิทธิ์:
- ข้อห้ามในการให้สิ่งจูงใจเพื่อการติดตาม: ห้ามมิให้แอปเสนอสิ่งจูงใจทางการเงิน สกุลเงินเสมือน เนื้อหาพรีเมียม หรือส่วนลด เพื่อแลกกับการให้ความยินยอม ATT การกระทำดังกล่าวละเมิดแนวทางข้อ 5.1.2 และอาจส่งผลให้แอปถูกปฏิเสธ
- ห้ามปิดกั้นฟังก์ชันการทำงานหลัก: แอปพลิเคชันไม่สามารถบล็อกฟีเจอร์หลัก ขัดขวางการสร้างบัญชี หรือลดทอนประสิทธิภาพของแอปได้หากผู้ใช้ปฏิเสธสิทธิ์การติดตาม
- ความสำคัญสูงสุดที่ตัวผู้ใช้: การตัดสินใจติดตามที่แท้จริงของผู้ใช้จะต้องเกิดขึ้นบนหน้าต่างระบบดั้งเดิมของ Apple เสมอ

Stage 1: User Onboarding / Core Value Realization
│
▼
Stage 2: Contextual Pre-Permission Primer Screen
(Single "Continue" Action ── Explains Purpose)
│
▼
Stage 3: Native iOS ATTrackingManager System Modal
(User Selects "Allow" or "Ask App not to Track")
│
┌────────────┴────────────┐
▼ ▼
[.authorized] [.denied]
ATT Authorized Graceful Fallback
(IDFA normally to Platform APIs
available) (AdAttributionKit / SKAN)
การ optimization สตริง NSUserTrackingUsageDescription
การกำหนดค่า Info.plist เพื่อความโปร่งใสของวัตถุประสงค์
คีย์ NSUserTrackingUsageDescription ในไฟล์ Info.plist ทำหน้าที่กำหนดข้อความอธิบายที่จะแสดงผลโดยตรงภายในหน้าต่างแจ้งเตือน ATT ของระบบ Apple อ้างอิงตามเอกสารของ Apple ข้อความนี้ต้องกระชับ เฉพาะเจาะจง และอธิบายอย่างถูกต้องว่าข้อมูลการติดตามถูกนำไปใช้อย่างไร
การทดสอบรูปแบบสตริงอธิบายวัตถุประสงค์ที่ชัดเจนโดยไม่เปลี่ยนความหมายหลัก
เมื่อทำการทดสอบรูปแบบสตริง ทุกรูปแบบที่ทดสอบจะต้องอธิบายแนวปฏิบัติตามการติดตามจริงของแอปพลิเคชันอย่างถูกต้องและครบถ้วน:
- เน้นการปรับแต่งส่วนบุคคล (Personalization Focus): อธิบายว่าข้อมูลถูกนำมาใช้อย่างไรในการปรับแต่งคำแนะนำเนื้อหาและข้อเสนอผลิตภัณฑ์
- เน้นความเกี่ยวข้องของโปรโมชั่น (Ad Relevance Focus): อธิบายว่าข้อมูลถูกใช้เพื่อส่งมอบโปรโมชั่นที่เกี่ยวข้องและหลีกเลี่ยงการแสดงโฆษณาที่ซ้ำซ้อน
- เน้นการวัดผลแคมเปญ (Campaign Measurement Focus): อธิบายว่าข้อมูลถูกนำมาใช้อย่างไรในการวัดประสิทธิภาพของพันธมิตรทางการตลาด
การกำหนดค่าด้านล่างนี้แสดงตัวอย่างของ NSUserTrackingUsageDescription โดยควรใช้ต่อเมื่อข้อความดังกล่าวอธิบายแนวทางการติดตามจริงของแอปได้อย่างแม่นยำเท่านั้น:
```xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>NSUserTrackingUsageDescription</key>
<string>ข้อมูลของคุณจะถูกนำไปใช้เพื่อส่งมอบคำแนะนำผลิตภัณฑ์เฉพาะบุคคล ข้อเสนอโปรโมชั่นที่เกี่ยวข้อง และวัดผลประสิทธิภาพของแคมเปญการตลาด</string>
</dict>
</plist>
การออกแบบจังหวะเวลาในการกระตุ้นคำขอ (Prompt Timing) ในวงจรการใช้งานของผู้ใช้
ข้อ พิจารณาเรื่องจังหวะเวลาตลอดเส้นทางการใช้งานของผู้ใช้
แม้ว่าการขอสิทธิ์ ATT ในการเปิดแอปครั้งแรกจะสามารถทำได้ในแง่เทคนิค แต่การแสดงหน้าต่างแจ้งเตือนหลังจากที่ผู้ใช้ได้สัมผัสกับประโยชน์เบื้องต้นของผลิตภัณฑ์แล้ว สามารถช่วยให้บริบทที่เกี่ยวข้องกับคำขอสิทธิ์มีความชัดเจนมากขึ้น:
- การกระตุ้นหลังการเริ่มต้นใช้งาน (Post-Onboarding Trigger): แสดงหน้าต่างแจ้งเตือนหลังจากผู้ใช้ตั้งค่าบัญชีเสร็จสิ้นและกำหนดค่าความต้องการเบื้องต้นเรียบร้อยแล้ว
- การกระตุ้นตามเหตุการณ์สำคัญ (Contextual Milestone Trigger): แสดงหน้าต่างแจ้งเตือนหลังจากทำกิจกรรมหลักของผู้ใช้สำเร็จ (เช่น เล่นบทช่วยสอนในเกมจบ, บันทึกสินค้าโปรดในแอปช้อปปิ้ง, หรือบุ๊กมาร์กบทความในแอปเนื้อหา)
การใช้งาน ATTrackingManager เชิงวิศวกรรมด้วยภาษา Swift
การจัดการสถานะการทำงานของแอปพลิเคชันและความปลอดภัยของเธรด (Thread Safety)
อ้างอิงจากเอกสาร API ของ Apple ฟังก์ชัน ATTrackingManager.requestTrackingAuthorization จะแสดงหน้าต่างโมดอลเฉพาะเมื่อสถานะของแอปพลิเคชันเป็น .active เท่านั้น หากมีหน้าต่างขอสิทธิ์อื่นกำลังทำงานอยู่หรือรอดำเนินการ หน้าต่างแจ้งเตือนของระบบจะไม่ปรากฏขึ้น และระบบปฏิบัติการจะไม่จัดคิวคำขอที่ส่งมาพร้อมกัน

การใช้งานด้านล่างนี้เป็นการแยกการจัดการสถานะการอนุญาตออกจากหน้าจออธิบายล่วงหน้าแบบกำหนดเอง:
import UIKit
import AppTrackingTransparency
import AdSupport
final class ATTManager {
static let shared = ATTManager()
private init() {}
/// Evaluates current authorization status
var currentStatus: ATTrackingManager.AuthorizationStatus {
return ATTrackingManager.trackingAuthorizationStatus
}
/// Determines if tracking authorization can be presented
var canRequestAuthorization: Bool {
return currentStatus == .notDetermined
}
/// Requests tracking authorization with application active state verification
/// - Parameter completion: Closure returning the resolved authorization status
func requestAuthorization(completion: @escaping (ATTrackingManager.AuthorizationStatus) -> Void) {
guard canRequestAuthorization else {
completion(currentStatus)
return
}
// Verify application is active before invoking requestTrackingAuthorization
guard UIApplication.shared.applicationState == .active else {
print("ATT request skipped: application is not active. Call again once active if status remains notDetermined.")
completion(currentStatus)
return
}
DispatchQueue.main.async {
ATTrackingManager.requestTrackingAuthorization { status in
DispatchQueue.main.async {
switch status {
case .authorized:
// Read the current advertising identifier on demand; do not persist a cached IDFA.
let idfa = ASIdentifierManager.shared().advertisingIdentifier.uuidString
print("ATT Authorized - IDFA available: \(idfa)")
case .denied:
print("ATT Denied - Advertising identifier returns zeroes")
case .restricted:
print("ATT Restricted by system profile")
case .notDetermined:
print("ATT State unresolved")
@unknown default:
print("ATT Unknown state encountered")
}
completion(status)
}
}
}
}
}
/// Illustrative custom UIViewController for a HIG-aligned pre-permission primer
final class ATTPrimerViewController: UIViewController {
private let continueButton = UIButton(type: .system)
private let titleLabel = UILabel()
private let descriptionLabel = UILabel()
var onContinueTapped: (() -> Void)?
override func viewDidLoad() {
super.viewDidLoad()
setupUI()
}
private func setupUI() {
view.backgroundColor = .systemBackground
// Prevent interactive swipe-to-dismiss when presented modally to ensure single-path navigation
isModalInPresentation = true
titleLabel.text = "ช่วยเราปรับแต่งประสบการณ์การใช้งานของคุณให้ดียิ่งขึ้น"
titleLabel.font = .boldSystemFont(ofSize: 20)
titleLabel.textAlignment = .center
titleLabel.numberOfLines = 0
descriptionLabel.text = "เราใช้ข้อมูลเพื่อปรับแต่งคำแนะนำผลิตภัณฑ์และส่งมอบข้อเสนอโปรโมชั่นที่เกี่ยวข้อง ในหน้าจอถัดไป คุณจะเห็นหน้าต่างขอสิทธิ์มาตรฐานของ Apple เพื่อยืนยันการเลือกของคุณ"
descriptionLabel.font = .systemFont(ofSize: 15)
descriptionLabel.textAlignment = .center
descriptionLabel.textColor = .secondaryLabel
descriptionLabel.numberOfLines = 0
// Apple HIG guidance calls for a single Continue or Next action
continueButton.setTitle("ดำเนินการต่อ", for: .normal)
continueButton.titleLabel?.font = .boldSystemFont(ofSize: 17)
continueButton.addTarget(self, action: #selector(handleContinue), for: .touchUpInside)
let stack = UIStackView(arrangedSubviews: [titleLabel, descriptionLabel, continueButton])
stack.axis = .vertical
stack.spacing = 20
stack.translatesAutoresizingMaskIntoConstraints = false
view.addSubview(stack)
NSLayoutConstraint.activate([
stack.centerXAnchor.constraint(equalTo: view.centerXAnchor),
stack.centerYAnchor.constraint(equalTo: view.centerYAnchor),
stack.leadingAnchor.constraint(equalTo: view.leadingAnchor, constant: 32),
stack.trailingAnchor.constraint(equalTo: view.trailingAnchor, constant: -32)
])
}
@objc private func handleContinue() {
// Presentation and dismissal mechanics are illustrative and should be adapted to the app's navigation architecture.
dismiss(animated: true) { [weak self] in
self?.onContinueTapped?()
}
}
}
การกู้คืนหลังการปฏิเสธสิทธิ์: นำทางผู้ใช้ไปยังการตั้งค่าระบบโดยไม่ละเมิดนโยบาย
เมื่อใดควรแนะนำเวิร์กโฟลว์การตั้งค่าสำรอง
เมื่อผู้ใช้เลือก “ขอให้แอปไม่ติดตาม” สถานะการอนุญาตจะเปลี่ยนเป็น .denied และการเรียกใช้งาน requestTrackingAuthorization ในครั้งต่อๆ ไปจะคืนค่าเป็น .denied ทันทีโดยไม่แสดงหน้าต่างแจ้งเตือน อย่างไรก็ตาม หากในภายหลังผู้ใช้เปิดใช้งานฟีเจอร์ที่ได้รับประโยชน์จากการติดตามอย่างชัดเจน (เช่น การขอตั้งค่าโฆษณาเฉพาะบุคคลในโปรไฟล์บัญชี) แอปสามารถจัดเตรียมเส้นทางที่ไม่บังคับขู่เข็ญเพื่อไปยังหน้าการตั้งค่าของ iOS ได้
การใช้ UIApplication.openSettingsURLString
เพื่อนำทางผู้ใช้ไปยังหน้าการตั้งค่าของแอป ให้ใช้ UIApplication.openSettingsURLString:
if let settingsURL = URL(string: UIApplication.openSettingsURLString),
UIApplication.shared.canOpenURL(settingsURL) {
UIApplication.shared.open(settingsURL, options: [:], completionHandler: nil)
}
โปรดทราบว่า API นี้จะเปิดหน้าการตั้งค่าเฉพาะของแอปพลิเคชัน โดยจะไม่ส่งลิงก์เชิงลึกไปยังหน้าการตั้งค่าหลักอย่าง การตั้งค่า > ความเป็นส่วนตัวและความปลอดภัย > การติดตาม โดยตรง
ขอบเขตของนโยบาย App Store
- ห้ามแจ้งเตือนเซ้าซี้ซ้ำๆ: ห้ามแสดงแบนเนอร์แจ้งเตือนซ้ำๆ เพื่อกระตุ้นให้ผู้ใช้เปิดใช้งานการติดตามในการตั้งค่า
- ห้ามล็อกฟีเจอร์: ห้ามปิดการใช้งานฟังก์ชันการทำงานหลักเนื่องจากการติดตามยังคงถูกปิดอยู่ในการตั้งค่า
เมทริกซ์การตัดสินใจเปรียบเทียบ: กลยุทธ์ Pre-Permission เทียบกับการแจ้งเตือนเมื่อเปิดแอปครั้งแรก
| มิติ | หน้าต่างแจ้งเตือนเมื่อเปิดแอปครั้งแรก (Default Cold-Launch Prompt) | โมดอลขอสิทธิ์แบบบังคับล็อก (Hard-Gated Permission Modal) | หน้าจออธิบายล่วงหน้าที่สอดคล้องกับ HIG (HIG-Aligned Pre-Permission Primer) |
|---|---|---|---|
| บริบทของผู้ใช้ก่อนหน้าต่างแจ้งเตือน | ต่ำ (ไม่มีการโต้ตอบกับผลิตภัณฑ์) | แตกต่างกันไป (บล็อกการเข้าถึง) | มีบริบท (แสดงผลหลังจากโต้ตอบในส่วนที่เกี่ยวข้อง) |
| คำแนะนำ UI/สิทธิ์ของ Apple | อนุญาตเมื่อคำขอและการใช้ข้อมูลเป็นไปตามข้อกำหนด | ไม่อนุญาตเมื่อการเข้าถึงหรือผลตอบแทนขึ้นอยู่กับการติดตาม | อนุญาตเมื่อปฏิบัติตามข้อจำกัดหน้าจอเตือนล่วงหน้าของ HIG และกฎการติดตาม |
| ข้อจำกัด UI หน้าจอเตือนล่วงหน้าของ Apple | ไม่เกี่ยวข้อง | ไม่เกี่ยวข้อง | ปุ่มดำเนินการต่อเนื่อง/ถัดไปเดี่ยว; ไม่มีหน้าต่างแจ้งเตือนปลอม |
| จังหวะเวลาในการขัดจังหวะเพื่อขอสิทธิ์ | ทันทีที่เปิดแอป | บล็อกการใช้งาน | เหตุการณ์สำคัญตามบริบท |
| อัตรา Opt-In ที่สังเกตได้ | ต้องวัดผลจากข้อมูลจริง | ไม่อนุญาต | ต้องวัดผลจากข้อมูลจริง |
คำถามที่พบบ่อย (FAQ)
แอปพลิเคชันสามารถเสนอสกุลเงินในแอปหรือส่วนลดเพื่อแลกกับการให้สิทธิ์ ATT ได้หรือไม่?
แอปสามารถแสดงหน้าต่างแจ้งเตือน ATT ครั้งที่สองได้หรือไม่หากผู้ใช้เลือก "ขอให้แอปไม่ติดตาม" ในตอนแรก?
หน้าจออธิบายก่อนขอสิทธิ์ (Pre-permission primer) ขัดต่อแนวทาง App Store ของ Apple หรือไม่?
สรุปและกรอบการตัดสินใจ
การปรับปรุงประสบการณ์การขอสิทธิ์ ATT ต้องอาศัยการเปิดเผยวัตถุประสงค์ที่ชัดเจนและการกำหนดจังหวะเวลาที่สอดคล้องกับบริบท เมื่อจำเป็นต้องมีคำอธิบายเพิ่มเติม หน้าจออธิบายล่วงหน้าที่สอดคล้องกับหลักเกณฑ์ HIG สามารถช่วยให้บริบทก่อนหน้าต่างระบบ พร้อมทั้งปรับประสบการณ์การขอสิทธิ์ให้สอดคล้องกับแนวทางการติดตามและอินเทอร์เฟซที่ Apple เผยแพร่
หากยังคงต้องการบริบทการระบุแหล่งที่มาหรือการเริ่มต้นใช้งานหลังจากที่ถูกปฏิเสธสิทธิ์ ATT แอปพลิเคชันสามารถเลือกใช้กลไกที่ได้รับอนุญาตแยกต่างหาก เช่น AdAttributionKit, การผสานการทำงาน SKAdNetwork ที่มีอยู่, หรือการกำหนดเส้นทางตามบริบทของผู้ใช้ที่เป็นของแอปพลิเคชันเองอย่างแท้จริง ซึ่งยังคงอยู่ภายใต้กฎการติดตามของ Apple
สำหรับพฤติกรรมการกำหนดเส้นทางตามบริบทและการระบุแหล่งที่มาเฉพาะของผลิตภัณฑ์ สามารถศึกษาเพิ่มเติมได้ที่ เอกสารประกอบของ OpoInstall และประเมินการนำไปใช้งานเทียบกับข้อกำหนดการติดตามของ Apple ที่เกี่ยวข้อง
วัสดุและเอกสารที่เกี่ยวข้อง
-
แนวคิด: App Tracking Transparency, การ optimization IDFA, หน้าจออธิบายก่อนขอสิทธิ์ (Pre-Permission Primers), ฟันเนลความยินยอม
-
เทคโนโลยี: StoreKit Framework, AppTrackingTransparency Framework, OpoInstall Mobile SDK
-
มาตรฐาน: หลักเกณฑ์อินเทอร์เฟซมนุษย์ของ Apple ด้านความเป็นส่วนตัว, แนวทางตรวจสอบ App Store ส่วน 5.1.2
-
API:
ATTrackingManager.requestTrackingAuthorization,UIApplication.openSettingsURLString,ASIdentifierManager
เอกสารอย่างเป็นทางการ
Share this article



