پشتیبانی از میانجیگری در SDK Runtime

میانجیگری یک روش رایج برای پلتفرم‌های تبلیغاتی سمت فروش برای ارائه مدیریت بازده است. در یک گردش کار میانجیگری، SDK میانجیگری ("میانجی") چندین شبکه تبلیغاتی ("میانجی" یا "میانجی‌شونده") را برای به دست آوردن بهترین تبلیغ برای یک بازه زمانی مشخص فراخوانی می‌کند. در برخی موارد، هم میانجی و هم شبکه‌های تبلیغاتی که فراخوانی می‌کنند، نیاز دارند که SDKهایشان روی دستگاه باشد و با هم تعامل داشته باشند.

این سند، تغییرات کلیدی در گردش‌های کاری میانجیگری در SDK Runtime را شرح می‌دهد و موضوعات زیر را پوشش می‌دهد:

  • تفاوت‌های بین جریان‌های میانجیگری قبلی و پشتیبانی فعلی از میانجیگری در زمان اجرای SDK
  • تنظیمات مربوط به گردش‌های کاری میانجیگری در SDK Runtime و مراحل مختلف انتقال
  • راهنمایی در مورد چگونگی مدیریت سناریوهایی که در آنها همه SDK ها به Runtime مهاجرت نکرده اند

پشتیبانی از تبلیغات واسطه‌ای در SDK Runtime از AGP 8.5 و از نسخه‌های زیر از کتابخانه‌های SDK Runtime Jetpack در دسترس است:

کتابخانه اندروید نسخه
فعالیت در sandbox.androidx.privacy ۱.۰.۰-آلفا۰۱
androidx.privacysandbox.sdkruntime ۱.۰.۰-آلفا۱۳
ابزارهای اندروید ۱.۰.۰-آلفا۰۸
androidx.privacysandbox.ui ۱.۰.۰-آلفا۰۹

واژه‌نامه

اصطلاحات زیر برای درک میانجیگری در SDK Runtime کلیدی هستند:

  • SDK با قابلیت اجرا (RE SDK): SDK ای که برای اجرا در محیط SDK Runtime و ارتباط با برنامه از طریق ارتباط بین فرآیندی (IPC) ساخته شده است.
  • SDK آگاه از زمان اجرا (RA SDK): یک SDK غیر فعال شده در زمان اجرا که به صورت ایستا به برنامه متصل شده است و ممکن است شامل کد SDK موجود شما و همچنین کد جدیدی برای فراخوانی در SDK فعال شده در زمان اجرا باشد.
  • SDK درون برنامه‌ای: SDK ای که به صورت ایستا به برنامه متصل است و هیچ اطلاعی از زمان اجرای SDK ندارد. این ممکن است یک شبکه تبلیغاتی باشد که به زمان اجرای SDK منتقل نشده است، یا آداپتور سفارشی یک ناشر.
  • میانجی: SDK میانجی‌گری تبلیغاتی که با تعامل با سایر SDKهای شبکه تبلیغاتی، سرویس میانجی‌گری را روی دستگاه ارائه می‌دهد.
  • واسطه (Mediatee): کیت توسعه نرم‌افزار (SDK) شبکه تبلیغاتی که توسط واسطه برای ارائه و رندر تبلیغ فراخوانی می‌شود.
  • آداپتور میانجی: SDKهایی که توسط SDK میانجی برای ارائه ترجمه رابط API جهت تعامل با SDKهای میانجی مختلف، که معمولاً توسط میانجی ارائه می‌شوند، استفاده می‌شوند. این SDKها می‌توانند در زمان اجرا آگاه یا ناآگاه باشند.

جریان‌های میانجیگری معمول

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

جریان‌هایی که ما شرح می‌دهیم، نسخه‌ی ساده‌شده‌ای از میانجیگری روی دستگاه با SDKهای شبکه‌ی تبلیغاتی چندگانه را نشان می‌دهند و به عنوان مبنایی برای بحث در مورد تغییرات مورد نیاز برای سازگار کردن مسیرهای میانجیگری با زمان اجرای SDK عمل می‌کنند.

با توجه به تنوع در پیاده‌سازی جریان میانجیگری، ما بر دو جریان اصلی زیر تمرکز می‌کنیم:

  • مقداردهی اولیه (شامل کشف شبکه‌های تبلیغاتی و ارتباطات)
  • ارائه رابط کاربری تبلیغ (UI)

مقداردهی اولیه

موارد زیر نشان‌دهنده‌ی یک مقداردهی اولیه‌ی استاندارد، کشف شبکه‌ی تبلیغاتی و جریان ارتباطی است:

  1. برنامه کلاینت، واسطه را آغاز می‌کند.
  2. واسطه، واسطه‌ها و آداپتورهای مربوطه را کشف و مقداردهی اولیه می‌کند.
  3. واسطه از آداپتورهای خود برای ارتباط با هر واسطه استفاده می‌کند.
  4. برنامه‌ی کلاینت از واسطه درخواست می‌کند که یک تبلیغ را بارگذاری کند.
  5. برنامه‌ی کلاینت از واسطه درخواست می‌کند که این تبلیغ را نمایش دهد.

ارائه رابط کاربری تبلیغات

وقتی نوبت به رندر کردن تبلیغ پس از درخواست نهایی در مرحله قبل می‌رسد، روند کار به نوع تبلیغ بستگی دارد:

تبلیغات بنری تبلیغات تمام صفحه تبلیغات بومی
SDK واسطه یک نمای تبلیغ ایجاد می‌کند که نمای تبلیغ واسطه برنده را در بر می‌گیرد.

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

جریان‌های میانجیگری در زمان اجرای SDK

نحوه عملکرد میانجیگری در داخل SDK Runtime بسته به اینکه آیا میانجی در زمان اجرا فعال است یا خیر، متفاوت است. بر این اساس، می‌توانیم سناریوهای زیر را داشته باشیم:

  • هم واسطه و هم واسطه‌شونده در زمان اجرای SDK هستند: RE mediatee
  • واسطه در زمان اجرای SDK است و واسطه‌شونده درون برنامه است: واسطه درون برنامه‌ای

واسطه RE

نمودار معماری زیر، نمای کلی سطح بالایی از تعامل SDK های فعال در زمان اجرا (RE) و آگاه از زمان اجرا (RA) واسطه، آداپتورهای واسطه RE و SDK های RE واسطه‌ها را نشان می‌دهد.

آداپتورهای میانجی باید در همان فرآیندی باشند که واسطه‌ای که با آن در ارتباط هستند، در حال انجام آن هستند، بنابراین آنها نیز باید به SDK Runtime مهاجرت کنند.

نمودار معماری که نمای کلی سطح بالایی از تعامل SDK های فعال در زمان اجرا (RE) و آگاه از زمان اجرا (RA) واسطه، آداپتورهای واسطه RE و SDK های RE واسطه ها را نشان می دهد.
شکل ۱. هم واسطه و هم واسطه‌شونده، کیت توسعه نرم‌افزار RE هستند.

مقداردهی اولیه

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

  1. برنامه (یا RA SDK) با استفاده از SdkSandboxManager#loadSdk ، SDK واسطه را بارگذاری و مقداردهی اولیه می‌کند.
  2. در طول مقداردهی اولیه، SDK واسطه، هر واسطه مورد نیاز را در زمان اجرای SDK با استفاده از SdkSandboxController#loadSdk بارگذاری و مقداردهی اولیه می‌کند.
  3. RE SDK می‌تواند با فراخوانی SdkSandboxController#getSandboxedSdks ، تمام SDKهای بارگذاری شده در زمان اجرا را کشف کند.
نمودار توالی میانجیگری RE - RE که جریان شرح داده شده قبلی را نشان می‌دهد.
شکل ۲. جریان مقداردهی اولیه یک واسطه RE

ارائه رابط کاربری تبلیغات

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

بنرهای تبلیغاتی RE Mediatee

با توجه به درخواستی از برنامه برای بارگذاری یک بنر تبلیغاتی، روند تکمیل رندر به شرح زیر است:

  1. واسطه، واسطه برنده را برای این تبلیغ انتخاب می‌کند.
  2. واسطه، یک SandboxedUiAdapter از واسطه دریافت می‌کند.
  3. واسطه، UiAdapter را به برنامه ارسال می‌کند.
روند تکمیل رندر یک بنر تبلیغاتی در میانجیگری RE-RE.
شکل ۳. روند تکمیل رندر یک بنر تبلیغاتی از یک واسطه RE

درباره کاربرد SandboxedUiAdapter و کتابخانه رابط کاربری SDK Runtime بیشتر بدانید.

پوشش‌ها برای تبلیغات بنری

اگر واسطه‌ها بخواهند یک پوشش به تبلیغ اضافه کنند، باید روند کار را به شرح زیر تغییر دهند:

  1. واسطه، یک طرح‌بندی به همراه لایه‌ی رویی خود و یک SandboxedSdkView ایجاد می‌کند.
  2. واسطه، واسطه برنده را برای این تبلیغ انتخاب می‌کند.
  3. واسطه، یک SandboxedUiAdapter از واسطه دریافت می‌کند.
  4. واسطه UiAdapter مربوط به واسطه را روی SandboxedSdkView تنظیم می‌کند.
  5. واسطه، نمای ایجاد شده را با برنامه به اشتراک می‌گذارد.
جریان برای همپوشانی یک نما روی بنر تبلیغاتی دریافت شده از یک واسطه RE.
جریان برای همپوشانی یک نما روی بنر تبلیغاتی دریافت شده از یک واسطه RE.
تبلیغات تمام صفحه RE Mediatee

با توجه به درخواستی از برنامه برای بارگذاری یک تبلیغ تمام صفحه، روند کار از این مراحل پیروی می‌کند:

  1. برنامه (یا RA SDK) یک SdkActivityLauncher به همراه درخواست بارگذاری یک تبلیغ به واسطه ارسال می‌کند.
    1. کلاینت می‌تواند با استفاده از یک predicate ایجاد فعالیت‌ها را محدود کند.
  2. واسطه، واسطه برنده را برای این تبلیغ انتخاب می‌کند.
  3. واسطه از واسطه‌شونده درخواست می‌کند که یک تبلیغ را بارگذاری کند و SdkActivityLauncher را از برنامه ارسال کند.
  4. واسطه یک کنترل‌کننده فعالیت ثبت می‌کند و یک توکن شناسه برای فعالیت ثبت‌شده دریافت می‌کند.
  5. واسطه از SdkActivityLauncher برای درخواست شروع یک فعالیت با استفاده از این توکن استفاده می‌کند.
  6. اگر گزاره‌ی برنامه‌ی کلاینت اجازه دهد، SDK Runtime این فعالیت را در فرآیند اختصاصی آغاز خواهد کرد.
جریان برای نمایش یک برنامه تمام صفحه میانجی از یک واسطه RE.
شکل ۴. نمودار جریانی که نحوه بارگذاری یک تبلیغ تمام صفحه واسطه‌ای از یک واسطه RE را نشان می‌دهد.

درباره پشتیبانی از فعالیت برای تبلیغات تمام صفحه در SDK Runtime بیشتر بدانید.

واسطه درون برنامه‌ای

نمودار معماری زیر، نمای کلی سطح بالایی از تعامل SDKهای RE و RA مربوط به واسطه، آداپتورهای واسطه که از زمان اجرای SDK بی‌اطلاع هستند و SDKهای واسطه‌ها که به صورت ایستا به برنامه متصل هستند (همچنین از زمان اجرا بی‌اطلاع هستند) را نشان می‌دهد.

نمودار معماری که نمای کلی سطح بالایی از تعامل SDK های RE و RA واسطه، آداپتورهای واسطه که از زمان اجرای SDK بی‌اطلاع هستند، و SDK های واسطه که به صورت ایستا به برنامه متصل هستند (همچنین بدون اطلاع از زمان اجرا) را نشان می‌دهد.
شکل ۵. واسطه به صورت ایستا به برنامه متصل است، حتی اگر از RE SDK آگاه باشد.

مقداردهی اولیه

از آنجایی که در این سناریو، واسطه‌ها به صورت ایستا به برنامه متصل هستند و هنوز به SDK Runtime منتقل نشده‌اند، SDK فعال‌شده در زمان اجرا برای واسطه باید فرآیندی برای ثبت آنها داشته باشد .

این ثبت نام باید با استفاده از API واسطه قابل دسترسی باشد، اما جزئیات پیاده‌سازی به صلاحدید هر واسطه واگذار شده است. ما این API را MediationSandboxedSdk#registerInAppMediatee می‌نامیم.

هنگام بررسی مقداردهی اولیه، کشف و برقراری ارتباط یک SDK واسطه RE و SDK های واسطه درون برنامه ای، جریان از این مراحل پیروی خواهد کرد:

  1. این برنامه، SDK مربوط به زمان اجرای واسطه را بارگذاری و مقداردهی اولیه می‌کند.
  2. SDK مربوط به RA میانجی:
    1. RE SDK مربوط به واسطه را با استفاده از SdkSandboxManager#loadSdk مقداردهی اولیه می‌کند.
    2. تمام SDK های واسطه درون برنامه را مقداردهی اولیه می‌کند.
    3. SDK های واسطه درون برنامه ای را با استفاده از API ارائه شده توسط SDK RE، MediationSandboxedSdk#registerInAppMediate کشف و ثبت می کند.

علاوه بر ثبت تمام SDK های واسطه درون برنامه، RE SDK واسطه می‌تواند تمام SDK های بارگذاری شده در SDK Runtime را با استفاده از SdkSandboxController#getSandboxedSdks کشف کند.

توالی که جریان شرح داده شده برای مقداردهی اولیه یک واسطه درون برنامه‌ای را نشان می‌دهد.
شکل ۶. توجه داشته باشید که ما از API میانجی پیشنهادی برای ثبت ارجاع به میانجی‌های درون برنامه‌ای استفاده می‌کنیم.

ارائه رابط کاربری تبلیغات

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

تبلیغات بنری واسطه درون برنامه‌ای

با توجه به درخواستی از برنامه برای بارگذاری یک بنر تبلیغاتی، روند تکمیل رندر به شرح زیر است:

  1. SDK آگاه از زمان اجرا (runtime-aware SDK) واسطه، درخواست برنامه را به SDK فعال‌شده در زمان اجرا (runtime-aware SDK) خود ارسال می‌کند.
  2. کیت توسعه نرم‌افزار RE مربوط به واسطه، واسطه‌ی مربوطه را انتخاب می‌کند.
  3. کیت توسعه نرم‌افزار RE مربوط به واسطه، ارجاع به واسط را بازیابی می‌کند و درخواست بارگذاری یک تبلیغ را از طریق کیت توسعه نرم‌افزار RA می‌دهد.
  4. RA SDK یک View از واسطه درون برنامه‌ای دریافت می‌کند.
  5. RA SDK یک SandboxedUiAdapter برای View دریافتی ایجاد می‌کند.
  6. RA SDK، UiAdapter را به RE SDK ارسال می‌کند.
  7. کیت توسعه نرم‌افزار RE، UiAdapter را به برنامه ارسال می‌کند.
جریان برای تکمیل رندر تبلیغات بنری از یک واسطه درون برنامه‌ای
شکل ۷. توجه داشته باشید که میانجی نباید هنگام دریافت V1 از یک میانجی درون برنامه‌ای، نماها را روی آن همپوشانی کند.
تبلیغات تمام صفحه با واسطه درون برنامه‌ای

با توجه به درخواستی از برنامه برای بارگذاری یک تبلیغ تمام صفحه، روند کار از این مراحل پیروی می‌کند:

  1. برنامه یک SdkActivityLauncher به همراه درخواست بارگذاری یک تبلیغ به RA SDK واسطه ارسال می‌کند.
    1. کلاینت می‌تواند با استفاده از یک predicate ایجاد فعالیت‌ها را محدود کند.
  2. RA SDK مربوط به واسطه، درخواست برنامه را به RE SDK خود ارسال می‌کند.
  3. کیت توسعه نرم‌افزار RE واسطه:
    1. واسطه مربوطه را انتخاب می‌کند.
    2. ارجاع به واسطه‌ی درون‌برنامه‌ای را بازیابی می‌کند.
    3. درخواست بارگذاری یک تبلیغ از طریق RA SDK.
  4. RA SDK از واسطه درخواست می‌کند که یک تبلیغ را بارگذاری کند.
  5. واسطه مستقیماً فعالیت را شروع می‌کند. گزاره برنامه اجرا نخواهد شد.
بارگذاری تمام صفحه تبلیغات، زمانی که واسطه در حال انجام فرآیند برنامه است.
شکل ۸. گزاره توسط واسطه درون برنامه‌ای نادیده گرفته خواهد شد.

مشارکت کنید و بازخورد خود را به اشتراک بگذارید

سندباکس حریم خصوصی در اندروید یک پروژه در حال انجام است و این سند منعکس کننده طراحی فعلی آن است. بازخورد شما برای ما ضروری است زیرا ما همچنان به توسعه و بهبود ویژگی‌های آن ادامه می‌دهیم. برای ارائه بازخورد، یک اشکال ثبت کنید .