App Tracking Transparency (ATT) adalah mekanisme iOS yang memerlukan persetujuan eksplisit pengguna untuk mengakses pengenal iklan IDFA sebelum pelacakan di aplikasi dan situs web. Diperkenalkan di iOS 14.5, ATT mewajibkan semua pengembang untuk menampilkan dialog sistem dengan permintaan izin pelacakan. Menurut Apple Developer Documentation, setiap aplikasi yang menggunakan IDFA untuk iklan tertarget atau atribusi harus mengintegrasikan framework ATT dan mendapatkan izin akses.
Poin Utama
App Tracking Transparency adalah framework dari Apple untuk melindungi privasi pengguna, diperkenalkan di iOS 14.5. Framework ini mewajibkan aplikasi untuk mendapatkan izin eksplisit untuk mengakses pengenal iklan perangkat (IDFA) sebelum menggunakannya untuk pelacakan.
Sebelum adanya ATT, pengembang dapat membaca IDFA tanpa izin, memungkinkan jaringan iklan membuat profil pengguna dan melacak aktivitas mereka antar aplikasi dan situs web. Apple menyebut pendekatan ini sebagai pelanggaran privasi dan memperkenalkan dialog persetujuan wajib.
Framework tersedia mulai iOS 14.0, tetapi menjadi wajib untuk semua aplikasi yang menggunakan IDFA dengan rilis iOS 14.5 pada April 2021. Menurut Flurry Analytics, setelah penerapan ATT, kurang dari 25% pengguna AS memberikan persetujuan untuk pelacakan, yang secara fundamental mengubah pasar iklan seluler.
ATT memeriksa keberadaan izin melalui dialog sistem khusus yang tidak dapat dimodifikasi atau dilewati oleh aplikasi. Pengguna melihat pop-up standar dengan teks yang disediakan pengembang dan memilih “Izinkan” atau “Minta Aplikasi untuk Tidak Melacak”.
Apple memposisikan ATT sebagai bagian dari strategi privasi keseluruhan, yang juga mencakup Privacy Nutrition Label di App Store dan Privacy Manifest. Ketiga mekanisme bekerja bersama: label menunjukkan data apa yang dikumpulkan aplikasi, Manifest menyatakan alasan penggunaan API, dan ATT memberikan kontrol kepada pengguna atas pelacakan.
Penolakan pelacakan tidak memblokir fungsi aplikasi itu sendiri — pengguna dapat terus menggunakan semua fitur, tetapi jaringan iklan tidak akan mendapatkan IDFA untuk personalisasi dan atribusi. Alternatif IDFA menjadi SKAdNetwork dan Probabilistic Attribution dari Apple.
Menurut Branch Metrics, setelah penerapan ATT, proporsi aplikasi yang menerima IDFA turun dari 70% menjadi 20% secara global. Hal ini menyebabkan peninjauan kembali pendekatan atribusi pemasangan dan monetisasi melalui iklan.
Di iOS 15, Apple tidak memperketat persyaratan ATT, tetapi menambahkan App Privacy Report — laporan yang menunjukkan kepada pengguna seberapa sering aplikasi mengakses sensor dan data. iOS 16 memperluas kontrol: pengguna dapat mengubah pengaturan pelacakan kapan saja melalui Pengaturan → Privasi → Pelacakan.
Penting: jika pengguna memilih “Minta Aplikasi untuk Tidak Melacak” dalam dialog ATT, aplikasi tidak menerima nilai IDFA, melainkan mengembalikan string nol — 00000000-0000-0000-0000-000000000000. Upaya membaca IDFA dengan cara lain atau melalui metode pintasan mengarah pada penolakan aplikasi di App Store.
Mulai iOS 17, Apple memperketat pemeriksaan: jika aplikasi meminta IDFA tanpa menampilkan dialog sistem ATT, aplikasi mendapat penolakan di tingkat OS, bukan sekadar pengenal kosong. Ini menghilangkan kemungkinan pengumpulan IDFA latar belakang tanpa sepengetahuan pengguna.
Proses permintaan ATT terdiri dari tiga tahap: pemeriksaan status, menampilkan dialog sistem, dan memproses respons. Pengembang tidak dapat melewatkan satu langkah pun — OS mengontrol setiap tahap.
Sebelum memanggil dialog, aplikasi harus memeriksa status saat ini melalui ATTrackingManager. Status yang mungkin: notDetermined (belum diminta), restricted (dilarang oleh kebijakan perangkat), denied (pengguna menolak), authorized (diizinkan).
Jika status sudah ditentukan (authorized atau denied), pemanggilan dialog ulang tidak dimungkinkan — pengguna telah membuat pilihan final. Satu-satunya cara untuk mengubah keputusan adalah melalui pengaturan sistem iOS.
Untuk memeriksa status, gunakan properti ATTrackingManager.trackingAuthorizationStatus. Panggilan harus terjadi di thread utama, karena dialog sistem adalah komponen 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
}
}
Untuk menampilkan dialog, panggil metode requestTrackingAuthorization dengan closure yang menerima hasil pilihan pengguna. Penting: dialog hanya ditampilkan satu kali. Jika pengembang mencoba memanggilnya lagi, sistem akan mengabaikan permintaan.
Teks dalam dialog terdiri dari dua bagian: judul sistem (tidak dapat diubah) dan pesan khusus yang ditentukan pengembang di Info.plist melalui kunci NSUserTrackingUsageDescription.
Dialog harus muncul dalam konteks alami — tidak segera saat aplikasi diluncurkan, tetapi pada upaya pertama menggunakan fungsionalitas yang terkait dengan pelacakan. Apple merekomendasikan menampilkan dialog setelah pengguna memahami nilai fitur tersebut.
func requestTrackingPermission() {
ATTrackingManager.requestTrackingAuthorization { status in
DispatchQueue.main.async {
switch status {
case .authorized:
let idfa = ASIdentifierManager.shared().advertisingIdentifier
print("IDFA: \(idfa)")
case .denied:
print("Pengguna menolak pelacakan")
default:
break
}
}
}
}
IDFA (Identifier for Advertisers) adalah pengenal iklan unik perangkat iOS, digunakan untuk iklan tertarget dan atribusi pemasangan. Sebelum ATT, pengembang mendapatkannya melalui ASIdentifierManager tanpa batasan. Setelah ATT diperkenalkan, akses ke IDFA diblokir sampai pengguna memberikan persetujuan eksplisit.
IDFA adalah string UUID, unik untuk setiap perangkat iOS. Jaringan iklan menggunakan IDFA untuk: melacak pemasangan aplikasi (atribusi), menampilkan iklan relevan berdasarkan minat pengguna, mengukur efektivitas kampanye iklan, dan retargeting — menarik kembali pengguna yang belum menyelesaikan tindakan target.
Setelah pengguna menolak pelacakan, ASIdentifierManager mengembalikan nilai 00000000-0000-0000-0000-000000000000. Namun, aplikasi masih dapat membaca IDFA untuk tujuan teknis (misalnya anti-penipuan), tetapi tidak dapat meneruskannya ke jaringan iklan.
Menurut Singular (2024), tingkat persetujuan ATT global adalah 25-35%, dengan Eropa (GDPR) lebih tinggi (40-50%) dibandingkan AS (15-25%). Hal ini memaksa platform iklan untuk mengembangkan metode atribusi alternatif.
SKAdNetwork adalah framework Apple untuk atribusi pemasangan tanpa mengungkapkan IDFA. Bekerja di tingkat OS: jaringan iklan mengirim postback yang ditandatangani, Apple memverifikasinya dan meneruskannya ke pengembang. Atribusi terjadi tanpa identifikasi pengguna tertentu, hanya di tingkat kampanye.
Probabilistic Attribution menggunakan banyak sinyal perangkat — model, versi iOS, zona waktu, kecerahan layar — untuk pencocokan probabilistik pemasangan dengan tayangan iklan. Namun, Apple melarang metode ini dalam aturannya, dan penggunaannya dapat menyebabkan penolakan aplikasi.
Google, Adjust, dan AppsFlyer telah mengembangkan solusi hybrid mereka sendiri, menggabungkan SKAdNetwork dengan data agregat mereka sendiri. Misalnya, Google Ads Conversion Tracking menggunakan postback SKAdNetwork dan model machine learning sendiri untuk atribusi tanpa IDFA.
Untuk integrasi ATT, Anda perlu menambahkan kunci NSUserTrackingUsageDescription ke Info.plist dan mengimpor framework AppTrackingTransparency. Berikut adalah langkah-langkah untuk Swift dan Objective-C.
Langkah pertama — tambahkan kunci NSUserTrackingUsageDescription ke Info.plist dengan teks yang menjelaskan mengapa aplikasi membutuhkan pelacakan. Teks ini akan ditampilkan dalam dialog sistem. Contoh: “IDFA Anda digunakan untuk menampilkan iklan yang dipersonalisasi dan melacak efektivitas kampanye”.
Tanpa kunci ini, panggilan requestTrackingAuthorization akan menyebabkan crash aplikasi — Apple secara eksplisit memeriksa keberadaan NSUserTrackingUsageDescription sebelum menampilkan dialog. Teks harus singkat, spesifik, dan sesuai dengan penggunaan data yang sebenarnya.
Penting: kunci ditambahkan secara manual melalui Xcode Info tab atau dengan mengedit sumber XML Info.plist. Setelah menambahkan, bangun ulang proyek dan periksa apakah kunci muncul di biner akhir.
<!-- Info.plist -->
<key>NSUserTrackingUsageDescription</key>
<string>This identifier is used to deliver
personalized ads and measure campaign performance.</string>
Dalam proyek nyata, lebih baik memanggil permintaan ATT sebelum modul iklan atau tracker pertama kali dijalankan. Disarankan untuk menjelaskan nilai persetujuan kepada pengguna terlebih dahulu di layar terpisah (pre-permission prompt) — ini meningkatkan persentase persetujuan sebesar 20-30%.
Pre-permission prompt adalah UI sendiri yang menunjukkan manfaat mengaktifkan pelacakan (“Bantu kami menampilkan iklan yang relevan”). Hanya setelah tombol “Lanjutkan” ditekan, dialog sistem ATT dipanggil. Adjust (2024) mencatat peningkatan persetujuan sebesar 40% saat menggunakan layar pre-permission.
final class TrackingManager {
static let shared = TrackingManager()
func requestTrackingIfNeeded() {
guard ATTrackingManager.trackingAuthorizationStatus
== .notDetermined
else { return }
ATTrackingManager.requestTrackingAuthorization { _ in
NotificationCenter.default.post(
Notification(Name("trackingStatusChanged"))
)
}
}
}
Pengembang sering membuat kesalahan tipikal saat mengintegrasikan ATT yang menyebabkan penurunan konversi persetujuan atau penolakan aplikasi oleh moderator App Store. Mari kita bahas lima masalah paling umum.
Kesalahan paling umum — menampilkan dialog sistem ATT di layar pertama setelah aplikasi dimuat. Pengguna belum memahami nilai aplikasi dan dengan kemungkinan besar menekan “Tolak”. IronSource (2023) menunjukkan penurunan persetujuan sebesar 32% saat permintaan di layar pertama dibandingkan dengan permintaan setelah sesi ketiga.
Rekomendasi: minta pelacakan setelah pengguna melakukan tindakan target (melihat konten, memulai onboarding) atau setelah 3-5 sesi penggunaan aplikasi. Ini meningkatkan kepercayaan dan kesadaran akan nilai.
Menampilkan dialog sistem ATT tanpa penjelasan sebelumnya — kesalahan yang menurunkan konversi menjadi 15-20%. Pengguna melihat permintaan yang tidak terduga dan secara naluriah menolak. Layar pre-permission dengan penjelasan manfaat meningkatkan persetujuan menjadi 35-45%.
Teks pre-permission harus spesifik: “Izinkan menampilkan iklan relevan — ini membantu kami tetap gratis”. Hindari frasa umum — frasa tersebut mengurangi kepercayaan. GameAnalytics pada tahun 2023 menunjukkan bahwa pre-permission dengan penjelasan manfaat memberikan 28% lebih banyak persetujuan daripada layar kosong.
Jika pengguna sudah menolak pelacakan atau statusnya restricted (kontrol orang tua, kebijakan perusahaan), aplikasi tidak boleh memanggil ulang dialog ATT. Panggilan ulang tidak berfungsi dan dianggap sebagai pelanggaran privasi. Sebagai gantinya, beralihlah ke SKAdNetwork dan iklan kontekstual.
Dalam status restricted, aplikasi tidak dapat menentukan apakah opsi “Izinkan Permintaan Pelacakan” diaktifkan di pengaturan. Dalam hal ini, selalu gunakan atribusi tanpa alternatif melalui SKAdNetwork dan jangan tampilkan layar pre-permission.
Membaca IDFA melalui ASIdentifierManager.shared().advertisingIdentifier tanpa izin ATT sebelumnya mengembalikan string nol. Beberapa pengembang mencoba menggunakan metode lama akses IDFA melalui API privat — ini dijamin menyebabkan penolakan aplikasi saat peninjauan.
Apple menggunakan penganalisis kode statis dan machine learning untuk mendeteksi jalan pintas. Bahkan jika aplikasi lolos peninjauan, pembaruan berikutnya atau pemeriksaan otomatis dapat mengungkap pelanggaran dan menyebabkan larangan akun pengembang.
Teks yang terlalu panjang, tidak jelas, atau menyesatkan dalam kunci NSUserTrackingUsageDescription — alasan penolakan aplikasi oleh moderator. Apple memeriksa apakah deskripsi sesuai dengan penggunaan data yang sebenarnya. Jika aplikasi tidak memiliki iklan tetapi menyatakan “untuk tujuan periklanan”, moderator akan menolak build.
Format yang direkomendasikan: deskripsi spesifik tujuan penggunaan IDFA dalam 2-3 kalimat. Contoh untuk aplikasi tanpa iklan: “Pengenal digunakan untuk analitik dan pencegahan penipuan. Data tidak diberikan kepada pihak ketiga dan tidak digunakan untuk pembuatan profil”.
Pertanyaan yang Sering Diajukan
Jika aplikasi menggunakan IDFA atau pelacakan tanpa ATT, Apple akan menolaknya dalam proses peninjauan. Bahkan tanpa pelacakan, disarankan menambahkan ATT untuk transparansi, jika tidak risiko penolakan pada pembaruan berikutnya meningkat.
Ya, aplikasi berfungsi sepenuhnya, tetapi jaringan iklan tidak akan mendapatkan IDFA untuk personalisasi dan atribusi. Semua fungsi aplikasi, kecuali iklan yang dipersonalisasi, tetap tersedia.
Ya, pengguna dapat mengubah keputusan kapan saja melalui Pengaturan → Privasi → Pelacakan. Aplikasi tidak dapat secara terprogram mereset status — hanya melalui pengaturan sistem.
Gunakan layar pre-permission dengan penjelasan manfaat, minta pelacakan bukan saat peluncuran pertama tetapi setelah melakukan tindakan target. Meta (2024) menunjukkan peningkatan persetujuan sebesar 35% dengan permintaan yang ditunda.
Aplikasi dalam kategori “Untuk Anak-anak” tidak dapat menggunakan IDFA dan ATT untuk pelacakan sesuai aturan Apple. Mereka juga dilarang mentransfer data ke pihak ketiga untuk analitik atau periklanan.
Kesimpulan
Kami akan mengembangkan aplikasi seluler turnkey
IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.
Baca juga