מה ATT דורש בפועל?
לפי ההנחיות של Apple, החל מ-iOS 14.5 חובה לקבל הרשאה דרך המסגרת AppTrackingTransparency לפני שעוקבים אחרי משתמש או ניגשים למזהה הפרסום של המכשיר. הבקשה מוצגת בחלון מערכת שהאפליקציה מפעילה בקריאה requestTrackingAuthorization. את התוצאה אפשר לבדוק בכל רגע במאפיין trackingAuthorizationStatus.
כמה כללים מתוך ההנחיות משפיעים ישירות על התכנון. חובה לכלול purpose string שמסביר למה אתם מבקשים לעקוב ולמה ישמשו הנתונים. מותר להציג לפני חלון המערכת מסך הסבר משלכם, כל עוד הוא שקוף, אבל אסור להתנות פונקציונליות באישור המעקב או להציע תמריץ תמורתו. משתמש שכיבה במכשיר את האפשרות Allow Apps to Request to Track לא יראה את החלון בכלל: כל בקשה נחשבת אצלו כסירוב. האחריות שלכם כוללת גם את מה שעושים ה-SDK-ים של צד שלישי שבתוך האפליקציה.
עדכון למי שמפיץ את האפליקציה גם באירופה: לפי Apple, החל מ-iOS 27.2 אפשר להשתמש באיחוד האירופי בגרסה חלופית של חלון ה-ATT, עם ניסוח שונה וכפתור Additional Information. לפי Apple, באפליקציות שמופצות בגרמניה, בצרפת, באיטליה, בפולין וברומניה זמינה רק הגרסה החלופית. בגרמניה, צרפת, איטליה, פולין ורומניה זו הגרסה היחידה שזמינה. הדרישה עצמה, מתי חובה לבקש אישור, לא משתנה.
מה נחשב מעקב ומה לא?
ההגדרה של Apple צרה יותר ממה שרוב האנשים חושבים. מעקב הוא קישור של נתוני משתמש או מכשיר שנאספו באפליקציה שלכם עם נתונים מאפליקציות, אתרים או נכסים לא מקוונים של חברות אחרות, לצורכי פרסום ממוקד או מדידת פרסום. גם שיתוף נתונים כאלה עם סוחרי מידע (data brokers) נחשב מעקב.
| נחשב מעקב לפי Apple | לא נחשב מעקב לפי Apple |
|---|---|
| הצגת מודעות ממוקדות לפי נתונים שנאספו באפליקציות ואתרים של חברות אחרות | קישור לנתוני צד שלישי שנעשה רק במכשיר עצמו, בלי שהמידע יוצא ממנו בצורה מזהה |
| שיתוף מיילים, מזהי פרסום או מזהים אחרים עם רשת פרסום לצורך רימרקטינג או קהלים דומים | שימוש של סוחר מידע בנתונים אך ורק לזיהוי ומניעת הונאות או לאבטחה |
| שילוב SDK של צד שלישי שמאחד את הנתונים שלכם עם נתונים של מפתחים אחרים לצורכי פרסום | העברת נתונים לסוכנות דיווח אשראי לצורך קביעת כושר אשראי |
מההגדרה נגזר מה לא נכלל בה: מדידה של התנהגות בתוך האפליקציה שלכם, שלא מקושרת לנתונים של חברות אחרות לצורכי פרסום. זו הסיבה שאירועי המוצר שנשלחים ל-Firebase ממשיכים להיאסף. את סוגי האירועים והמגבלות שלהם פירטנו במדריך האירועים ב-Firebase Analytics.
Apple סוגרת במפורש שתי דרכים עוקפות. מזהה חלופי כמו מייל או טלפון מגובבים לא פוטר מהאישור. Fingerprinting, כלומר הפקת נתונים מהמכשיר כדי לזהות אותו באופן ייחודי, אסור לפי הסכם המפתחים, כך שאפליקציה שעושה זאת בעצמה או דרך SDK עלולה להידחות מהחנות.
מה קורה כשהמשתמש לא מאשר?
לפי Apple, כל עוד המשתמש לא נתן הרשאה, מזהה הפרסום של המכשיר מוחזר כולו אפסים. המשמעות המעשית היא שאין מפתח משותף בין הקליק על המודעה לבין ההתקנה, כך שייחוס ברמת המכשיר, כפי שעבד שנים, לא אפשרי למשתמש הזה.
פלטפורמות הייחוס התאימו את עצמן. לפי התיעוד של AppsFlyer, ברירת המחדל שלה ל-iOS 14.5 ומעלה היא Aggregated Advanced Privacy: תוצאות מצרפיות בלבד, בלי ייחוס ברמת משתמש, למעט המקרים ש-Apple מתירה כמו מדיה בבעלותכם ומשתמשים שאישרו ATT. מזהה אחד נשאר זמין: IDFV, שזהה בין אפליקציות של אותו מפתח במכשיר. לפי Apple שימוש בו לאנליטיקס בין האפליקציות שלכם לא דורש ATT, אבל אסור לשלב אותו עם נתונים אחרים כדי לעקוב אחרי משתמש באפליקציות ובאתרים של חברות אחרות. את ההבדלים בין AppsFlyer ל-Firebase בנושא הזה פירטנו במדריך AppsFlyer מול Firebase.
ייחוס בלי מזהה מכשיר
הדרך של התקנה אחת ב-SKAdNetwork, מהמודעה ועד ה-postback
איך SKAdNetwork מייחס התקנה בלי מזהה?
לפי התיעוד של Apple יש שלושה משתתפים: רשת פרסום שחותמת על המודעות ומקבלת postbacks, אפליקציית מקור שמציגה את המודעה והאפליקציה המפורסמת שמעדכנת ערכי המרה. המידע ב-postback חתום קריפטוגרפית על ידי Apple ולא כולל נתונים של משתמש או מכשיר. אפליקציה לא צריכה לבקש ATT כדי לקרוא ל-API הזה. הוא עובד בכל מצב הרשאה.
כדי שמודעה תזכה בייחוס, האירועים צריכים לקרות בתוך חלונות זמן קבועים:
| האירוע | חלון הזמן לפי Apple |
|---|---|
| מודעה שנפתחת בעמוד המוצר (StoreKit-rendered) | 30 יום להתקנה |
| מודעת צפייה (view-through) | 24 שעות להתקנה |
| קליק על מודעת אינטרנט שניתנת לייחוס | 30 יום להתקנה |
| מרגע ההתקנה | 60 יום לפתיחה ראשונה |
כשכמה מודעות עומדות בתנאים, מודעה מסוג StoreKit-rendered גוברת תמיד על מודעת צפייה, גם אם הצפייה מאוחרת יותר. בין מודעות מאותו סוג זוכה האחרונה. הרשת הזוכה מקבלת postback שמסומן did-win עם הערך true. עד חמש רשתות נוספות מקבלות postback שלא זכה, בלי ערך המרה ובלי מזהה אפליקציית המקור. החל מ-iOS 15 גם המפתח יכול לקבל עותק של ה-postback הזוכה, אם הגדיר כתובת שרת בקובץ Info.plist. כך פלטפורמות ייחוס כמו AppsFlyer אוספות את הנתונים.
מה מקבלים בכל postback?
למודעות שנחתמו ב-SKAdNetwork 4 ומעלה, החל מ-iOS 16.1, יש שלושה חלונות המרה שנספרים מהפתיחה הראשונה. כל חלון יכול להפיק postback אחד.
| חלון ההמרה | השהיה אקראית אחרי סוף החלון | ערך ההמרה שיכול להגיע |
|---|---|---|
| ראשון: ימים 0 עד 2 | 24 עד 48 שעות | ערך עדין (0 עד 63) או ערך גס |
| שני: ימים 3 עד 7 | 24 עד 144 שעות | ערך גס בלבד |
| שלישי: ימים 8 עד 35 | 24 עד 144 שעות | ערך גס בלבד |
הערך העדין הוא מספר בין 0 ל-63. הערך הגס הוא אחד משלושה: low, medium או high. המשמעות של כל ערך נקבעת על ידכם או על ידי רשת הפרסום. אפשר לנעול ערך לפני סוף החלון כדי לקבל את ה-postback מוקדם יותר, במחיר של ויתור על עדכונים נוספים באותו חלון.
מה שבאמת קובע כמה מידע תקבלו הוא רמת הנתונים (postback data tier) ש-Apple מקצה לכל הורדה לפי גודל הקהל, כדי לשמור על אנונימיות בתוך קבוצה. לפי התיעוד יש ארבע רמות. זה מה שמגיע בכל אחת מהן ב-postback הראשון:
| רמה | מזהה מקור וערך המרה | מה עוד מתקבל |
|---|---|---|
| Tier 0 | שתי ספרות, בלי ערך המרה | כלום. גם postback שני ושלישי לא נשלחים |
| Tier 1 | שתי ספרות וערך גס | postback שני ושלישי עם ערך גס |
| Tier 2 | שתיים עד ארבע ספרות וערך עדין | postback שני ושלישי עם ערך גס |
| Tier 3 | שתיים עד ארבע ספרות וערך עדין | גם מזהה אפליקציית המקור. קוד מדינה רק אם קהל המדינה עומד ברף |
לכן קמפיין קטן עם מעט התקנות יחזיר בעיקר ערכים ריקים. זו לא תקלה בהטמעה אלא התכנון של המערכת.
מה ההבדל בין SKAdNetwork ל-AdAttributionKit?
AdAttributionKit היא המסגרת החדשה יותר של Apple, זמינה מ-iOS 17.4. בדף התיעוד של SKAdNetwork עצמו Apple מפנה אליה לקמפיינים של אפליקציות. לפי התיעוד, AdAttributionKit עובדת גם עם App Store וגם עם חנויות אפליקציות חלופיות, בעוד SKAdNetwork עובדת רק עם App Store. המבנה דומה מאוד: ייחוס לקליק בתוך 30 יום ולצפייה בתוך 24 שעות, שלושה חלונות המרה, רמות נתונים וחלוקה לערך עדין ולערך גס. גם כאן לא נדרש אישור ATT.
שתי המסגרות פועלות יחד, כך שלא צריך לבחור ביניהן. לפי Apple, כשלאפליקציה יש חשיפות משתיהן המערכת ממיינת את כולן, שוקלת עד שש חשיפות להמרה ובוחרת זוכה אחד, עם עדיפות לקליק על פני צפייה. קריאה לעדכון ערך המרה ב-SKAdNetwork משוכפלת אוטומטית גם ל-AdAttributionKit. תוספת אחת שקיימת רק במסגרת החדשה: לפי Apple, מ-iOS 18 אפשר למדוד גם re-engagement, כלומר פתיחה חוזרת של אפליקציה מותקנת בעקבות קליק על מודעה.
אז מה נשאר למדוד בלי IDFA?
יותר ממה שנהוג לחשוב, אבל ברמת הקמפיין ולא ברמת המשתמש. הטבלה מסכמת מה אפשר לדעת בלי אישור ATT ומה לא.
| השאלה | זמין בלי אישור ATT? | איך |
|---|---|---|
| כמה התקנות הביא כל קמפיין | כן, ברמה מצרפית | מזהה המקור ב-postback |
| איכות המשתמשים אחרי ההתקנה | חלקית | ערך המרה, כפוף לרמת הנתונים ולחלון |
| באיזו אפליקציה הוצגה המודעה | רק בקהלים גדולים | מזהה אפליקציית המקור ב-Tier 3 |
| מסע של משתמש בודד מהמודעה ועד הרכישה | לא | דורש אישור ATT |
| התנהגות בתוך האפליקציה | כן | אירועי צד ראשון, למשל ב-Firebase |
מה עושים בפועל?
- מתזמנים את חלון ה-ATT. מציגים אותו אחרי שהמשתמש הבין מה האפליקציה נותנת לו, עם מסך הסבר שקוף לפניו. ב-SDK של AppsFlyer מגדירים waitForATTUserAuthorization עם זמן המתנה ארוך מספיק כדי שהמשתמש יספיק לענות.
- ממפים את ערכי ההמרה. 64 ערכים עדינים לחלון הראשון ושלושה ערכים גסים לשני ולשלישי. מתחילים מהאירועים שמנבאים הכנסה ולא מרשימת כל האירועים.
- מגדירים ערך גס גם לחלון הראשון. ב-Tier 1 זה כל מה שיגיע.
- מוודאים קבלת עותק של ה-postbacks. דרך פלטפורמת הייחוס או לשרת שלכם.
- מתאימים את הציפיות בדוחות. נתוני iOS מגיעים באיחור של ימים ובצורה מצרפית. משווים מגמות בין קמפיינים ולא סופרים משתמשים בודדים.
את חלונות הייחוס בפלטפורמות עצמן, מחוץ למסגרות של Apple, פירטנו במדריך אטריבוציה של התקנות אפליקציה.
שאלות נפוצות
מה קורה ל-IDFA כשמשתמש לא מאשר מעקב ב-iOS?
לפי Apple, כל עוד המשתמש לא נתן הרשאה דרך App Tracking Transparency, מזהה הפרסום של המכשיר מוחזר כולו אפסים. אסור לעקוב אחריו גם בדרך אחרת. מזהה חלופי כמו מייל מגובב לא פוטר מהצורך באישור. Fingerprinting אסור לפי הסכם המפתחים של Apple.
האם צריך אישור ATT כדי להשתמש ב-SKAdNetwork?
לא. לפי התיעוד של Apple אפליקציות לא צריכות להשתמש ב-App Tracking Transparency לפני קריאה ל-API של SKAdNetwork. אפשר לקרוא לו בכל מצב הרשאה. הסיבה היא שה-postback לא כולל נתונים של משתמש או מכשיר. אותו כלל חל על AdAttributionKit.
כמה postbacks מקבלים ב-SKAdNetwork 4 ומתי?
עד שלושה postbacks להתקנה שזכתה בייחוס, אחד לכל חלון המרה: ימים 0 עד 2, ימים 3 עד 7 וימים 8 עד 35 מהפתיחה הראשונה. לפי Apple הראשון נשלח בהשהיה אקראית של 24 עד 48 שעות אחרי סוף החלון. השני והשלישי נשלחים בהשהיה של 24 עד 144 שעות.
מה ההבדל בין ערך המרה עדין לערך המרה גס?
ערך עדין הוא מספר בין 0 ל-63 שהאפליקציה או רשת הפרסום קובעות את משמעותו. ערך גס הוא אחד משלושה: low, medium או high. לפי התיעוד של Apple הערך העדין זמין רק ב-postback הראשון וברמות הנתונים הגבוהות. ב-postback השני והשלישי מגיע רק ערך גס.
מה ההבדל בין SKAdNetwork ל-AdAttributionKit?
AdAttributionKit היא המסגרת החדשה יותר של Apple, זמינה מ-iOS 17.4. היא עובדת גם עם App Store וגם עם חנויות אפליקציות חלופיות, בעוד SKAdNetwork עובדת רק עם App Store. שתיהן פועלות יחד: המערכת בוחרת זוכה אחד להמרה מבין החשיפות של שתיהן. Apple מפנה ל-AdAttributionKit לקמפיינים של אפליקציות.
למה חלק מה-postbacks מגיעים בלי ערך המרה?
בגלל רמת הנתונים ש-Apple מקצה לכל הורדה לפי גודל הקהל. ברמה הנמוכה, Tier 0, ה-postback כולל רק מזהה מקור של שתי ספרות, בלי ערך המרה ובלי postback שני ושלישי. ככל שיותר התקנות מיוחסות למודעה, ה-postback כולל יותר מידע. לכן קמפיינים קטנים מחזירים הרבה ערכים ריקים.
מה השורה התחתונה?
בלי IDFA המדידה ב-iOS לא נעלמת אלא משנה צורה: מייחוס של משתמש בודד לייחוס מצרפי, מושהה ומוגבל בפירוט. מי שממשיך לחפש מספר התקנות מדויק לכל מודעה יתאכזב, בעוד מי שמתכנן מראש את מיפוי ערכי ההמרה, מבין את רמות הנתונים ומשלים את התמונה באירועי צד ראשון מקבל בסיס סביר להחלטות תקציב. העבודה העיקרית היא תכנון ולא קוד: אילו אירועים נכנסים ל-64 הערכים ומה משמעות low, medium ו-high אצלכם. אנחנו בונים את המיפוי הזה ובודקים את ההטמעה מול המפתחים כחלק משירות אנליטיקס וניטור אפליקציות. אם נתוני ה-iOS שלכם לא מסתדרים בין הרשתות לפלטפורמת הייחוס, כתבו לנו.
מקורות
Apple Developer: User Privacy and Data Use, Apple Developer: Ad Attribution, Apple Developer Documentation: SKAdNetwork, Apple Developer Documentation: Receiving postbacks in multiple conversion windows, Apple Developer Documentation: Understanding AdAttributionKit and SKAdNetwork interoperability, AppsFlyer Help Center: AppsFlyer attribution model
