راه‌اندازی کیت توسعه نرم‌افزار IMA برای DAI

انتخاب پلاتفرم: HTML5 Android iOS tvOS Cast Roku

کیت‌های توسعه نرم‌افزار IMA ادغام آگهی‌های چندرسانه‌ای را در وب‌سایت‌ها و برنامه‌هایتان آسان می‌کند. کیت‌های توسعه نرم‌افزار IMA می‌توانند از هر سرور آگهی سازگار با VAST درخواست آگهی کنند و بازپخش آگهی را در برنامه‌هایتان مدیریت کنند. با کیت‌های توسعه نرم‌افزار IMA DAI، برنامه‌ها درخواست جاری‌سازی برای آگهی و ویدیو محتوا—چه VOD و چه محتوای زنده—ایجاد می‌کنند. سپس کیت توسعه نرم‌افزار یک جاری‌سازی ویدیویی ترکیبی برمی‌گرداند تا مجبور نباشید جابه‌جایی بین آگهی و محتوای ویدیویی را در برنامه‌تان مدیریت کنید.

راه‌حل DAI موردعلاقه‌تان را انتخاب کنید

ارائه DAI توسط واحد

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

این راهنما نشان می‌دهد که چگونه بااستفاده از IMA DAI SDK با پخش‌کننده ویدیو برای پخش جاری‌سازی زنده و VOD، جاری‌سازی «ارائه واحد آگهی DAI» را پخش کنید. برای مشاهده یا دنبال کردن یک ادغام نمونه تکمیل‌شده، نمونه Pod Serving را بارگیری کنید.

نمای کلی ارائه واحد IMA DAI

  • StreamRequest: شیئی که درخواست جاری‌سازی را برای سرورهای تبلیغات Google تعریف می‌کند. برای فعال کردن «ارائه Pod»، باید بااستفاده از ImaSdkFactory.createPodStreamRequest() یا ImaSdkFactory.createPodVodStreamRequest() ایجاد شده باشد. این روش‌ها به کد شبکه نیاز دارند، و createPodStreamRequest همچنین به کلید دارایی سفارشی و یک کلید API اختیاری نیاز دارد. هر دو شامل پارامترهای اختیاری دیگر هستند.

  • StreamManager: شیئی که ارتباط بین جاری‌سازی ویدیو و کیت توسعه نرم‌افزار IMA DAI را مدیریت می‌کند، مانند ارسال پینگ‌های ردیابی و انتقال رویدادهای جاری‌سازی به ناشر.

پیش‌نیازها

  • برنامه Android که ازقبل با «کیت توسعه نرم‌افزار IMA DAI» برای پخش جاری‌سازی‌های ویدیویی با آگهی‌های DAI راه‌اندازی شده است. اگر ازقبل چنین برنامه‌ای ندارید، توصیه می‌کنیم از Android DAI BasicExample به‌عنوان نقطه شروع استفاده کنید. ‫BasicExample پایگاه کد ارجاع‌شده در این راهنما را دارد.

  • برای اینکه IMA DAI کار کند، برنامه شما باید رویدادهای ID3 را بااستفاده از VideoStreamPlayerCallback.onUserTextReceived() ارسال کند. این نمونه تکه‌کد درج آگهی پویا با خدمات کامل را ببینید.

متغیرهای «ارائه واحد آگهی» را راه‌اندازی کنید

همه تغییرات لازم برای «ارائه واحد آگهی» در SampleAdsWrapper.java انجام می‌شود. اولین قدم به‌روزرسانی متغیرهای ثابت است.

ثابت‌های درخواست جاری‌سازی واحد آگهی که باید اضافه شود در اینجا آمده است:

  • STREAM_URL: فقط برای جاری‌سازی‌های زنده استفاده می‌شود - نشانی وب جاری‌سازی ویدیو ارائه‌شده توسط دستکاری‌کننده مانیفست یا شریک طرف سوم شما که از «خدمات‌دهی واحد» استفاده می‌کند. باید قبل‌از درخواست، شما را ملزم کند که شناسه جاری‌سازی ارائه‌شده توسط IMA DAI SDK را وارد کنید. در این حالت، نشانی وب جاری‌سازی شامل یک جای‌بان، "[[STREAMID]]"، است که قبل‌از درخواست، با شناسه جاری‌سازی جایگزین می‌شود.

  • NETWORK_CODE: کد شبکه برای حساب Ad Manager 360 شما.

  • CUSTOM_ASSET_KEY: فقط برای جاری‌سازی‌های زنده استفاده می‌شود - کلید دارایی سفارشی که رویداد «ارائه واحد آگهی» شما را در Ad Manager 360 شناسایی می‌کند. این را دستکاری‌کننده مانیفست شما یا شریک «ارائه پاد» طرف سوم می‌تواند ایجاد کند.

  • API_KEY: فقط برای جاری‌سازی‌های زنده استفاده می‌شود - کلید میانای برنامه‌سازی کاربردی اختیاری که می‌تواند برای بازیابی شناسه جاری‌سازی از کیت توسعه نرم‌افزار IMA DAI لازم باشد.

‫Android DAI BasicExample برای پخش انواع مختلف جاری‌سازی طراحی شده است، اما برای «ارائه پادکست»، فقط برای پخش یک جاری‌سازی تنظیم شده است. بخش متغیر مثال را تغییر دهید تا با موارد زیر مطابقت داشته باشد:

/** This class implements IMA to add pod ad-serving support to SampleVideoPlayer */
@SuppressLint("UnsafeOptInUsageError")
/* @SuppressLint is needed for new media3 APIs. */
public class SampleAdsWrapper
    implements AdEvent.AdEventListener, AdErrorEvent.AdErrorListener, AdsLoader.AdsLoadedListener {

  // Set up the pod serving variables.
  private static final String NETWORK_CODE = "";
  private static final String CUSTOM_ASSET_KEY = "";
  private static final String API_KEY = "";
  private static final String STREAM_URL = "";
  private static final StreamFormat STREAM_FORMAT = StreamFormat.HLS;

برای فعال کردن «ارائه واحد آگهی»، درخواست جاری‌سازی واحد آگهی زنده یا VOD ایجاد کنید

ارائه واحد جاری‌سازی زنده

روش buildStreamRequest() را که برای جابه‌جایی بین ساخت انواع مختلف جاری‌سازی استفاده می‌شد بردارید. سپس، requestAndPlayAds() را اصلاح کنید تا ImaSdkFactory.createPodStreamRequest() را برای ایجاد درخواست آگهی «ارائه دسته آگهی زنده» فراخوانی کند.

// Live pod stream request.
request = sdkFactory.createPodStreamRequest(NETWORK_CODE, CUSTOM_ASSET_KEY, API_KEY);

ارائه واحد تبلیغات جاری‌سازی ویدیو به‌درخواست

روش buildStreamRequest() را که برای جابه‌جایی بین ساخت انواع مختلف جاری‌سازی استفاده می‌شد بردارید. سپس، requestAndPlayAds() را برای فراخوانی ImaSdkFactory.createPodVodStreamRequest() جهت ایجاد درخواست آگهی «ارائه پاد ویدیو به‌درخواست» اصلاح کنید.

// VOD pod stream request.
request = sdkFactory.createPodVodStreamRequest(NETWORK_CODE);

پس‌از ایجاد نمونه درخواست جاری‌سازی، بااستفاده از AdsLoader.requestStream() درخواست جاری‌سازی کنید:

request.setFormat(STREAM_FORMAT);
adsLoader.requestStream(request);

ویرایش و تنظیم نشانی وب جاری‌سازی

ارائه واحد جاری‌سازی زنده

برای دریافت شناسه جاری‌سازی، روش StreamManager.getStreamId() را فراخوانی کنید. این باید در STEAM_URL درج شود و جایگزین "[[STREAMID]]" شود. پس‌از انجام این تغییر، نشانی وب جاری‌سازی جدید را بااستفاده از روش videoPlayer.setStreamUrl() تنظیم کنید و روش videoPlayer.play() را برای شروع بازپخش جاری‌سازی فراخوانی کنید.

// Play the live pod stream.
streamID = streamManager.getStreamId();
String liveStreamUrl = STREAM_URL.replace("[[STREAMID]]", streamID);
// Call videoPlayer.play() here, because IMA doesn't call the VideoStreamPlayer.loadUrl()
// function for livestreams.
videoPlayer.setStreamUrl(liveStreamUrl);
videoPlayer.play();

ارائه پاد جاری‌سازی ویدیو به‌درخواست

  1. برای دریافت شناسه جاری‌سازی، روش StreamManager.getStreamId() را فراخوانی کنید.
  2. نشانی وب جاری‌سازی را از شریک فناوری ویدیو (VTP) خود درخواست کنید.
  3. پس‌از دریافت نشانی وب از VTP خود، روش StreamManager.loadThirdPartyStream() را با نشانی وب فراخوانی کنید تا جاری‌سازی بار شود، به‌همراه هر زیرنویسی که VTP شما برمی‌گرداند.
// Play the VOD pod stream.
streamID = streamManager.getStreamId();
String vodStreamUrl = "";
// Refer to your Video Tech Partner (VTP) or video stitching guide to fetch the stream URL
// and the subtitles for a the ad stitched VOD stream.

// In the following commented out code, 'vtpInterface' is a place holder
// for your own video technology partner (VTP) API calls.
// vodStreamUrl = vtpInterface.requestStreamURL(streamID);
List<Map<String, String>> subtitles = new ArrayList<>();
streamManager.loadThirdPartyStream(vodStreamUrl, subtitles);

برای درخواست‌های «ارائه پاد ویدیو به‌درخواست»، IMA وقتی جاری‌سازی بار شده است با VideoStreamPlayer.loadUrl() تماس می‌گیرد. برای شروع بازپخش جاری‌سازی، تماس‌های videoPlayer.setStreamUrl() و videoPlayer.play() را به VideoStreamPlayer.loadUrl() پاسخ‌به‌تماس اضافه کنید:

private VideoStreamPlayer createVideoStreamPlayer() {
  return new VideoStreamPlayer() {
    @Override
    public void loadUrl(String url, List<HashMap<String, String>> subtitles) {
      // IMA doesn't make calls to VideoStreamPlayer.loadUrl() for pod serving live streams.
      // The following code is for VOD streams.
      videoPlayer.setStreamUrl(url);
      videoPlayer.play();
    }

پاک‌سازی دارایی‌های IMA DAI

وقتی درخواست و نمایش آگهی‌ها را در یک Pod Serving stream با IMA DAI SDK با موفقیت به پایان رساندید، پیشنهاد می‌کنیم پس‌از تکمیل جلسه Pod Serving، منابع را پاک‌سازی کنید. برای متوقف کردن پخش جاری‌سازی، متوقف کردن همه ردیابی‌های آگهی، و واگذار کردن همه دارایی‌های جاری‌سازی بارگیری‌شده، با StreamManager.destroy() تماس بگیرید.

برای دیدن نمونه‌های دیگر از استفاده از «کیت توسعه نرم‌افزار Android»، به نمونه‌ها در GitHub مراجعه کنید.