IDFA (Identifier for Advertisers) — to unikalny identyfikator urządzenia w iOS, przeznaczony do celów reklamowych i atrybucji instalacji. Wraz z pojawieniem się App Tracking Transparency (ATT) w iOS 14.5 uzyskanie IDFA wymaga wyraźnej zgody użytkownika za pośrednictwem systemowego okna dialogowego. Według Apple App Tracking Transparency Documentation, 2025, bez zgody ATT aplikacja otrzymuje zerowy identyfikator. App Tracking Transparency radykalnie zmieniła ekosystem reklamy mobilnej, zmniejszając dostępność IDFA o 80% po wdrożeniu.
Najważniejsze
IDFA (Identifier for Advertisers) — to unikalny alfanumeryczny identyfikator przypisywany każdemu urządzeniu Apple do celów reklamowych. W przeciwieństwie do IDFV (Identifier for Vendor), IDFA jest jednolity dla wszystkich aplikacji na urządzeniu i może zostać zresetowany przez użytkownika w dowolnym momencie przez Ustawienia — Prywatność — Reklamy — Resetuj identyfikator.
Głównym przeznaczeniem IDFA jest atrybucja instalacji i śledzenie skuteczności kampanii reklamowych na urządzeniach Apple. Sieci reklamowe używają IDFA do łączenia kliknięcia w reklamę z instalacją aplikacji, budowania profili użytkowników i wyświetlania spersonalizowanych reklam. Od czasu wdrożenia ATT odsetek użytkowników udostępniających IDFA wynosi średnio 20–35% według różnych szacunków platform analitycznych.
Według danych Flurry Analytics (2025), po iOS 18 wskaźnik adopcji ATT wzrósł do 92% aktywnych urządzeń, ale udział użytkowników zgadzających się na śledzenie spadł do 22%. Doprowadziło to do fundamentalnej zmiany w branży reklamy mobilnej, zmuszając sieci reklamowe do poszukiwania alternatywnych metod atrybucji.
Kluczowa cecha IDFA — nie zawiera danych osobowych użytkownika i nie jest powiązany z Apple ID. Jednak Apple klasyfikuje go jako identyfikator podlegający regulacjom App Tracking Transparency.
App Tracking Transparency (ATT) — to framework Apple wprowadzony w iOS 14.5, który wymaga wyraźnej zgody użytkownika przed odczytaniem IDFA. Bez zgody metoda asIdentifierManager zwraca zerowy identyfikator (00000000-0000-0000-0000-000000000000), a aplikacja nie może śledzić użytkownika.
ATT jest zaimplementowany poprzez klasę ATTrackingManager z jedyną publiczną metodą requestTrackingAuthorization(completionHandler:). Po wywołaniu tej metody system wyświetla natywne okno dialogowe z tekstem, który programista określa za pomocą klucza NSUserTrackingUsageDescription w Info.plist. Użytkownik może wybrać jedną z trzech opcji: „Zezwól na śledzenie”, „Poproś aplikację o nieśledzenie” lub „Odrzuć”.
Status autoryzacji jest śledzony przez ATTrackingManager.trackingAuthorizationStatus, który może przyjmować cztery wartości: notDetermined, restricted, denied lub authorized. Przed żądaniem ATT zaleca się sprawdzenie bieżącego statusu i niewywoływanie okna dialogowego, jeśli status jest już określony — począwszy od iOS 17, ponowne wywołanie requestTrackingAuthorization przy statusie denied nie pokazuje okna dialogowego i zwraca błąd.
Czas żądania ATT krytycznie wpływa na odsetek zgód. Badania Singular (2025) pokazują, że żądanie ATT na ekranie onboardingu (przy pierwszym uruchomieniu) daje konwersję 35–45%, podczas gdy żądanie po zakończeniu jakiejś czynności (np. po rejestracji) zwiększa konwersję do 55–65%. Zaleca się wyświetlenie ekranu pre-permission z własnym projektem i wyjaśnieniem wartości śledzenia dla użytkownika przed systemowym oknem ATT.
Ważne: aplikacja może wywołać requestTrackingAuthorization tylko raz przed otrzymaniem odpowiedzi. Gdy użytkownik wybierze „Odrzuć” lub „Poproś o nieśledzenie”, okno dialogowe nie jest już wyświetlane na urządzeniu. Programista powinien przewidzieć mechanizmy awaryjne do pracy bez IDFA, aby aplikacja działała poprawnie w warunkach ograniczonego śledzenia.
Wraz z wydaniem iOS 18 Apple zaostrzyła wymagania wobec aplikacji używających reklamowego identyfikatora. Wszystkie aplikacje, które żądają IDFA lub przesyłają dane urządzenia do celów reklamowych, muszą spełniać nowe zasady App Store. Nieprzestrzeganie wymagań prowadzi do odrzucenia kompilacji na etapie moderacji App Store Connect.
Począwszy od iOS 18, każda aplikacja musi zawierać Privacy Manifest (plik privacy.xcprivacy) z deklaracją wszystkich API używanych do śledzenia. Dla IDFA używany jest klucz NSPrivacyTracking i NSPrivacyTrackingDomains, w którym określa się domeny sieci reklamowych, którym przekazywany jest identyfikator. Bez prawidłowego manifestu aplikacja jest odrzucana podczas moderacji App Store Connect.
Apple wprowadziła również wymóg obowiązkowego wskazania przyczyny użycia reklamowego identyfikatora w opisie aplikacji. Jeśli aplikacja używa IDFA do atrybucji instalacji, musi używać SKAdNetwork jako głównej metody, a IDFA tylko jako dodatkowy sygnał zwiększający dokładność atrybucji.
Wraz ze wzrostem ograniczeń dotyczących IDFA branża opracowała kilka alternatywnych podejść. SKAdNetwork (StoreKit Ad Network) — oficjalny mechanizm atrybucji od Apple, który działa bez IDFA i nie wymaga zgody użytkownika. SKAdNetwork używa podpisanych żądań postback między siecią reklamową a App Store, gwarantując prywatność użytkownika.
Inne alternatywy obejmują: atrybucję probabilistyczną opartą na adresie IP, wersji OS i innych sygnałach urządzenia; prywatne agregowane API, takie jak Private Click Measurement (PCM) od WebKit; oraz własne rozwiązania platform reklamowych wykorzystujące uczenie maszynowe do przewidywania konwersji. Dla rynku chińskiego używany jest również CAID (Cellular Advertising ID) oparty na danych sieci komórkowej operatora.
Implementacja żądania IDFA wymaga integracji App Tracking Transparency i prawidłowej obsługi wszystkich możliwych statusów autoryzacji. Poniżej znajduje się pełny przykład dla Swift z ekranem pre-permission.
Przykład demonstruje pełny cykl pracy z IDFA: sprawdzenie statusu, wyświetlenie ekranu pre-permission, wywołanie systemowego okna ATT i uzyskanie identyfikatora po autoryzacji.
import AppTrackingTransparency
import AdSupport
func requestIDFAAccess() {
let status = ATTrackingManager.trackingAuthorizationStatus
switch status {
case .notDetermined:
// Wyświetlamy ekran pre-permission z wyjaśnieniem
showPrePermissionScreen { accepted in
guard accepted else { return }
ATTrackingManager.requestTrackingAuthorization { newStatus in
handleATTStatus(newStatus)
}
}
case .authorized:
// Użytkownik już wyraził zgodę — otrzymujemy IDFA
let idfa = ASIdentifierManager.shared().advertisingIdentifier
print("IDFA: \(idfa.uuidString)")
case .denied, .restricted:
// Przekierowujemy użytkownika do ustawień
redirectToSettings()
@unknown default:
break
}
}
private func handleATTStatus(status: ATTrackingManager.AuthorizationStatus) {
if status == .authorized {
let idfa = ASIdentifierManager.shared().advertisingIdentifier
// Przekazujemy IDFA do sieci reklamowej
sendIDFAToAdNetwork(idfa.uuidString)
}
}
Ponieważ większość użytkowników odrzuca żądanie ATT, programiści potrzebują zestawu strategii do efektywnej pracy bez identyfikatora. Głównym podejŜiem jest kombinacja SKAdNetwork i probabilistycznych metod atrybucji.
SKAdNetwork (SKAN) — to framework Apple do atrybucji instalacji, który nie wymaga IDFA i nie wyświetla okna zgody. Sieć reklamowa rejestruje swój SKAdNetwork ID w Info.plist aplikacji, a po instalacji App Store wysyła podpisany postback z informacją o kampanii. SKAN 4.0, wprowadzony w iOS 17, obsługuje multiple conversions, source identifiers i coarse-grained conversion values.
Ograniczenia SKAN: opóźnienie postback od 24 do 48 godzin, brak identyfikatora użytkownika, ograniczona liczba conversion values (do 64). Mimo to SKAN stał się de facto standardem dla atrybucji iOS po wdrożeniu ATT, a wszystkie duże sieci reklamowe są zobowiązane do jego obsługi na urządzeniach Apple.
Sieci reklamowe, takie jak Meta i Google, opracowały własne rozwiązania oparte na uczeniu maszynowym, które przewidują konwersje bez identyfikatora użytkownika. Meta Aggregated Events Measurement (AEM) wykorzystuje zagregowane dane do atrybucji, a Google Attribution modeluje konwersje na podstawie danych historycznych.
Dla programisty ważne jest wdrożenie wielu metod atrybucji jednocześnie: SKAdNetwork jako głównej, atrybucji serwerowej przez sieci reklamowe i własnych narzędzi analitycznych z modelowaniem konwersji. Kombinacja metod pozwala odzyskać do 70–80% dokładności atrybucji w porównaniu z epoką IDFA. Zaleca się testowanie różnych kombinacji metod na etapie beta-testów, aby wybrać optymalny zestaw dla konkretnej aplikacji i grupy docelowej.
Często zadawane pytania
IDFA — to unikalny kod urządzenia iPhone lub iPad, którego sieci reklamowe używają do wyświetlania spersonalizowanych reklam i mierzenia skuteczności kampanii. Od iOS 14.5 aplikacja musi poprosić o zgodę przed uzyskaniem IDFA za pośrednictwem systemowego okna App Tracking Transparency.
IDFV (Identifier for Vendor) — to identyfikator unikalny dla wszystkich aplikacji jednego programisty na urządzeniu. W przeciwieństwie do IDFA, IDFV nie wymaga zgody ATT i jest zawsze dostępny. IDFA jest jednolity dla wszystkich aplikacji, IDFV tylko dla aplikacji jednego dostawcy (według bundle ID).
Uzyskanie IDFA bez zgody użytkownika jest niemożliwe. Od iOS 14.5 ASIdentifierManager.advertisingIdentifier zwraca zerowy identyfikator (00000000-0000-0000-0000-000000000000), jeśli użytkownik nie wyraził zgody przez ATT. Jedynym legalnym sposobem jest wywołanie ATTrackingManager.requestTrackingAuthorization i uzyskanie statusu authorized.
NSUserTrackingUsageDescription — to klucz w Info.plist aplikacji, który zawiera tekst wyświetlany w systemowym oknie ATT. Tekst powinien wyjaśniać użytkownikowi, dlaczego aplikacja potrzebuje śledzenia. Przykład: „Twój IDFA jest używany do wyświetlania spersonalizowanych reklam i mierzenia skuteczności kampanii”.
Nie, IDFA to ekskluzywny identyfikator ekosystemu Apple. Na Androidzie używany jest GAID (Google Advertising ID) lub AAID (Android Advertising ID). Oba pełnią podobną funkcję, ale podlegają różnym zasadom — na Androidzie użytkownik może zresetować identyfikator lub wyłączyć personalizację reklam w ustawieniach Google.
Podsumowanie
Opracujemy aplikację mobilną pod klucz
IT Sectr tworzy aplikacje na iOS i Androida dla startupów i firm od 2017 roku. Doradzimy Ci i zaproponujemy najlepsze rozwiązanie.
Przeczytaj również