Το App Tracking Transparency (ATT) είναι ένας μηχανισμός του iOS που απαιτεί ρητή συγκατάθεση του χρήστη για πρόσβαση στο αναγνωριστικό διαφήμισης IDFA πριν από την παρακολούθηση σε εφαρμογές και ιστότοπους. Εισήχθη στο iOS 14.5 και υποχρέωσε όλους τους προγραμματιστές να εμφανίζουν έναν διάλογο συστήματος με αίτημα άδειας παρακολούθησης. Σύμφωνα με το Apple Developer Documentation, κάθε εφαρμογή που χρησιμοποιεί IDFA για στοχευμένη διαφήμιση ή απόδοση πρέπει να ενσωματώνει το πλαίσιο ATT και να λάβει άδεια πρόσβασης.
Βασικά σημεία
Το App Tracking Transparency είναι ένα πλαίσιο της Apple για την προστασία του απορρήτου των χρηστών, που παρουσιάστηκε στο iOS 14.5. Απαιτεί από τις εφαρμογές να λαμβάνουν ρητή άδεια για πρόσβαση στο αναγνωριστικό διαφήμισης της συσκευής (IDFA) προτού το χρησιμοποιήσουν για παρακολούθηση.
Πριν από την εμφάνιση του ATT, οι προγραμματιστές μπορούσαν να διαβάζουν το IDFA χωρίς άδεια, επιτρέποντας στα διαφημιστικά δίκτυα να δημιουργούν προφίλ χρηστών και να παρακολουθούν τη δραστηριότητά τους μεταξύ εφαρμογών και ιστοτόπων. Η Apple χαρακτήρισε αυτή την προσέγγιση παραβίαση του απορρήτου και εισήγαγε τον υποχρεωτικό διάλογο συγκατάθεσης.
Το πλαίσιο είναι διαθέσιμο από το iOS 14.0, αλλά έγινε υποχρεωτικό για όλες τις εφαρμογές που χρησιμοποιούν IDFA με την κυκλοφορία του iOS 14.5 τον Απρίλιο του 2021. Σύμφωνα με το Flurry Analytics, μετά την εφαρμογή του ATT, λιγότερο από το 25% των χρηστών στις ΗΠΑ έδωσε συγκατάθεση για παρακολούθηση, γεγονός που άλλαξε ριζικά την αγορά κινητής διαφήμισης.
Το ATT ελέγχει την ύπαρξη άδειας μέσω ενός ειδικού διαλόγου συστήματος που η εφαρμογή δεν μπορεί να τροποποιήσει ή να παρακάμψει. Ο χρήστης βλέπει ένα τυπικό αναδυόμενο παράθυρο με το κείμενο που παρέχεται από τον προγραμματιστή και επιλέγει “Να επιτρέπεται” ή “Να ζητηθεί από την εφαρμογή να μην παρακολουθεί”.
Η 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, η Apple δεν αυστηροποίησε τις απαιτήσεις ATT, αλλά πρόσθεσε την Αναφορά Απορρήτου Εφαρμογών (App Privacy Report) — μια αναφορά που δείχνει στον χρήστη πόσο συχνά οι εφαρμογές έχουν πρόσβαση σε αισθητήρες και δεδομένα. Το iOS 16 επέκτεινε τον έλεγχο: ο χρήστης μπορεί ανά πάσα στιγμή να αλλάξει τις ρυθμίσεις παρακολούθησης μέσω Ρυθμίσεις → Απόρρητο → Παρακολούθηση.
Σημαντικό: εάν ο χρήστης επιλέξει “Να ζητηθεί από την εφαρμογή να μην παρακολουθεί” στον διάλογο ATT, η εφαρμογή δεν λαμβάνει την τιμή IDFA, αντίθετα επιστρέφεται μια συμβολοσειρά μηδενικών — 00000000-0000-0000-0000-000000000000. Η προσπάθεια ανάγνωσης του IDFA με άλλο τρόπο ή μέσω παρακάμψεων οδηγεί σε απόρριψη της εφαρμογής στο App Store.
Από το iOS 17, η Apple ενίσχυσε τους ελέγχους: εάν μια εφαρμογή ζητά IDFA χωρίς να εμφανίζει τον διάλογο συστήματος ATT, λαμβάνει άρνηση σε επίπεδο λειτουργικού συστήματος, όχι απλώς ένα κενό αναγνωριστικό. Αυτό αποκλείει τη δυνατότητα συλλογής IDFA στο παρασκήνιο χωρίς τη γνώση του χρήστη.
Η διαδικασία αιτήματος ATT αποτελείται από τρία στάδια: έλεγχος κατάστασης, εμφάνιση διαλόγου συστήματος και επεξεργασία απάντησης. Ο προγραμματιστής δεν μπορεί να παραλείψει κανένα βήμα — το λειτουργικό σύστημα ελέγχει κάθε στάδιο.
Πριν από την κλήση του διαλόγου, η εφαρμογή πρέπει να ελέγξει την τρέχουσα κατάσταση μέσω του ATTrackingManager. Οι πιθανές καταστάσεις είναι: notDetermined (δεν έχει ζητηθεί ακόμα), restricted (απαγορεύεται από πολιτικές συσκευής), denied (ο χρήστης αρνήθηκε), authorized (επιτρέπεται).
Εάν η κατάσταση έχει ήδη καθοριστεί (authorized ή denied), δεν είναι δυνατή η εκ νέου κλήση του διαλόγου — ο χρήστης έχει λάβει οριστική απόφαση. Ο μόνος τρόπος αλλαγής της απόφασης είναι μέσω των ρυθμίσεων συστήματος iOS.
Για τον έλεγχο της κατάστασης χρησιμοποιείται η ιδιότητα ATTrackingManager.trackingAuthorizationStatus. Η κλήση πρέπει να γίνεται στο κύριο νήμα, καθώς ο διάλογος συστήματος είναι στοιχείο διεπαφής χρήστη.
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 με ένα closure που λαμβάνει το αποτέλεσμα της επιλογής του χρήστη. Σημαντικό: ο διάλογος εμφανίζεται μόνο μία φορά. Εάν ο προγραμματιστής επιχειρήσει να τον καλέσει ξανά, το σύστημα θα αγνοήσει το αίτημα.
Το κείμενο στον διάλογο αποτελείται από δύο μέρη: τον τίτλο συστήματος (δεν μπορεί να αλλάξει) και ένα προσαρμοσμένο μήνυμα που ο προγραμματιστής ορίζει στο Info.plist μέσω του κλειδιού NSUserTrackingUsageDescription.
Ο διάλογος πρέπει να εμφανίζεται σε φυσικό πλαίσιο — όχι αμέσως κατά την εκκίνηση της εφαρμογής, αλλά κατά την πρώτη προσπάθεια χρήσης λειτουργικότητας που σχετίζεται με την παρακολούθηση. Η Apple συνιστά την εμφάνιση του διαλόγου αφού ο χρήστης έχει κατανοήσει την αξία της λειτουργίας.
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 (Identifier for Advertisers) είναι ένα μοναδικό αναγνωριστικό διαφήμισης συσκευής iOS, που χρησιμοποιείται για στοχευμένη διαφήμιση και απόδοση εγκαταστάσεων. Πριν από το ATT, οι προγραμματιστές το λάμβαναν μέσω του ASIdentifierManager χωρίς περιορισμούς. Μετά την εισαγωγή του ATT, η πρόσβαση στο IDFA αποκλείεται έως ότου ο χρήστης δώσει ρητή συγκατάθεση.
Το IDFA είναι μια συμβολοσειρά UUID, μοναδική για κάθε συσκευή iOS. Τα διαφημιστικά δίκτυα χρησιμοποιούν το IDFA για: παρακολούθηση εγκαταστάσεων εφαρμογών (απόδοση), εμφάνιση σχετικών διαφημίσεων βάσει ενδιαφερόντων του χρήστη, μέτρηση αποτελεσματικότητας διαφημιστικών καμπανιών και retargeting — επαναφορά χρηστών που δεν ολοκλήρωσαν μια στοχευμένη ενέργεια.
Μετά την άρνηση παρακολούθησης από τον χρήστη, το ASIdentifierManager επιστρέφει την τιμή 00000000-0000-0000-0000-000000000000. Ωστόσο, η εφαρμογή μπορεί ακόμα να διαβάζει το IDFA για τεχνικούς σκοπούς (π.χ. αντιμετώπιση απάτης), αλλά δεν μπορεί να το μεταδίδει σε διαφημιστικά δίκτυα.
Σύμφωνα με το Singular (2024), το παγκόσμιο ποσοστό συγκατάθεσης ATT είναι 25-35%, με την Ευρώπη (GDPR) να έχει υψηλότερο ποσοστό (40-50%) από τις ΗΠΑ (15-25%). Αυτό ανάγκασε τις διαφημιστικές πλατφόρμες να αναπτύξουν εναλλακτικές μεθόδους απόδοσης.
Το SKAdNetwork είναι ένα πλαίσιο της Apple για απόδοση εγκαταστάσεων χωρίς αποκάλυψη του IDFA. Λειτουργεί σε επίπεδο λειτουργικού συστήματος: το διαφημιστικό δίκτυο στέλνει μια υπογεγραμμένη postback την οποία η Apple επαληθεύει και μεταβιβάζει στον προγραμματιστή. Η απόδοση γίνεται χωρίς ταυτοποίηση του συγκεκριμένου χρήστη, μόνο σε επίπεδο καμπάνιας.
Η Probabilistic Attribution χρησιμοποιεί πολλαπλά σήματα συσκευής — μοντέλο, έκδοση iOS, ζώνη ώρας, φωτεινότητα οθόνης — για πιθανοτική αντιστοίχιση εγκαταστάσεων με διαφημιστικές εμφανίσεις. Ωστόσο, η Apple απαγορεύει αυτή τη μέθοδο στους κανόνες της και η χρήση της μπορεί να οδηγήσει σε απόρριψη της εφαρμογής.
Οι Google, Adjust και AppsFlyer ανέπτυξαν τις δικές τους υβριδικές λύσεις, συνδυάζοντας το SKAdNetwork με τα δικά τους συγκεντρωτικά δεδομένα. Για παράδειγμα, το Google Ads Conversion Tracking χρησιμοποιεί postback SKAdNetwork και δικά του μοντέλα μηχανικής μάθησης για απόδοση χωρίς IDFA.
Για την ενσωμάτωση του ATT απαιτείται η προσθήκη του κλειδιού NSUserTrackingUsageDescription στο Info.plist και η εισαγωγή του πλαισίου AppTrackingTransparency. Παρακάτω παρατίθενται τα βήματα για Swift και Objective-C.
Το πρώτο βήμα — προσθήκη στο Info.plist του κλειδιού NSUserTrackingUsageDescription με κείμενο που εξηγεί γιατί η εφαρμογή χρειάζεται παρακολούθηση. Αυτό το κείμενο θα εμφανιστεί στον διάλογο συστήματος. Παράδειγμα: “Το IDFA σας χρησιμοποιείται για την εμφάνιση εξατομικευμένων διαφημίσεων και την παρακολούθηση της αποτελεσματικότητας των καμπανιών”.
Χωρίς αυτό το κλειδί, η κλήση του requestTrackingAuthorization θα προκαλέσει σφάλμα στην εφαρμογή — η Apple ελέγχει ρητά την ύπαρξη του NSUserTrackingUsageDescription πριν από την εμφάνιση του διαλόγου. Το κείμενο πρέπει να είναι σύντομο, συγκεκριμένο και να αντιστοιχεί στην πραγματική χρήση των δεδομένων.
Σημαντικό: το κλειδί προστίθεται χειροκίνητα μέσω της καρτέλας Info του Xcode ή με επεξεργασία της πηγής XML του Info.plist. Μετά την προσθήκη, ανακατασκευάστε το έργο και ελέγξτε ότι το κλειδί εμφανίζεται στο τελικό δυαδικό αρχείο.
<!-- Info.plist -->
<key>NSUserTrackingUsageDescription</key>
<string>This identifier is used to deliver
personalized ads and measure campaign performance.</string>
Σε ένα πραγματικό έργο, το αίτημα ATT είναι καλύτερο να καλείται πριν από την πρώτη εκκίνηση της διαφημιστικής μονάδας ή του tracker. Συνιστάται να εξηγήσετε εκ των προτέρων την αξία της συγκατάθεσης στον χρήστη σε ξεχωριστή οθόνη (pre-permission prompt) — αυτό αυξάνει το ποσοστό συγκατάθεσης κατά 20-30%.
Το pre-permission prompt είναι ένα δικό σας UI που δείχνει το όφελος από την ενεργοποίηση της παρακολούθησης (“Βοηθήστε μας να εμφανίζουμε σχετικές διαφημίσεις”). Μόνο μετά το πάτημα του κουμπιού “Συνέχεια” καλείται ο διάλογος συστήματος ATT. Η Adjust (2024) κατέγραψε αύξηση 40% στη συγκατάθεση όταν χρησιμοποιήθηκε οθόνη 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"))
)
}
}
}
Οι προγραμματιστές συχνά κάνουν τυπικά λάθη κατά την ενσωμάτωση του ATT που οδηγούν σε μείωση της μετατροπής συγκατάθεσης ή σε απόρριψη της εφαρμογής από τους συντονιστές του App Store. Ας εξετάσουμε τα πέντε πιο συνηθισμένα προβλήματα.
Το πιο συνηθισμένο λάθος — εμφάνιση του διαλόγου συστήματος ATT στην πρώτη οθόνη μετά τη φόρτωση της εφαρμογής. Ο χρήστης δεν κατανοεί ακόμα την αξία της εφαρμογής και με μεγάλη πιθανότητα πατά “Απόρριψη”. Η IronSource (2023) έδειξε μείωση 32% στη συγκατάθεση όταν το αίτημα γίνεται στην πρώτη οθόνη σε σύγκριση με αίτημα μετά την τρίτη συνεδρία.
Σύσταση: ζητήστε παρακολούθηση αφού ο χρήστης έχει εκτελέσει μια στοχευμένη ενέργεια (έχει δει περιεχόμενο, έχει ξεκινήσει την εισαγωγή) ή μετά από 3-5 συνεδρίες χρήσης της εφαρμογής. Αυτό αυξάνει την εμπιστοσύνη και την επίγνωση της αξίας.
Η εμφάνιση του διαλόγου συστήματος ATT χωρίς προηγούμενη εξήγηση — λάθος που μειώνει τη μετατροπή στο 15-20%. Ο χρήστης βλέπει ένα απροσδόκητο αίτημα και αρνείται ενστικτωδώς. Η οθόνη pre-permission με επεξήγηση του οφέλους αυξάνει τη συγκατάθεση στο 35-45%.
Το κείμενο του pre-permission πρέπει να είναι συγκεκριμένο: “Επιτρέψτε την εμφάνιση σχετικών διαφημίσεων — μας βοηθά να παραμένουμε δωρεάν”. Αποφύγετε γενικές φράσεις — μειώνουν την εμπιστοσύνη. Η GameAnalytics το 2023 έδειξε ότι το pre-permission με επεξήγηση οφέλους δίνει 28% περισσότερες συγκαταθέσεις από μια κενή οθόνη.
Εάν ο χρήστης έχει ήδη αρνηθεί την παρακολούθηση ή η κατάσταση είναι restricted (γονικός έλεγχος, εταιρικές πολιτικές), η εφαρμογή δεν πρέπει να καλέσει ξανά τον διάλογο ATT. Η εκ νέου κλήση δεν λειτουργεί και θεωρείται παραβίαση του απορρήτου. Αντ' αυτού, μεταβείτε στο SKAdNetwork και σε συμφραζόμενη διαφήμιση.
Στην κατάσταση restricted, η εφαρμογή δεν μπορεί να προσδιορίσει εάν η επιλογή “Να επιτρέπονται αιτήματα παρακολούθησης” είναι ενεργοποιημένη στις ρυθμίσεις. Σε αυτή την περίπτωση, χρησιμοποιείτε πάντα απόδοση χωρίς εναλλακτική μέσω SKAdNetwork και μην εμφανίζετε οθόνη pre-permission.
Η ανάγνωση του IDFA μέσω του ASIdentifierManager.shared().advertisingIdentifier χωρίς προηγούμενη άδεια ATT επιστρέφει μια συμβολοσειρά μηδενικών. Ορισμένοι προγραμματιστές προσπαθούν να χρησιμοποιήσουν παλιές μεθόδους πρόσβασης στο IDFA μέσω ιδιωτικών API — αυτό οδηγεί εγγυημένα σε απόρριψη της εφαρμογής κατά την αναθεώρηση.
Η Apple χρησιμοποιεί στατικό αναλυτή κώδικα και μηχανική μάθηση για τον εντοπισμό παρακάμψεων. Ακόμα κι αν η εφαρμογή περάσει την αναθεώρηση, οι επόμενες ενημερώσεις ή αυτόματοι έλεγχοι μπορεί να αποκαλύψουν την παράβαση και να οδηγήσουν σε απαγόρευση του λογαριασμού προγραμματιστή.
Πολύ μεγάλο, ασαφές ή παραπλανητικό κείμενο στο κλειδί NSUserTrackingUsageDescription — λόγος απόρριψης της εφαρμογής από τους συντονιστές. Η Apple ελέγχει εάν η περιγραφή αντιστοιχεί στην πραγματική χρήση των δεδομένων. Εάν η εφαρμογή δεν έχει διαφημίσεις αλλά αναφέρει “για διαφημιστικούς σκοπούς”, ο συντονιστής θα απορρίψει την έκδοση.
Συνιστώμενη μορφή: συγκεκριμένη περιγραφή του σκοπού χρήσης του IDFA σε 2-3 προτάσεις. Παράδειγμα για εφαρμογή χωρίς διαφημίσεις: “Το αναγνωριστικό χρησιμοποιείται για αναλυτικά στοιχεία και πρόληψη απάτης. Τα δεδομένα δεν μεταβιβάζονται σε τρίτους και δεν χρησιμοποιούνται για δημιουργία προφίλ”.
Συχνές Ερωτήσεις
Εάν η εφαρμογή χρησιμοποιεί IDFA ή παρακολούθηση χωρίς ATT, η Apple θα την απορρίψει κατά τη διαδικασία αναθεώρησης. Ακόμα και χωρίς παρακολούθηση, συνιστάται η προσθήκη ATT για διαφάνεια, διαφορετικά ο κίνδυνος απόρριψης στην επόμενη ενημέρωση αυξάνεται.
Ναι, η εφαρμογή λειτουργεί πλήρως, αλλά τα διαφημιστικά δίκτυα δεν θα λάβουν IDFA για εξατομίκευση και απόδοση. Όλες οι λειτουργίες της εφαρμογής, εκτός από τις εξατομικευμένες διαφημίσεις, παραμένουν διαθέσιμες.
Ναι, ο χρήστης μπορεί να αλλάξει την απόφαση ανά πάσα στιγμή μέσω Ρυθμίσεις → Απόρρητο → Παρακολούθηση. Η εφαρμογή δεν μπορεί να επαναφέρει προγραμματιστικά την κατάσταση — μόνο μέσω των ρυθμίσεων συστήματος.
Χρησιμοποιήστε οθόνη pre-permission με επεξήγηση οφέλους, ζητήστε παρακολούθηση όχι κατά την πρώτη εκκίνηση αλλά μετά από στοχευμένη ενέργεια. Η Meta (2024) έδειξε αύξηση 35% στη συγκατάθεση με καθυστερημένο αίτημα.
Οι εφαρμογές στην κατηγορία “Για παιδιά” δεν μπορούν να χρησιμοποιούν IDFA και ATT για παρακολούθηση σύμφωνα με τους κανόνες της Apple. Επίσης, απαγορεύεται να μεταβιβάζουν δεδομένα σε τρίτους για αναλυτικά στοιχεία ή διαφήμιση.
Σύνοψη
Θα αναπτύξουμε μια εφαρμογή για κινητά έτοιμη για χρήση
Η IT Sectr δημιουργεί εφαρμογές iOS και Android για νεοφυείς επιχειρήσεις και επιχειρήσεις από το 2017. Θα σας συμβουλεύσουμε και θα προτείνουμε την καλύτερη λύση.
Διαβάστε επίσης