הסכמה ב-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 הנייטיבי, כי:
- הוא רץ ראשון, לפני שנפתח כל WebView.
- ערכות SDK פרסומיות נייטיביות, שבדרך כלל מניבות את רוב ההכנסות, קוראות אחסון נייטיבי.
- ב-iOS אפשר לתאם אותו עם בקשת App Tracking Transparency.
גישת ווב תחילה יכולה להתאים לאפליקציות היברידיות שכל הממשק שלהן הוא תוכן ווב, אבל אז צריך לכתוב את ההחלטה בחזרה לאחסון הנייטיבי עבור ה-SDK הנייטיביים.
העברת הסכמה נייטיבית אל ה-WebView
כשהנייטיבי הוא מקור האמת, ה-WebView צריך לראות את אותה החלטה. דפוסים נפוצים:
- הזרקת מימוש של
__tcfapi. לפני שסקריפטי העמוד רצים, הזריקו סקריפט קטן שמגדיר את__tcfapi(ואת__gppבמידת הצורך) ועונה לקריאות עם מחרוזת ה-TC והערכים שנקראו מהאחסון הנייטיבי. תגי הפרסום בעמוד מקבלים אז את ההחלטה הנייטיבית דרך ה-API הסטנדרטי. - הסתרת באנר הווב. הגדירו את ה-CMP לווב להישאר מוסתר כשהעמוד נטען בתוך האפליקציה שלכם, למשל לפי פרמטר בשאילתה או אסימון user agent מותאם שאתם שולטים בו. אחרת המשתמש רואה באנר שני.
- העברת המחרוזת בטעינה. חלק מה-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 כמו בקשות פרסום נייטיביות.
צ׳קליסט בדיקות
- התקנה חדשה: בקשת הסכמה אחת, לא שתיים.
- דחו הכל ב-CMP הנייטיבי, פתחו WebView, בדקו בקשות פרסום: המחרוזת צריכה לשקף את הדחייה.
- שנו הסכמה בהגדרות הנייטיביות, חזרו ל-WebView פתוח: העמוד אמור לראות את ההחלטה החדשה.
- אם קיימות הגדרות ווב, שנו שם את ההסכמה ווודאו שהמפתחות הנייטיביים מתעדכנים.
- סגרו והפעילו מחדש את האפליקציה: ההחלטות נשמרות בשני הצדדים.
- בדקו גם ב-iOS וגם ב-Android, כי אחסון WebView מתנהג אחרת בכל אחת.
עיקרי הדברים
- הסכמה נייטיבית והסכמת WebView חיות במאגרים נפרדים ואינן מסונכרנות כברירת מחדל.
- בחרו מקור אמת אחד; ברוב האפליקציות זה ה-CMP הנייטיבי.
- חשפו את ההסכמה הנייטיבית לתוכן הווב דרך
__tcfapiאו__gppמוזרקים והסתירו את באנר הווב. - השתמשו בגשר JavaScript כדי לשלוח שינויי ווב בחזרה לאחסון הנייטיבי.
- ודאו שבקשות פרסום מ-WebViews נושאות את אותה מחרוזת הסכמה כמו הנייטיביות.