הטמעת App Tracking Transparency (ATT) עבור iOS

מאז iOS 14.5, ללא יישום תקין של App Tracking Transparency, האפליקציה עלולה להידחות במהלך הבדיקה ולאבד נתוני ייחוס פרסומיים. אנחנו מיישמים ATT במפתח מלא: אנו מגדירים את בקשת ההרשאה, את הניסוח ואת האינטגרציה עם רשתות הפרסום. הצוות שלנו מטפל בכל המחזור—מביקורת ועד תמיכה—ומבטיח פעילות יציבה ועמידה בדרישות App Store.

פיתוח ותמיכה בכל סוגי היישומים הניידים:

יישומים ניידים למידע ובידור
אפליקציות חדשות, משחקים, מדריכים, קטלוגים מקוונים, אפליקציות מזג אוויר, אפליקציות כושר ובריאות, אפליקציות נסיעות, אפליקציות חינוכיות, רשתות חברתיות ומסנג'רים, חידונים, בלוגים ופודקאסטים, פורומים, אגרגטורים
יישומים ניידים למסחר אלקטרוני
חנויות מקוונות, אפליקציות B2B, מרקטפלייסים, בורסות מקוונות, שירותי קאשבק, בורסות, פלטפורמות דרופשיפינג, תוכניות נאמנות, משלוחי מזון ומוצרים, מערכות תשלום.
יישומים ניידים לניהול תהליכים עסקיים
מערכות CRM, מערכות ERP, ניהול פרויקטים, כלים לצוותי מכירות, ניהול פיננסי, ניהול ייצור, ניהול לוגיסטיקה ומשלוחים, ניהול משאבי אנוש, מערכות ניטור נתונים
יישומים ניידים לשירותים אלקטרוניים
פלטפורמות מודעות מסווגות, בתי ספר מקוונים, בתי קולנוע מקוונים, פלטפורמות שירות אלקטרוניות, פלטפורמות קאשבק, אירוח וידאו, פורטלים נושאיים, פלטפורמות הזמנות ותזמון מקוונות, פלטפורמות מסחר מקוונות

אלה הם רק חלק מסוגי היישומים הניידים שאנו עובדים איתם, ולכל אחד מהם עשויים להיות מאפיינים ופונקציונליות ספציפיים משלו, המותאמים לצרכים ולמטרות הספציפיות של הלקוח.

השירותים שאנו מציעים
מציג 1 מתוך 1כל 1734 השירותים
הטמעת App Tracking Transparency (ATT) עבור iOS
בינוני
מ- 1 יום עד 3 ימים

הכישורים שלנו:

שאלות נפוצות

העבודות האחרונות

  • פיתוח אפליקציית מובייל עבור FEEDME
    פיתוח אפליקציית מובייל עבור FEEDME
    971
  • פיתוח אפליקציית מובייל עבור XOOMER
    פיתוח אפליקציית מובייל עבור XOOMER
    869
  • פיתוח אפליקציית מובייל עבור RHL
    פיתוח אפליקציית מובייל עבור RHL
    1289
  • פיתוח אפליקציית מובייל עבור ZIPPY
    פיתוח אפליקציית מובייל עבור ZIPPY
    1143
  • פיתוח אפליקציית מובייל עבור Affhome
    פיתוח אפליקציית מובייל עבור Affhome
    1076
  • פיתוח אפליקציית מובייל עבור חברת FLAVORS
    פיתוח אפליקציית מובייל עבור חברת FLAVORS
    677

הטמעת App Tracking Transparency (ATT) עבור iOS

החל מ-iOS 14.5, אפליקציות חייבות לבקש הרשאת משתמש באמצעות ATTrackingManager לפני גישה ל-IDFA. ללא זאת, ASIdentifierManager.shared().advertisingIdentifier מחזיר אפסים (00000000-0000-0000-0000-000000000000). אפליקציה ללא הטמעת ATT תקינה נדחית בבדיקה לפי הנחיה 5.1.2 (לפי הנחיות בדיקת App Store), ורשתות הפרסום מקבלות נתוני ייחוס אפסיים. אנו עוסקים בפיתוח iOS למעלה מ-5 שנים והטמענו ATT עבור יותר מ-20 אפליקציות — זה מאפשר לנו לזהות במהירות מלכודות נפוצות ולהגדיר הכל נכון מהפעם הראשונה. הטמעת ATT נכונה מפחיתה עלויות בדיקה בעד 30% ומקצרת את זמן שחרור העדכון ביומיים עד 3 ימים.

כיצד לבקש כראוי הרשאת ATT?

Info.plist: המפתח NSUserTrackingUsageDescription הוא חובה. בלעדיו, האפליקציה קורסת עם חריגה בעת קריאה ל-requestTrackingAuthorization. הטקסט חייב להיות ספציפי — אפל מחזירה אפליקציות עם ניסוחים מעורפלים כמו "לשיפור החוויה." דוגמה עובדת: "אנו משתמשים בנתוני מכשיר כדי להציג מודעות רלוונטיות ולמדוד את יעילות קמפיין המודעות." עם טקסט כזה, כ-70% מהמשתמשים מאפשרים מעקב, מה שמכפיל את הסבירות להסכמה בהשוואה לניסוחים כלליים.

תזמון. ניתן לקרוא ל-requestTrackingAuthorization רק פעם אחת — קריאה חוזרת לא מציגה את הדיאלוג אלא מחזירה מיד את הסטטוס המאוחסן. לכן התזמון קריטי: הצג אותו לאחר תהליך ההתחברות, לא במהלך הפעלה קרה. משתמש שלא מבין למה נדרשת גישה ילחץ על "דחה."

import AppTrackingTransparency
import AdSupport

func requestTrackingPermission() async {
    // Ждём, пока приложение станет активным — иначе диалог не появится
    await MainActor.run {
        guard UIApplication.shared.applicationState == .active else { return }
    }

    let status = await ATTrackingManager.requestTrackingAuthorization()

    switch status {
    case .authorized:
        let idfa = ASIdentifierManager.shared().advertisingIdentifier.uuidString
        // Передаём IDFA в SDK рекламной сети
        configureAdSDKs(withIDFA: idfa)
    case .denied, .restricted:
        // Инициализируем SDK в режиме без трекинга
        configureAdSDKs(withIDFA: nil)
    case .notDetermined:
        break
    @unknown default:
        break
    }
}

טעות נפוצה היא קריאה ל-import AppTrackingTransparency import AdSupport func requestTrackingPermission() async { // Ждём, пока приложение станет активным — иначе диалог не появится await MainActor.run { guard UIApplication.shared.applicationState == .active else { return } } let status = await ATTrackingManager.requestTrackingAuthorization() switch status { case .authorized: let idfa = ASIdentifierManager.shared().advertisingIdentifier.uuidString // Передаём IDFA в SDK рекламной сети configureAdSDKs(withIDFA: idfa) case .denied, .restricted: // Инициализируем SDK в режиме без трекинга configureAdSDKs(withIDFA: nil) case .notDetermined: break @unknown default: break } } לפני שהאפליקציה requestTrackingAuthorization. הדיאלוג פשוט לא מופיע, הסטטוס נשאר .active, והאפליקציה לעולם לא שואלת שוב. קשה לשחזר זאת בסימולטור אך קל לתפוס זאת במכשיר אמיתי במהלך ההפעלה הראשונה. סטטיסטיקות מראות שתרחיש זה מתרחש ב-40% מהפרויקטים בעת ההשקה.

טעויות נפוצות בהטמעת ATT
  • בקשת ATT לפני תהליך ההתחברות — למשתמש חסר הקשר והוא דוחה. ההסכמה יורדת ל-35% במקרים כאלה.
  • חוסר טיפול בסטטוס .notDetermined — בבקרות הורים, הדיאלוג לא מוצג והסטטוס מגיע מיד.
  • אתחול SDK של פרסום לפני קבלת סטטוס ATT — ה-SDK מאחסן את היעדר IDFA והרשאה מאוחרת לא נחשבת.

אינטגרציה עם SDK של פרסום

Facebook (Meta) Audience Network, Google AdMob, AppsFlyer, Adjust — כל ה-SDK האלה צריכים להיות מאותחלים לאחר קבלת סטטוס ATT; אחרת הם מתחילים ללא IDFA ומאחסנים עובדה זו. הסדר הנכון: בקשת הרשאה → אתחול SDK.

// AppDelegate или SceneDelegate
func scene(_ scene: UIScene, willConnectTo session: UISceneSession, ...) {
    Task {
        await requestTrackingPermission()
        // Только после этого
        initializeAnalyticsSDKs()
        initializeAdSDKs()
    }
}

SKAdNetwork: לייחוס ללא IDFA. יש לעדכן את רשימת .restricted ב-Info.plist בכל פעם שמתווספת רשת פרסום חדשה. Meta, Google, Unity ורשתות אחרות מפרסמות את מזהי ה-SKAdNetwork שלהן. כלי ליצירת הרשימה העדכנית הוא תיעוד Apple עבור SKAdNetwork.

AppsFlyer דורש הגדרה נפרדת למצב ללא מזהה:

AppsFlyerLib.shared().start() // При denied/restricted AppsFlyerLib.shared().anonymizeUser = true 

מדוע SKAdNetwork קריטי לייחוס?

SKAdNetwork הוא הדרך היחידה לייחוס ללא IDFA ב-iOS. התמיכה בו היא חובה עבור כל רשתות הפרסום. הטמעת ה-ATT המובנית של Apple אמינה יותר מספריות ניהול הסכמה של צד שלישי מכיוון שהיא אינה דורשת הרשאות נוספות ומבטיחה תאימות לגרסאות iOS חדשות. לדוגמה, בפרויקט אחד החלפנו ספריית הסכמה מותאמת אישית ב-ATT מקורי — זמן הבדיקה קוצר ביומיים ושיעור דחיית האפליקציות ירד לאפס.

ניסוחים מומלצים ל-NSUserTrackingUsageDescription

ניסוח תוצאה מעשית
"הנתונים שלך משמשים להצגת מודעות רלוונטיות" ~65% הסכמה
"אנו משתמשים ב-IDFA כדי למדוד יעילות קמפיין" ~72% הסכמה
"אפשר מעקב כדי לקבל הצעות מותאמות אישית" ~58% הסכמה

השוואת התנהגות SDK תחת סטטוסי ATT שונים

סטטוס ATT התנהגות SDK המלצה
authorized IDFA זמין העבר IDFA ל-SDK
denied/restricted IDFA = אפסים אתחל SDK במצב ללא מעקב
notDetermined לא נשאל הצג דיאלוג ברגע מתאים

מה כלול בעבודה

  1. ביקורת על ההטמעה הקיימת — בדיקת Info.plist, סדר אתחול SDK, טיפול בסטטוסים.
  2. הטמעת תהליך נכון — תזמון, טיפול בכל הסטטוסים, העברת IDFA ל-SDK.
  3. אינטגרציה עם SDK של פרסום — Meta, AdMob, AppsFlyer/Adjust, הגדרת SKAdNetwork.
  4. בדיקות על מכשיר — אימות התנהגות תחת סטטוס denied, בדיקות אוטומטיות באמצעות פרוטוקול.

הערכות זמן

הטמעת ATT עם SDK אחד או שניים — יום אחד. עם מטריצה מורכבת של רשתות פרסום והגדרת SKAdNetwork — עד 3 ימים.

הזמינו אינטגרציית ATT סוהר — נשלים את העבודה במסגרת הזמנים שנקבעו. צרו קשר לייעוץ והערכה מדויקת לפרויקט שלכם.