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

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

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

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

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

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

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

#import <InteractiveMediaAds/InteractiveMediaAds.h>

New

#import <GoogleInteractiveMediaAds/GoogleInteractiveMediaAds.h>

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

@import InteractiveMediaAds;

New

@import GoogleInteractiveMediaAds;

إنشاء حاوية الإعلان الجديدة

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

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

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];

New

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];

New

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

تنفيذ IMAAdsLoaderسرع لإعداد البث

تمت إعادة تسمية هذه الدوال وتعديلها لتكون متوافقة مع حزمة تطوير البرامج (SDK) لنظام التشغيل iOS. وقد تغيّرت أيضًا العلاقة بين مدير البث وساحة المشاركات. في الإصدار 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];
}

New

- (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];
}

تنفيذ IMAStreamManagerManager

لضمان التوافق مع حِزم تطوير البرامج (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;
}

New

- (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;
  }
}