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