رضایت در WebViewها: همگام نگه داشتن رضایت بومی و وب

مشکل بنر دوگانه

بسیاری از اپلیکیشن‌ها تا حدی بومی و تا حدی وب هستند. یک بازی فروشگاه، اخبار یا صفحه‌های راهنمای خود را در 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 وب معمولاً تصمیم خود را در کوکی‌های اول‌شخص یا حافظه محلی برای دامنه سایت ذخیره می‌کند و آن را از طریق توابع جاوااسکریپت __tcfapi و __gpp ارائه می‌دهد. تگ‌های تبلیغاتی در صفحه آن توابع را فراخوانی می‌کنند، نه حافظه بومی را.

شکاف

WebViewها فضای کوکی و ذخیره‌سازی خودشان را دارند، جدا از مرورگر دستگاه و جدا از ترجیحات بومی اپلیکیشن. در iOS، یک WKWebView که از مخزن داده غیرماندگار استفاده می‌کند هنگام بسته شدن همه‌چیز را فراموش می‌کند. هیچ‌چیز میان دو طرف جریان نمی‌یابد مگر اینکه آن را خودتان بسازید.

یک منبع واحد حقیقت انتخاب کنید

نخستین تصمیم این است که کدام طرف مالک رضایت است. برای بیشتر اپلیکیشن‌ها پاسخ CMP بومی است، چون:

وب‌محور بودن می‌تواند برای اپلیکیشن‌های ترکیبی که کل رابطشان محتوای وب است منطقی باشد، اما در آن صورت باید تصمیم را برای SDKهای بومی به حافظه بومی بنویسید.

انتقال رضایت بومی به WebView

وقتی بومی منبع حقیقت است، WebView باید همان تصمیم را ببیند. الگوهای رایج:

  1. تزریق پیاده‌سازی __tcfapi. پیش از اجرای اسکریپت‌های صفحه، اسکریپت کوچکی تزریق کنید که __tcfapi (و در صورت نیاز __gpp) را تعریف می‌کند و به فراخوانی‌ها با رشته TC و مقادیر خوانده‌شده از حافظه بومی پاسخ می‌دهد. تگ‌های تبلیغاتی صفحه سپس تصمیم بومی را از طریق API استاندارد دریافت می‌کنند.
  2. پنهان کردن بنر وب. CMP وب را طوری پیکربندی کنید که وقتی صفحه درون اپلیکیشن شما بارگذاری می‌شود پنهان بماند، مثلاً بر اساس یک پارامتر کوئری یا توکن سفارشی user agent که خودتان کنترل می‌کنید. در غیر این صورت کاربر بنر دوم را می‌بیند.
  3. ارسال رشته هنگام بارگذاری. برخی CMPهای وب می‌توانند هنگام مقداردهی اولیه یک رشته رضایت موجود را بپذیرند و آن را به‌کار گیرند. مستندات CMP وب خود را برای روش‌های پشتیبانی‌شده بررسی کنید.

از هر الگویی که استفاده کنید، مطمئن شوید مقادیر تزریق‌شده وقتی کاربر انتخابش را در صفحه تنظیمات بومی تغییر می‌دهد به‌روز می‌شوند، نه فقط در اجرای بعدی اپلیکیشن.

بازگرداندن رضایت وب به بومی

اگر کاربران بتوانند رضایت را درون WebView تغییر دهند، مثلاً از طریق صفحه تنظیمات حریم خصوصی، اپلیکیشن باید از آن آگاه شود. از پل جاوااسکریپت استفاده کنید: یک message handler در iOS یا یک رابط جاوااسکریپت در Android. سمت وب با __tcfapi('addEventListener', ...) گوش می‌دهد و رشته جدید را به کد بومی می‌فرستد که کلیدهای استاندارد را می‌نویسد. ورودی WebView را پیش از نوشتن اعتبارسنجی کنید؛ فقط پیام‌های محتوای خودتان را بپذیرید.

تبلیغات درون WebViewها

تبلیغاتی که در WebView رندر می‌شوند تبلیغات وب‌اند. رضایت را از صفحه می‌خوانند، نه از حافظه بومی، مگر اینکه SDK تبلیغاتی راهی برای پیوند دادن این دو فراهم کند. برای نمونه Google Mobile Ads SDK رابطی برای ثبت WebViewها ارائه می‌دهد تا تبلیغات درون آن‌ها بتوانند از سیگنال‌های اپلیکیشن استفاده کنند؛ مستندات فعلی SDK خود را بررسی کنید. در هر حال، با یک آزمایش تأیید کنید که درخواست‌های تبلیغ از WebView همان رشته TC یا GPP درخواست‌های تبلیغ بومی را حمل می‌کنند.

چک‌لیست آزمایش

نکات کلیدی

← وبaderegistrdelays delays خواندن همه →