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. И трите механизма работят заедно: етикетите показват какви данни събира приложението, 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 преди показване на диалоговия прозорец. Текстът трябва да бъде кратък, конкретен и да съответства на реалното използване на данните.

Важно: ключът се добавя ръчно чрез раздела Info в Xcode или чрез редактиране на 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 трябва да бъде конкретен: “Разрешите показването на подходящи реклами — това ни помага да останем безплатни”. Избягвайте общи фрази — те намаляват доверието. 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

Твърде дълъг, неясен или подвеждащ текст в ключа 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 г. Ще ви консултираме и ще предложим най-доброто решение.

Обсъдете проекта

Прочетете също