הסכמה ב-WebViews: לשמור על סנכרון בין הסכמה נייטיבית להסכמה בווב

בעיית הבאנר הכפול

אפליקציות רבות הן חלקית נייטיביות וחלקית ווב. משחק מציג את החנות, החדשות או דפי העזרה שלו ב-WebView; אפליקציית כלי עזר מציגה מאמרים מהאתר שלה; אפליקציה היברידית עוטפת את רוב הממשק שלה בתוכן ווב. לכל צד יש מנגנון הסכמה משלו: האפליקציה הנייטיבית משתמשת ב-CMP או SDK בתוך האפליקציה, ודפי הווב טוענים CMP לווב. אלא אם הם מחוברים, המשתמש נשאל פעמיים, בחירות שנעשו במקום אחד מתעלמים מהן במקום האחר, ובקשות פרסום מתוך ה-WebView יוצאות עם אותות שגויים.

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

היכן כל צד שומר הסכמה

נייטיבי

IAB TCF מגדיר איך CMP בתוך אפליקציה שומר הסכמה: ב-NSUserDefaults ב-iOS וב-SharedPreferences ב-Android, עם מפתחות סטנדרטיים כמו IABTCF_TCString, IABTCF_gdprApplies ו-IABTCF_PurposeConsents. ערכות SDK פרסומיות קוראות את המפתחות האלה ישירות. IAB GPP מגדיר מפתחות דומים עם הקידומת IABGPP_, כמו IABGPP_HDR_GppString.

ווב

CMP לווב שומר בדרך כלל את החלטתו בעוגיות צד ראשון או באחסון מקומי עבור דומיין האתר, וחושף אותה דרך פונקציות ה-JavaScript ‏__tcfapi ו-__gpp. תגי הפרסום בעמוד קוראים לפונקציות האלה, לא לאחסון הנייטיבי.

הפער

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

בחרו מקור אמת אחד

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

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

העברת הסכמה נייטיבית אל ה-WebView

כשהנייטיבי הוא מקור האמת, ה-WebView צריך לראות את אותה החלטה. דפוסים נפוצים:

  1. הזרקת מימוש של __tcfapi. לפני שסקריפטי העמוד רצים, הזריקו סקריפט קטן שמגדיר את __tcfapi (ואת __gpp במידת הצורך) ועונה לקריאות עם מחרוזת ה-TC והערכים שנקראו מהאחסון הנייטיבי. תגי הפרסום בעמוד מקבלים אז את ההחלטה הנייטיבית דרך ה-API הסטנדרטי.
  2. הסתרת באנר הווב. הגדירו את ה-CMP לווב להישאר מוסתר כשהעמוד נטען בתוך האפליקציה שלכם, למשל לפי פרמטר בשאילתה או אסימון user agent מותאם שאתם שולטים בו. אחרת המשתמש רואה באנר שני.
  3. העברת המחרוזת בטעינה. חלק מה-CMPs לווב יכולים לקבל מחרוזת הסכמה קיימת באתחול ולאמץ אותה. בדקו בתיעוד של ה-CMP לווב אילו שיטות נתמכות.

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

העברת הסכמת ווב בחזרה לנייטיבי

אם משתמשים יכולים לשנות הסכמה בתוך ה-WebView, למשל דרך דף הגדרות פרטיות, האפליקציה חייבת ללמוד על כך. השתמשו בגשר JavaScript: message handler ב-iOS או ממשק JavaScript ב-Android. צד הווב מאזין עם __tcfapi('addEventListener', ...) ושולח את המחרוזת החדשה לקוד הנייטיבי, שכותב את המפתחות הסטנדרטיים. אמתו קלט שמגיע מה-WebView לפני הכתיבה; קבלו רק הודעות מהתוכן שלכם.

פרסומות בתוך WebViews

פרסומות שמוצגות ב-WebView הן פרסומות ווב. הן קוראות הסכמה מהעמוד, לא מהאחסון הנייטיבי, אלא אם ה-SDK הפרסומי מספק דרך לקשר בין השניים. למשל Google Mobile Ads SDK מציע API לרישום WebViews כך שפרסומות בתוכם יוכלו להשתמש באותות מהאפליקציה; בדקו את התיעוד העדכני של ה-SDK שלכם. בכל מקרה, וודאו בבדיקה שבקשות פרסום מה-WebView נושאות את אותה מחרוזת TC או GPP כמו בקשות פרסום נייטיביות.

צ׳קליסט בדיקות

עיקרי הדברים

← בdelays delays קרא הכל →