ב-iOS 14.5, אפל דורשת מהמפתחים לקבל את הרשאת המשתמש באמצעות מסגרת App Tracking Transparency כדי לעקוב אחריו או לגשת למזהה הפרסום (IDFA) של המכשיר שלו. פרטים נוספים זמינים במסמכי התיעוד של אפל בנושא פרטיות המשתמשים ושימוש בנתונים ושקיפות במעקב אחר אפליקציות.
מוצרי Firebase המושפעים
ערכות ה-SDK של Firebase לא ניגשות ל-IDFA, אבל חלק מהן משולבות עם Google Analytics, וייתכן שהן ניגשות ל-IDFA.
בטבלה הבאה מפורטים מוצרי Firebase שזמינים בפלטפורמות של אפל, ומתואר איך הפונקציונליות של כל מוצר מושפעת אם אין גישה ל-IDFA.
| מוצר | ההשפעה במקרה שאין גישה ל-IDFA |
|---|---|
| A/B Testing | חלק מנתוני הטירגוט (כמו נתונים דמוגרפיים) בשילוב של A/B Testing עם Google Analytics נגזרים מה-IDFA. באפליקציות שאין להן גישה ל-IDFA, הטירגוט הזה לא זמין. |
| Firebase AI Logic 1 | אין השפעה |
| App Check | אין השפעה |
| App Distribution | אין השפעה |
| Authentication | אין השפעה על ספקי Authentication וספקי Authentication מהדומיין הנוכחי, כמו כניסה באמצעות חשבון Google ואימות באמצעות הטלפון. |
| Cloud Firestore | אין השפעה |
| Cloud Functions | אין השפעה |
| Cloud Messaging | כשמשתמשים ב-Google Analytics עם Google Analytics, המערכת מתעדת באופן אוטומטי חלק מאירועי ההמרה שקשורים ל-FCM. כדי לשייך את האירועים האלה, נדרשת גישה ל-IDFA. |
| Cloud Storage | אין השפעה |
| Crashlytics | אין השפעה. השילוב של Crashlytics עם Google Analytics, שמספק נתוני קריסה ופירורי לחם בזמן אמת, לא תלוי ב-IDFA. |
| In-App Messaging | אין השפעה |
| Firebase התקנות | אין השפעה |
| Performance Monitoring | אין השפעה |
| Realtime Database | אין השפעה |
| Remote Config | כשמשתמשים ב-Google Analytics, Remote Config לא מאפשר ליצור באופן אוטומטי מאפייני משתמשים לטירגוט בלי גישה ל-IDFA. |
| ספריות שהוצאו משימוש או שלא נתמכות | |
| Dynamic Links | אין השפעה על הפונקציונליות של פתיחת הקישורים. כשמשתמשים ב-Google Analytics, השיוך של אירועי המרה מסוג קישור לא זמין. |
| InstanceID | אין השפעה |
| Firebase ML | אין השפעה |
1 בעבר, Firebase AI Logic נקרא "Vertex AI in Firebase".
שילובים מושפעים עם Firebase
בטבלה הבאה מפורטים מוצרים שמשולבים ב-Firebase ומושפעים אם אין גישה ל-IDFA.
| מוצר | ההשפעה במקרה שאין גישה ל-IDFA |
|---|---|
| Google Analytics | Analytics רישום אירועים ביומן, דוח אירועים ומעקב המרות לא מושפעים, אבל השיוך מושפע אם אין גישה ל-IDFA. מידע נוסף על התגובה של Google ל-iOS 14 זמין בפוסט הזה בבלוג. |
בקשת הרשאה למעקב אחרי אפליקציות ב-iOS 14
אם אתם רוצים שהאפליקציה שלכם ל-Apple תוכל לגשת ל-IDFA, אתם יכולים להוסיף לאפליקציה את מסגרת App Tracking Transparency של Apple ולבקש הרשאה לעקוב אחרי ה-IDFA של המשתמשים או לגשת אליו.
באפליקציות רבות מוצג מסך מקדים או מסך הסבר לפני בקשת ההרשאה. במסך ההסבר אתם יכולים לספק למשתמשים מידע נוסף על האופן שבו אתם משתמשים ב-IDFA באפליקציה, לפני שאתם מבקשים מהם גישה.
אם אתם בעלי אפליקציה ב-AdMob או ב-Ad Manager, כדאי להשתמש ב-Funding Choices, כלי שמטפל באופן אוטומטי בקבלת הסכמה להצגת פרסום מותאם אישית וגם בקבלת הסכמה למעקב אחר המשתמש בהתאם להנחיות של Apple. פרטים נוספים זמינים בדף בנושא הסכמה באמצעות User Messaging Platform ב-AdMob.
במדריך הבא מוסבר איך להשתמש ב-Firebase In-App Messaging כדי ליצור ולהציג מסך הסבר לפני שמוצגת בקשה לקבלת גישה למעקב באמצעות App Tracking Transparency.
הוספת In-App Messaging לאפליקציה
פועלים לפי ההוראות כדי להוסיף את In-App Messaging לאפליקציה של אפל.
טיפול בסגירת הודעות באפליקציה
קודם כול, אל תציגו את מסך ההסבר במכשירים שלא יכולים להציג את תיבת הדו-שיח להבעת הסכמה, כמו מכשירים עם iOS 13. חשוב לוודא שהקוד הזה מופעל מיד אחרי FirebaseApp.configure().
Swift
if NSClassFromString("ATTrackingManager") == nil {
// Avoid showing the App Tracking Transparency explainer if the
// framework is not linked.
InAppMessaging.inAppMessaging().messageDisplaySuppressed = true
}
מטמיעים את הפרוטוקול InAppMessagingDisplayDelegate כדי לטפל באירועים כשהמשתמש סוגר את מסך ההסבר. אם המשתמש מקיש על "אישור", מציגים את ההודעה של המערכת דרך App Tracking Transparency framework.
Swift
// The InAppMessaging delegate must be assigned before events can be handled.
InAppMessaging.inAppMessaging().delegate = self
func messageClicked(_ inAppMessage: InAppMessagingDisplayMessage,
with action: InAppMessagingAction) {
switch action.actionText {
case "OK":
ATTrackingManager.requestTrackingAuthorization { status in
switch status {
case .authorized:
// Optionally, log an event when the user accepts.
Analytics.logEvent("tracking_authorized", parameters: nil)
case _:
// Optionally, log an event here with the rejected value.
}
}
case _:
// do nothing
}
}
יצירת קמפיין In-App Messaging
אחרי שהקוד נמצא באפליקציה, יוצרים הודעה באפליקציה במסוף Firebase.
- במסוף Firebase, יוצרים קמפיין In-App Messaging חדש.
- ממלאים את ההודעות באפליקציה בתוכן הרצוי ומגדירים את ההודעה כך שתופעל באירוע
app_launch. - בקטע טירגוט, מוודאים שהקמפיין מטרגט רק את הגרסה העדכנית ביותר של האפליקציה ומעלה.
אתם יכולים להתאים אישית את המראה של מסך ההסבר לפי ההוראות במסמכי התיעוד של In-App Messaging.
אופציונלי: בדיקת A/B של מסכי הסבר שונים
ב-In-App Messaging יש שילוב מובנה עם Firebase A/B Testing, שבו אפשר להשתמש כדי להתנסות במסכי הסבר שונים.
Firebase A/B Testing יוצרת באופן אוטומטי קבוצות ניסוי ועוזרת לכם לראות איך המשתמשים יוצרים אינטראקציה עם וריאציות שונות של האפליקציה.
תיעוד הרשאות המעקב של האפליקציה
אם לא תיעדתם אירוע Google Analytics כשטיפלתם בתגובה להרשאות המעקב באפליקציה, תצטרכו לעשות זאת כדי למדוד שינויים בשיעור התגובה כשאתם מפעילים ניסוי A/B.
Swift
ATTrackingManager.requestTrackingAuthorization { status in
switch status {
case .authorized:
// Optionally, log an event when the user accepts.
Analytics.logEvent("tracking_authorized", parameters: nil)
case _:
// Optionally, log an event here with the rejected value.
}
}
יצירת אירוע המרה חדש
בקטע Analytics במסוף Firebase, נכנסים לתפריט Conversions ומוסיפים אירוע המרה חדש עם אותו שם כמו האירוע שנרשם בקוד לדוגמה שלמעלה.
צור ניסוי חדש
בתפריט In-App Messaging של המסוף, לוחצים על New Experiment ופועלים לפי ההוראות במסכים שמופיעים.
- בקטע טירגוט, מוודאים שהקמפיין מטרגט רק את הגרסה העדכנית ביותר של האפליקציה ומעלה.
- בקטע Goals, בוחרים את אירוע ההמרה שיצרתם באמצעות הקוד לדוגמה שלמעלה, וגם מדדים אחרים שאתם רוצים לעקוב אחריהם.
אחרי שמפרסמים את הניסוי, צריך לאסוף נתונים במשך זמן מה כדי להגיע לתוצאות חד-משמעיות.
במסמכי התיעוד של Firebase A/B Testing מוסבר איך לעקוב אחרי ניסוי ולהשיק וריאנט מוצלח.