ATT iOS: шта је то, механизам захтева за праћење и IDFA

Аутор: IT Sectr Објављено: 2026-05-20 Време читања: 10 мин

App Tracking Transparency (ATT) је механизам iOS-а који захтева изричиту сагласност корисника за приступ рекламном идентификатору IDFA пре праћења у апликацијама и на веб-сајтовима. Уведен у iOS 14.5, ATT је обавезао све програмере да прикажу системски дијалог са захтевом за дозволу за праћење. Према Apple Developer Documentation, свака апликација која користи IDFA за циљану рекламу или атрибуцију мора да интегрише ATT оквир и добије дозволу приступа.

Главно

  • ATT — App Tracking Transparency, оквир за захтев за праћење у iOS 14.5+
  • IDFA — рекламни идентификатор уређаја, чији је приступ ограничен без сагласности
  • Системски дијалог — стандардни прозор са текстом апликације који се не може мењати
  • Дозвола за праћење — обавезан захтев за приказивање реклама и атрибуцију инсталација
  • Одбијање — корисник може у сваком тренутку повући дозволу у Подешавањима

Шта је ATT (App Tracking Transparency)?

App Tracking Transparency је Apple-ов оквир за заштиту приватности корисника, представљен у iOS 14.5. Он захтева од апликација да добију изричиту дозволу за приступ рекламном идентификатору уређаја (IDFA) пре него што га искористе за праћење.

Пре појаве ATT-а, програмери су могли да читају IDFA без захтева, што је омогућавало рекламним мрежама да граде профиле корисника и прате њихову активност између апликација и веб-сајтова. Apple је овај приступ назвао кршењем приватности и увео обавезни дијалог сагласности.

Оквир је доступан од iOS 14.0, али је постао обавезан за све апликације које користе IDFA са изласком iOS 14.5 у априлу 2021. Према Flurry Analytics, након увођења ATT-а, мање од 25% корисника у САД је дало сагласност за праћење, што је коренито променило тржиште мобилног оглашавања.

ATT проверава постојање дозволе кроз посебан системски дијалог који апликација не може да модификује или заобиђе. Корисник види стандардни прозор са текстом који је обезбедио програмер и бира “Дозволи” или “Затражи од апликације да не прати”.

Како је ATT повезан са приватношћу у iOS-у

Apple позиционира ATT као део опште стратегије приватности, која укључује и Privacy Nutrition Label у App Store-у и Privacy Manifest. Сва три механизма раде заједно: ознаке показују које податке апликација прикупља, Манифест декларише разлоге коришћења API-ја, а ATT даје кориснику контролу над праћењем.

Одбијање праћења не блокира рад саме апликације — корисник може да настави да користи све функције, али рекламне мреже неће добити IDFA за персонализацију и атрибуцију. Алтернативе IDFA-у постале су SKAdNetwork и Probabilistic Attribution од Apple-а.

Према Branch Metrics, након увођења ATT-а, удео апликација које примају IDFA пао је са 70% на 20% на глобалном нивоу. То је довело до преиспитивања приступа атрибуцији инсталација и монетизацији кроз оглашавање.

Промене у iOS 15 и 16

У iOS 15, Apple није пооштрио захтеве ATT-а, али је додао App Privacy Report — извештај који кориснику показује колико често апликације приступају сензорима и подацима. iOS 16 је проширио контролу: корисник може у сваком тренутку да промени поставке праћења кроз Подешавања → Приватност → Праћење.

Важно: ако корисник изабере “Затражи од апликације да не прати” у ATT дијалогу, апликација не добија вредност IDFA-а, већ се уместо њега враћа низ нула — 00000000-0000-0000-0000-000000000000. Покушај читања IDFA-а на други начин или заобилазним методама води одбијању апликације у App Store-у.

Почев од iOS 17, Apple је појачао провере: ако апликација затражи IDFA без приказивања системског ATT дијалога, добија одбијање на нивоу оперативног система, а не само празан идентификатор. То искључује могућност прикупљања IDFA-а у позадини без знања корисника.

Како функционише захтев за праћење у iOS-у

Процес захтева ATT састоји се од три фазе: провера статуса, приказивање системског дијалога и обрада одговора. Програмер не може да прескочи ниједан корак — оперативни систем контролише сваку фазу.

Провера статуса ауторизације

Пре позивања дијалога, апликација мора да провери тренутни статус кроз ATTrackingManager. Могући статуси су: notDetermined (још није тражено), restricted (забрањено политикама уређаја), denied (корисник је одбио), authorized (дозвољено).

Ако је статус већ одређен (authorized или denied), поновни позив дијалога није могућ — корисник је донео коначну одлуку. Једини начин да се промени одлука је кроз системска подешавања iOS-а.

За проверу статуса користи се својство ATTrackingManager.trackingAuthorizationStatus. Позив мора да се деси на главној нити, јер је системски дијалог 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
    }
}

Приказивање системског дијалога

За приказивање дијалога позива се метода requestTrackingAuthorization са затварањем које прима резултат корисничког избора. Важно: дијалог се приказује само једном. Ако програмер покуша да га поново позове, систем ће игнорисати захтев.

Текст у дијалогу састоји се из два дела: системски наслов (који се не може мењати) и прилагођена порука коју програмер наводи у Info.plist-у кроз кључ NSUserTrackingUsageDescription.

Дијалог треба да се појави у природном контексту — не одмах при покретању апликације, већ при првом покушају коришћења функционалности повезане са праћењем. Apple препоручује приказивање дијалога након што је корисник схватио вредност функције.

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("Корисник је одбио праћење")
            default:
                break
            }
        }
    }
}

IDFA и ограничење приступа

IDFA (Identifier for Advertisers) је јединствени рекламни идентификатор iOS уређаја, који се користи за циљану рекламу и атрибуцију инсталација. Пре ATT-а, програмери су га добијали кроз ASIdentifierManager без ограничења. Након увођења ATT-а, приступ IDFA-у је блокиран док корисник не да изричиту сагласност.

Шта је IDFA и зашто је потребан

IDFA је UUID низ, јединствен за сваки iOS уређај. Рекламне мреже користе IDFA за: праћење инсталација апликација (атрибуција), приказивање релевантних реклама на основу интересовања корисника, мерење ефикасности рекламних кампања и ретаргетинг — враћање корисника који нису завршили циљану радњу.

Након што корисник одбије праћење, ASIdentifierManager враћа вредност 00000000-0000-0000-0000-000000000000. Притом апликација и даље може да чита IDFA у техничке сврхе (на пример, антипревара), али не може да га прослеђује рекламним мрежама.

Према Singular (2024), глобални ниво сагласности за ATT износи 25-35%, при чему је у Европи (GDPR) показатељ виши (40-50%) него у САД (15-25%). То је натерало рекламне платформе да развију алтернативне методе атрибуције.

Алтернативе IDFA-у: SKAdNetwork и Probabilistic Attribution

SKAdNetwork је Apple-ов оквир за атрибуцију инсталација без откривања IDFA-а. Ради на нивоу оперативног система: рекламна мрежа шаље потписани постбек који Apple проверава и прослеђује програмеру. Атрибуција се дешава без идентификације конкретног корисника, само на нивоу кампање.

Probabilistic Attribution користи више сигнала уређаја — модел, верзију iOS-а, временску зону, осветљеност екрана — за вероватносно подударање инсталација са рекламним приказима. Међутим, Apple забрањује овај метод у својим правилима и његово коришћење може довести до одбијања апликације.

Google, Adjust и AppsFlyer развили су сопствена хибридна решења, комбинујући SKAdNetwork са сопственим агрегираним подацима. На пример, Google Ads Conversion Tracking користи SKAdNetwork постбекове и сопствене моделе машинског учења за атрибуцију без IDFA-а.

Имплементација ATT у коду апликације

За интеграцију ATT-а потребно је додати кључ NSUserTrackingUsageDescription у Info.plist и увезти оквир AppTrackingTransparency. У наставку су дати кораци за Swift и Objective-C.

Подешавање Info.plist-а

Први корак — додавање у Info.plist кључа NSUserTrackingUsageDescription са текстом који објашњава зашто је апликацији потребно праћење. Овај текст ће се приказати у системском дијалогу. Пример: “Ваш IDFA се користи за приказивање персонализованих реклама и праћење ефикасности кампања”.

Без овог кључа, позив requestTrackingAuthorization ће довести до краха апликације — Apple изричито проверава присуство NSUserTrackingUsageDescription пре приказивања дијалога. Текст мора бити кратак, конкретан и одговарати стварној употреби података.

Важно: кључ се додаје ручно кроз Xcode Info tab или уређивањем XML изворника Info.plist-а. Након додавања, прекомпајлирајте пројекат и проверите да се кључ појављује у коначном бинарном фајлу.

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

Потпуна интеграција у Swift-у

У реалном пројекту, ATT захтев је боље позвати пре првог покретања рекламног модула или трацкера. Препоручује се претходно објашњење вредности сагласности на засебном екрану (pre-permission prompt) — то повећава проценат сагласности за 20-30%.

Pre-permission prompt је сопствени UI који приказује корист од укључивања праћења (“Помозите нам да приказујемо релевантне рекламе”). Тек након притиска на дугме “Настави” позива се системски ATT дијалог. Adjust (2024) је забележио раст сагласности од 40% при коришћењу 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"))
            )
        }
    }
}

Грешке при раду са ATT

Програмери често праве типичне грешке при интеграцији ATT-а које доводе до смањења конверзије сагласности или до одбијања апликације од стране модератора App Store-а. Размотримо пет најчешћих проблема.

ATT захтев одмах након покретања апликације

Најчешћа грешка — приказивање системског ATT дијалога на првом екрану након учитавања апликације. Корисник још не разуме вредност апликације и са великом вероватноћом притиска “Одбиј”. IronSource (2023) је показао смањење сагласности за 32% при захтеву на првом екрану у поређењу са захтевом након треће сесије.

Препорука: захтевајте праћење након што је корисник извршио циљану радњу (прегледао садржај, започео онбординг) или након 3-5 сесија коришћења апликације. То повећава поверење и свест о вредности.

Недостатак pre-permission екрана

Приказивање системског ATT дијалога без претходног објашњења — грешка која смањује конверзију на 15-20%. Корисник види неочекивани захтев и инстинктивно одбија. Pre-permission екран са објашњењем користи повећава сагласност на 35-45%.

Текст pre-permission-а мора бити конкретан: “Дозволите приказивање релевантних реклама — то нам помаже да останемо бесплатни”. Избегавајте опште фразе — one смањују поверење. GameAnalytics је 2023. показао да pre-permission са објашњењем користи даје 28% више сагласности него празан екран.

Игнорисање статуса restricted и denied

Ако је корисник већ одбио праћење или је статус restricted (родитељска контрола, корпоративне политике), апликација не треба поново да позива ATT дијалог. Поновни позив не ради и доживљава се као кршење приватности. Уместо тога, пређите на SKAdNetwork и контекстуално оглашавање.

У статусу restricted, апликација не може да утврди да ли је опција “Дозволи захтеве за праћење” укључена у подешавањима. У овом случају увек користите атрибуцију без алтернативе кроз SKAdNetwork и не приказујте pre-permission екран.

Провера IDFA-а без позивања ATT-а

Читање IDFA-а кроз ASIdentifierManager.shared().advertisingIdentifier без претходне ATT дозволе враћа низ нула. Неки програмери покушавају да користе старе методе приступа IDFA-у кроз приватне API-је — то гарантовано води одбијању апликације при ревизији.

Apple користи статички анализатор кода и машинско учење за откривање заобилазних путева. Чак и ако апликација прође ревизију, накнадна ажурирања или аутоматске провере могу открити кршење и довести до забране налога програмера.

Нетачан текст у NSUserTrackingUsageDescription

Превише дугачак, неjасан или обмањујући текст у кључу NSUserTrackingUsageDescription — разлог за одбијање апликације од стране модератора. Apple проверава да ли опис одговара стварној употреби података. Ако апликација нема рекламе, али наводи “у рекламне сврхе”, модератор ће одбити верзију.

Препоручени формат: конкретан опис сврхе коришћења IDFA-а у 2-3 реченице. Пример за апликацију без реклама: “Идентификатор се користи за аналитику и спречавање превара. Подаци се не преносе трећим лицима и не користе се за профилисање”.

Често постављана питања

Шта ће се десити ако не додам ATT у апликацију?

Ако апликација користи IDFA или праћење без ATT-а, Apple ће је одбити у процесу ревизије. Чак и у одсуству праћења, препоручује се додавање ATT-а ради транспарентности, иначе ризик од одбијања при следећем ажурирању расте.

Да ли апликација ради без сагласности за праћење?

Да, апликација ради у потпуности, али рекламне мреже неће добити IDFA за персонализацију и атрибуцију. Све функције апликације, осим персонализованих реклама, остају доступне.

Може ли се ресетовати ATT статус у iOS-у?

Да, корисник може променити одлуку у сваком тренутку кроз Подешавања → Приватност → Праћење. Апликација не може програмски да ресетује статус — само кроз системска подешавања.

Како повећати проценат ATT сагласности?

Користите pre-permission екран са објашњењем користи, захтевајте праћење не при првом покретању, већ након извршења циљане радње. Meta (2024) је показала раст сагласности од 35% при одложеном захтеву.

Да ли ATT утиче на апликације за децу?

Апликације у категорији “За децу” не могу да користе IDFA и ATT за праћење према Apple правилима. Такође им је забрањено да преносе податке трећим лицима за аналитику или оглашавање.

Закључци

  • ATT — App Tracking Transparency, обавезан оквир за захтев приступа IDFA-у у iOS 14.5+
  • IDFA — рекламни идентификатор уређаја, заштићен ATT-ом од неовлашћеног приступа
  • Системски дијалог — корисник увек види дијалог који апликација не може да измени или заобиђе
  • Pre-permission — сопствени екран објашњења користи, који повећава сагласност за 20-40%
  • SKAdNetwork — атрибуција без алтернативе од Apple-а за апликације без приступа IDFA-у
  • Конверзија — глобални ниво сагласности износи 25-35%, у Европи до 50% захваљујући GDPR-у
  • Интегришите ATT пре позивања било ког трацкера и обавезно додајте кључ NSUserTrackingUsageDescription у Info.plist

Развићемо мобилну апликацију под кључ

IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.

Разговарајте о пројекту

Прочитајте такође