تم دمج حزمة تطوير البرامج لإعلانات الوسائط التفاعلية من أجل 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; } } |