ترقية الإصدار 3 من DAI إلى الإصدار 4

لقد تم دمج حزمة تطوير البرامج لإدراج إعلان ديناميكي لإعلانات الوسائط التفاعلية وحزمة تطوير البرامج من جهة العميل لإعلانات الوسائط التفاعلية في الإصدار 4 وتمت إعادة صياغتها باعتبارها مجموعة فرعية محددة من حزمة SDK لنظام التشغيل iOS. هذا بشكل ملحوظ ويقلل من منحنى التعلم لمطوري iOS. نتيجة لذلك، قد لا يتم إرجاع بعض التعليمات البرمجية المطلوبة لمستخدمي ميزة "إدراج إعلان ديناميكي" لتصبح أكثر اتّساقًا مع حِزم تطوير البرامج (SDK) الأخرى.

يشرح هذا الدليل العملية المطلوبة لترقية إصدار حالي 3. تنفيذها في الإصدار 4 من حزمة SDK الجديدة.

وإذا لم تكن متأكدًا، يُرجى الرجوع إلى نماذج "إدراج إعلان ديناميكي" على نظام التشغيل iOSثم نفس واجهة برمجة التطبيقات tvOS v4 (باستثناء التطبيقات المصاحبة وPIP والتي لا تتوفر على tvOS).

تغيير اسم الوحدة

لتتطابق مع حزمة تطوير البرامج (SDK) لنظام التشغيل iOS، غيّرنا اسم الوحدة من InteractiveMediaAds. إلى GoogleInteractiveMediaAds.

التغييرات
الإصدار القديم

#import <InteractiveMediaAds/InteractiveMediaAds.h>
جديد

#import <GoogleInteractiveMediaAds/GoogleInteractiveMediaAds.h>
الإصدار القديم

@import InteractiveMediaAds;
جديد

@import GoogleInteractiveMediaAds;

أنشئ حاوية الإعلان الجديدة.

تعد IMAAdDisplayContainer مسؤولة عن إدارة عرض حاوية الإعلان الخانات الإعلانية المصاحبة المستخدمة في تشغيل الإعلان.

التغييرات
الإصدار القديم ولا يوجد مكافئ سابق.
جديد

self.adDisplayContainer =
    [[IMAAdDisplayContainer alloc] initWithAdContainer:self.videoView];

تمرير IMAVideoDisplay وIMAAdDisplayContainer إلى IMAStreamRequest

بما أنّه لديك الآن عرض فيديو وIMAAdDisplayContainer, يجب اجتياز الاختبار إلى طلب البث لكي تتمكّن أداة تطوير البرامج لإدراج إعلان ديناميكي لإعلانات الوسائط التفاعلية من إدارتها.

التغييرات
الإصدار القديم

IMALiveStreamRequest *streamRequest =
    [[IMALiveStreamRequest alloc] initWithAssetKey:kAssetKey];
IMAVODStreamRequest *streamRequest =
    [[IMAVODStreamRequest alloc] initWithContentSourceID:kContentSourceID
                                                 videoID:kVideoID];
جديد

IMALiveStreamRequest *streamRequest =
    [[IMALiveStreamRequest alloc] initWithAssetKey:kAssetKey
                                adDisplayContainer:self.adDisplayContainer
                                      videoDisplay:self.videoDisplay];
IMAVODStreamRequest *streamRequest =
      [[IMAVODStreamRequest alloc] initWithContentSourceId:kContentSourceID
                                                   videoId:kVideoID
                                        adDisplayContainer:self.adDisplayContainer
                                              videoDisplay:self.videoDisplay];

طلب باستخدام IMAAdsLoader

التغييرات
الإصدار القديم

self.streamManager =
    [[IMAStreamManager alloc] initWithVideoDisplay:self.videoDisplay];
self.streamManager.delegate = self;
[self.streamManager requestStream:streamRequest];
جديد

self.adsLoader = [[IMAAdsLoader alloc] init];
self.adsLoader.delegate = self;
[self.adsLoader requestStreamWithRequest:streamRequest];

تنفيذ IMAAdsLoaderDelegate لإعداد البث

تمت إعادة تسمية هذه الدوال وتعديلها لتتوافق مع نظام التشغيل iOS SDK. تغيّرت أيضًا العلاقة بين مدير البث والبث المباشر. في جلسة المعمل، الإصدار 3 من حزمة SDK، فيمكن استخدام مدير بث واحد لإدارة مجموعات بث متعددة. في الإصدار 4، يمكن لكل مدير بث إدارة بث واحد فقط.

التغييرات
الإصدار القديم

- (void)streamManager:(IMAStreamManager *)streamManager
    didInitializeStream:(NSString *)streamID {
  NSLog(@"Stream initialized with streamID: %@", streamID);
}

- (void)streamManager:(IMAStreamManager *)streamManager
      didReceiveError:(NSError *)error {
  NSLog(@"Error: %@", error);
  [self playBackupStream];
}
جديد

- (void)adsLoader:(IMAAdsLoader *)loader
    adsLoadedWithData:(IMAAdsLoadedData *)adsLoadedData {
  self.streamManager = adsLoadedData.streamManager;
  self.streamManager.delegate = self;
  [self.streamManager initializeWithAdsRenderingSettings:nil];
  NSLog(@"Stream initialized with streamID: %@", self.streamManager.streamId);
}

- (void)adsLoader:(IMAAdsLoader *)loader
    failedWithErrorData:(IMAAdLoadingErrorData *)adErrorData {
  NSLog(@"Error: %@", adErrorData.adError);
  [self playBackupStream];
}

تنفيذ IMAStreamManagerDelegate

لتحقيق الاتساق مع حِزم تطوير البرامج (SDK) لنظام التشغيل iOS، توفِّر حزمة تطوير البرامج (SDK) لنظام التشغيل tvOS الآن مصدر بيانات واحدًا. مفوَّض من قِبل المدير، IMAStreamManagerDelegate، لمعالجة أحداث البث. إِنْتَ إلى استخدام عبارة التبديل داخل هذا التفويض لإدارة حسابات أحداث.

التغييرات
الإصدار القديم

- (void)streamManager:(IMAStreamManager *)streamManager
      adBreakDidStart:(IMAAdBreakInfo *)adBreakInfo {
  NSLog(@"Ad break started");
  self.playerViewController.requiresLinearPlayback = YES;
}

- (void)streamManager:(IMAStreamManager *)streamManager
        adBreakDidEnd:(IMAAdBreakInfo *)adBreakInfo {
  NSLog(@"Ad break ended");
  self.playerViewController.requiresLinearPlayback = NO;
}
جديد

- (void)streamManager:(IMAStreamManager *)streamManager
    didReceiveAdEvent:(IMAAdEvent *)event {
  NSLog(@"StreamManager event (%@).", event.typeString);
  switch (event.type) {
    case kIMAAdEvent_AD_BREAK_STARTED: {
      NSLog(@"Ad break started");
      self.playerViewController.requiresLinearPlayback = YES;
      break;
    }
    case kIMAAdEvent_AD_BREAK_ENDED: {
      NSLog(@"Ad break ended");
      self.playerViewController.requiresLinearPlayback = NO;
      break;
    }
    // And so on for other events.
    default:
      break;
  }
}