ATT iOS: apa itu, mekanisme permintaan pelacakan dan IDFA

Penulis: IT Sectr Diterbitkan: 2026-05-20 Waktu membaca: 10 mnt

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

  • ATT — App Tracking Transparency, framework permintaan pelacakan di iOS 14.5+
  • IDFA — pengenal iklan perangkat, aksesnya dibatasi tanpa persetujuan
  • Dialog sistem — pop-up standar dengan teks aplikasi yang tidak dapat diubah
  • Izin pelacakan — permintaan wajib untuk menampilkan iklan dan atribusi pemasangan
  • Penolakan — pengguna dapat mencabut izin kapan saja di Pengaturan

Apa itu ATT (App Tracking Transparency)?

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”.

Bagaimana ATT terkait dengan privasi di iOS

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.

Perubahan di iOS 15 dan 16

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.

Bagaimana cara kerja permintaan pelacakan di iOS

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.

Memeriksa status otorisasi

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.

swift
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
    }
}

Menampilkan dialog sistem

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.

swift
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 dan pembatasan akses

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.

Apa itu IDFA dan untuk apa digunakan

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.

Alternatif IDFA: SKAdNetwork dan Probabilistic Attribution

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.

Implementasi ATT dalam kode aplikasi

Untuk integrasi ATT, Anda perlu menambahkan kunci NSUserTrackingUsageDescription ke Info.plist dan mengimpor framework AppTrackingTransparency. Berikut adalah langkah-langkah untuk Swift dan Objective-C.

Konfigurasi Info.plist

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.

xml
<!-- Info.plist -->
<key>NSUserTrackingUsageDescription</key>
<string>This identifier is used to deliver
personalized ads and measure campaign performance.</string>

Integrasi lengkap di Swift

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.

swift
final class TrackingManager {
    static let shared = TrackingManager()

    func requestTrackingIfNeeded() {
        guard ATTrackingManager.trackingAuthorizationStatus
            == .notDetermined
        else { return }

        ATTrackingManager.requestTrackingAuthorization { _ in
            NotificationCenter.default.post(
                Notification(Name("trackingStatusChanged"))
            )
        }
    }
}

Kesalahan saat bekerja dengan ATT

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.

Permintaan ATT segera setelah aplikasi diluncurkan

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.

Tidak adanya layar pre-permission

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.

Mengabaikan status restricted dan denied

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.

Memeriksa IDFA tanpa memanggil ATT

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 NSUserTrackingUsageDescription yang tidak tepat

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

Apa yang terjadi jika saya tidak menambahkan ATT ke aplikasi?

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.

Apakah aplikasi berfungsi tanpa persetujuan pelacakan?

Ya, aplikasi berfungsi sepenuhnya, tetapi jaringan iklan tidak akan mendapatkan IDFA untuk personalisasi dan atribusi. Semua fungsi aplikasi, kecuali iklan yang dipersonalisasi, tetap tersedia.

Bisakah status ATT direset di iOS?

Ya, pengguna dapat mengubah keputusan kapan saja melalui Pengaturan → Privasi → Pelacakan. Aplikasi tidak dapat secara terprogram mereset status — hanya melalui pengaturan sistem.

Bagaimana cara meningkatkan persentase persetujuan ATT?

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.

Apakah ATT memengaruhi aplikasi untuk anak-anak?

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

  • ATT — App Tracking Transparency, framework wajib untuk permintaan akses IDFA di iOS 14.5+
  • IDFA — pengenal iklan perangkat, dilindungi oleh ATT dari akses tidak sah
  • Dialog sistem — pengguna selalu melihat dialog yang tidak dapat diubah atau dilewati aplikasi
  • Pre-permission — layar sendiri untuk menjelaskan manfaat, meningkatkan persetujuan 20-40%
  • SKAdNetwork — atribusi tanpa alternatif dari Apple untuk aplikasi tanpa akses IDFA
  • Konversi — tingkat persetujuan global 25-35%, di Eropa hingga 50% berkat GDPR
  • Integrasikan ATT sebelum memanggil tracker apa pun dan pastikan menambahkan kunci NSUserTrackingUsageDescription di Info.plist

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.

Diskusikan proyek

Baca juga