בהתאם למדיניות Google בנושא הסכמת משתמשים באיחוד האירופי, אתם צריכים לחשוף מידע מסוים למשתמשים באזור הכלכלי האירופי (EEA), בבריטניה ובשוויץ, ולקבל את הסכמתם לשימוש בקובצי Cookie או באמצעי אחסון מקומיים אחרים, במקרים שבהם נדרשת הסכמה על פי חוק, ולשימוש במידע אישי (כמו AdID) לצורך הצגת מודעות.
המדיניות הזו משקפת את הדרישות שמפורטות ב-ePrivacy Directive (הדירקטיבה בנושא פרטיות ותקשורת אלקטרונית) וב-General Data Protection Regulation (התקנות הכלליות להגנה על מידע, GDPR) של האיחוד האירופי.
במדריך הזה מפורטים השלבים הנדרשים כדי לתמוך בהודעה לבקשת הסכמה בהתאם ל-GDPR IAB TCF v2 כחלק מ-UMP SDK. המדריך הזה מיועד לשימוש יחד עם המדריך תחילת העבודה, שבו מוסבר איך להפעיל את האפליקציה באמצעות UMP SDK ואיך להגדיר את ההודעה. ההנחיות הבאות מתייחסות ספציפית להודעה בנושא GDPR בגרסה 2 של IAB TCF. מידע נוסף זמין במאמר בנושא איך הדרישות של IAB משפיעות על הודעות לבקשת הסכמה באיחוד האירופי.
דרישות מוקדמות
ביטול הסכמה
בהתאם ל-GDPR, צריך לאפשר למשתמשים לבטל את ההסכמה שלהם בכל שלב. במאמר אפשרויות פרטיות מוסבר איך להטמיע דרך שבה המשתמשים יכולים לבטל את הבחירות שלהם בנושא הסכמה.
תג לציון משתמשים מתחת לגיל ההסכמה
כדי לציין אם משתמש הוא מתחת לגיל ההסכמה, צריך להגדיר את הערך
setTagForUnderAgeOfConsent (TFUA). כשמגדירים את TFUA לערך true, UMP SDK לא מבקש הסכמה מהמשתמש. אם לאפליקציה שלכם יש קהל בגילאים שונים, צריך להגדיר את הפרמטר הזה למשתמשים שהם ילדים כדי לוודא שלא תתבקש מהם הסכמה.
בדוגמה הבאה, הערך של TFUA מוגדר כ-true בבקשת הסכמה ב-UMP:
Java
ConsentRequestParameters params =
new ConsentRequestParameters.Builder()
// Indicate the user is under age of consent.
.setTagForUnderAgeOfConsent(true)
.build();
Kotlin
val params =
ConsentRequestParameters.Builder()
// Indicate the user is under age of consent.
.setTagForUnderAgeOfConsent(true)
.build()
הגדרת הסכמה בתהליך בחירת הרשת (Mediation) ב-AdMob
כדי להגדיר הסכמה בתהליך בחירת הרשת ב-AdMob, צריך לבצע את השלבים שמפורטים בקטעים הבאים.
הוספת שותפי פרסום להודעות לבקשת הסכמה בהתאם ל-GDPR
כדי להוסיף את שותפי הגישור לרשימת שותפי הפרסום, פועלים לפי השלבים במאמר בנושא הוספת שותפי פרסום להודעות שפורסמו לבקשת הסכמה בהתאם ל-GDPR. אם לא תעשו את זה, יכול להיות שהשותפים לא יוכלו להציג מודעות באפליקציה שלכם.
בטבלה הבאה מפורט שם שותף טכנולוגיות הפרסום (ATP) לכל מקור מודעות:
| מקור מודעות | שם שותף טכנולוגיות פרסום (ATP) |
|---|---|
| AppLovin | AppLovin Corp. |
| BidMachine | BidMachine |
| BIGO Ads SDK | Empathy Technology Pte.Ltd. (BIGO Ads) |
| Chartboost | Chartboost |
| DT Exchange | DT Exchange (Fyber Monetization) |
| i-mobile | i-mobile |
| InMobi | InMobi |
| ironSource Ads | ironSource Mobile |
| Liftoff Monetize | Liftoff |
| LY Ads Network | LY Ads Network |
| maio | maio |
| Meta Audience Network | מטא |
| Mintegral | Mobvista/Mintegral |
| Moloco Ads SDK | Moloco Ads |
| myTarget | Mail.ru |
| Pangle | Pangle DSP |
| PubMatic OpenWrap SDK | PubMatic |
| Unity Ads | Unity Ads |
| Verve HyBid SDK | Verve Group |
העברת הסכמה למקורות מודעות
בטבלה הבאה אפשר לראות אילו מקורות מודעות תומכים בהעברת אותות הסכמה בהתאם ל-GDPR מפלטפורמות לניהול הסכמה (CMP) שמשולבות עם Transparency and Consent Framework (TCF – מסגרת השקיפות וההסכמה) של IAB ועם המפרט של Google בנושא הסכמה נוספת אל ה-SDK של מקורות המודעות:
| מקור מודעות | הגרסה המינימלית הנתמכת |
|---|---|
| AppLovin | 12.0.0.0 |
| BidMachine | 3.3.0.0 |
| BIGO Ads SDK | 5.5.2.0 |
| Chartboost | 9.13.0.0 |
| DT Exchange | 8.3.0.0 |
| i-mobile | לא רלוונטי1 |
| InMobi | 10.7.5.0 |
| ironSource Ads | 7.7.0.0 |
| Liftoff Monetize | 7.4.1.0 |
| LY Ads Network | לא רלוונטי1 |
| maio | לא רלוונטי1 |
| Meta Audience Network | לא רלוונטי2 |
| Mintegral | 17.1.61.1 |
| Moloco Ads SDK | 3.5.0.0 |
| myTarget | 5.51.2.0 |
| Pangle | 7.9.0.9.0 |
| PubMatic OpenWrap SDK | 4.7.0.0 |
| Unity Ads | 4.19.0.1 |
| Verve HyBid SDK | 3.7.1.0 |
1 מקור המודעות לא מציג מודעות לתנועה שמגיעה מ-EEA.
2 לפרטים נוספים, אפשר לפנות למנהל השותפים שלכם ב-Meta.
איך קוראים את בחירות ההסכמה
אחרי איסוף ההסכמה בהתאם ל-GDPR, אפשר לקרוא את בחירות ההסכמה מאחסון מקומי בהתאם למפרט של TCF גרסה 2. המפתח IABTCF_PurposeConsents מציין את ההסכמה לכל אחת ממטרות TCF.
בקטע הקוד הבא אפשר לראות איך בודקים את ההסכמה למטרה 1:
Java
SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(context);
// Example value: "1111111111"
String purposeConsents = sharedPref.getString("IABTCF_PurposeConsents", "");
// Purposes are zero-indexed. Index 0 contains information about Purpose 1.
if (!purposeConsents.isEmpty()) {
String purposeOneString = String.valueOf(purposeConsents.charAt(0));
boolean hasConsentForPurposeOne = purposeOneString.equals("1");
}
Kotlin
val sharedPref = PreferenceManager.getDefaultSharedPreferences(context)
// Example value: "1111111111"
val purposeConsents = sharedPref.getString("IABTCF_PurposeConsents", "")
// Purposes are zero-indexed. Index 0 contains information about Purpose 1.
if (!purposeConsents.isNullOrEmpty()) {
val purposeOneString = purposeConsents.first().toString()
val hasConsentForPurposeOne = purposeOneString == "1"
}
שאלות נפוצות
- מה יקרה אם לא אבצע פעולה כדי לעמוד בדרישות בנושא פלטפורמות לניהול הסכמה לצורך הצגת מודעות באזור הכלכלי האירופי, בבריטניה ובשווייץ?
החל מ-16 בינואר 2024, אם שותף לא ישתמש בפלטפורמה לניהול הסכמה שאושרה על ידי Google, תהיה אפשרות להציג רק מודעות מוגבלות בתנועה מהאזור הכלכלי האירופי (EEA) ומבריטניה.
נתחיל לאכוף את הדרישה ב-16 בינואר 2024 בקרב אחוז קטן מהתנועה באזור הכלכלי האירופי ובבריטניה, ונגיע לאכיפה מלאה בקרב כלל התנועה באזור הכלכלי האירופי ובבריטניה עד סוף פברואר 2024. כדי למנוע פגיעה במונטיזציה, חשוב להתחיל להשתמש בפלטפורמת CMP שאושרה עד 16 בינואר 2024.
- איך אפשר לבדוק אם המשתמש נתן הסכמה?
ההסכמה לא מיוצגת על ידי ביט יחיד, אלא על ידי קבוצה של מטרות וספקים כפי שהוגדרו במפרט של IAB TCF. מידע על הקריטריונים של Google Ads להתאמה אישית מופיע במאמר מדיניות הסכמה: מודעות בהתאמה אישית ומודעות בלי התאמה אישית.
בנוסף, ספקי טכנולוגיית פרסום שנכללים ברשימת ספקי טכנולוגיית הפרסום (ATP) של Google ולא רשומים ברשימת הספקים המשתתפים ב-TCF משתמשים במפרט הטכני של Google לגבי הסכמה נוספת כדי לאסוף הסכמה. Google מפרסמת את הרשימה של ספקי טכנולוגיות הפרסום שלא רשומים ב-IAB ואת המזהים שלהם במיקום הבא: https://storage.googleapis.com/tcfac/additional-consent-providers.csv.
כדי לנפות באגים במודעה בודדת, אפשר להשתמש בתכונה פתרון בעיות בהגדרות הפרטיות בכלי לבדיקת מודעות כדי לראות את אותות הפרטיות הבאים שמועברים בבקשה להצגת מודעה כחלק משילוב של בעלי תוכן דיגיטלי עם TCF של IAB Europe:
תווית של הכלי לבדיקת מודעות פרמטר של שאילתה בבקשה להצגת מודעה משמעות ה-GDPR חל (IABTCF_gdprApplies) gdprאם תקנות ה-GDPR חלות על הבקשה הזו להצגת מודעה. מחרוזת נתוני שקיפות והסכמה (IABTCF_TCString) gdpr_consentנתוני השקיפות וההסכמה. ה-IAB מספק כלי אינטרנטי שבו אפשר לפענח את הערך באופן ידני. נתוני הסכמה נוספים (IABTCF_AddtlConsent) addtl_consentמחרוזת ה-AC מהמפרט הטכני של Google בנושא הסכמה נוספת. מידע נוסף זמין במאמר איך קוראים את אפשרויות ההסכמה.
- האם צריך להשתמש ב-UMP SDK של Google כדי לעמוד בדרישה של פלטפורמת ה-CMP?
לא, אפשר להשתמש בכל פלטפורמת CMP שמופיעה ברשימת פלטפורמות ה-CMP שאושרו על ידי Google כדי להציג מודעות.
- איך אפשר להציג שוב את טופס ההסכמה באמצעות UMP SDK גם אם המשתמש כבר הביע הסכמה?
אם משתמש כבר קיבל החלטה בנושא הסכמה, הפתרון של Google לניהול הסכמה לא יבקש לאסוף הסכמה חדשה עד שנתוני השקיפות וההסכמה יפוגו או יהפכו ללא תקפים.
בהתאם ל-GDPR, צריך לשנות את ההסכמה כדי לאפשר למשתמשים לבטל את הבחירות שלהם בנושא פרטיות בכל שלב. במאמר בנושא אפשרויות פרטיות מוסבר איך להטמיע דרך שבה המשתמשים יכולים לבטל את ההסכמה שלהם. כדי להציג שוב טופס הסכמה, צריך להתקשר אל
showPrivacyOptionsForm().- שילבתי פלטפורמת CMP שאושרה על ידי Google, אבל אני לא רואה בקשות להצגת מודעות שנשלחות לשותפי גישור, גם לא ממשתמשים שהביעו הסכמה. למה זה קורה?
במסגרת TCF, לפני ש-Google כוללת ספקי טכנולוגיית פרסום (ATP) ומקורות אחרים לביקוש פרוגרמטי ברשימת הרשתות בתהליך בחירת הרשת, אנחנו מוודאים שהם לא מפירים את מדיניות Google ושיש להם לפחות בסיס חוקי אחד לעיבוד נתונים. מידע נוסף מופיע בקטע בנושא גישור.
חלק משותפי מנגנון בחירת הרשת שמופיעים ברשימת ספקי הטכנולוגיות הפרסומיות (ATP) של Google לא רשומים ברשימת הספקים המשתתפים ב-TCF. במקום זאת, השותפים האלה משתמשים במפרט הטכני של Google בנושא הסכמה נוספת לאיסוף הסכמה. Google מפרסמת את הרשימה של ספקי טכנולוגיות הפרסום שלא רשומים ב-IAB ואת המזהים שלהם במיקום הבא: https://storage.googleapis.com/tcfac/additional-consent-providers.csv
ה-UMP SDK תומך בשמירת המחרוזת ACString, וכך מאפשר לכם להוסיף שותפי פרסום להודעות לבקשת הסכמה בהתאם ל-GDPR בלי שתצטרכו להבין אם השותפים רשומים ב-TCF. כשמשתמשים בפלטפורמת CMP של צד שלישי, צריך לבצע את הפעולות הבאות:
- מוודאים שפלטפורמת ה-CMP של הצד השלישי תומכת באחסון של נתוני השקיפות וההסכמה.
- צריך לכלול כל שותף לבחירת רשת ברשימת ספקי טכנולוגיית הפרסום שפלטפורמת ה-CMP של הצד השלישי משתמשת בה כדי לאסוף הסכמה.
- האם אפשר לשנות את אופן הפעולה של האפליקציה אם המשתמשים לא מביעים הסכמה? האם זה מותר לפי המדיניות?
בעלי אפליקציות יכולים לקרוא את נתוני ה-TCF של IAB באפליקציות שלהם. במאמר איך קוראים את בחירות ההסכמה מוסבר איך לקרוא את בחירות ההסכמה באופן פרוגרמטי. בעלי התוכן הדיגיטלי צריכים להתייעץ עם יועץ משפטי כדי להבין מהן המחויבויות שלהם בהתאם לתקנות הרלוונטיות.
- כשאני בוחר באפשרות ניהול אפשרויות ומביע הסכמה לכל המטרות, לא מוצגות לי מודעות. למה זה קורה?
בנוסף להסכמה למטרות האיסוף, צריך גם לקבל הסכמה מספקי ה-ATP. נדרשת הסכמה גם למטרות וגם לספקים כדי שספקים כמו Google יוכלו להציג מודעות מתאימות.
- איך מטמיעים את גרסה 2 של נתוני ההסכמה הנוספים אצל משתמשים שכבר הסכימו לגרסה 1?
כדי לבדוק אם משתמש הביע הסכמה לגרסה 2 של מחרוזת נתוני ההסכמה הנוספים (AC) ואם צריך להציג שוב את טופס ההסכמה, צריך לבדוק את המפתח
IABTCF_AddtlConsentבאחסון המקומי לפי המפרט הטכני של Google בנושא נתוני הסכמה נוספים.Java
SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(context); // Example value: "2~1.35.41.101~dv.9.21.81" String additionalConsent = sharedPref.getString("IABTCF_AddtlConsent", ""); // Index 0 contains information about the specification version number. if (!additionalConsent.isEmpty()) { String specACVersion = additionalConsent.charAt(0); boolean isACVersion2 = purposeOneString.equals("2"); }Kotlin
val sharedPref = PreferenceManager.getDefaultSharedPreferences(context) // Example value: "2~1.35.41.101~dv.9.21.81" val additionalConsent = sharedPref.getString("IABTCF_AddtlConsent", "") // Index 0 contains information about the specification version number. if (!additionalConsent.isEmpty()) { val specACVersion = additionalConsent.first() val isACVersion2 = specACVersion == "2" }