iOS-এর জন্য Media Ads (IMA) SDK।
এই নির্দেশিকাটি সেইসব IMA প্রকাশকদের জন্য যারা তাদের আগে থেকে থাকা IMA প্রয়োগে পিকচার-ইন- পিকচার সাপোর্ট যোগ করতে চান।
পূর্বশর্ত
- শুরু করার নির্দেশিকা সম্পূর্ণ করুন।
আপনার অ্যাপে ছবির-মধ্যে-ছবি ফিচার যোগ করা
SDK ভার্সন 3.1.0 থেকে, IMA, iPad-এর জন্য Apple-এর ছবির-মধ্যে-ছবি মোডে কাজ করে। আপনার অ্যাপে 'ছবির-মধ্যে-ছবি' ফিচার যোগ করতে, আপনাকে কয়েকটি সেটিংস পরিবর্তন করতে হবে এবং নিচে দেখানো কয়েকটি নতুন IMA ক্লাস প্রয়োগ করতে হবে।
ব্যাকগ্রাউন্ড প্লেব্যাকের অনুমতি দিতে সেটিংস আপডেট করা
'ছবির মধ্যে ছবি' মোডের জন্য আপনার অ্যাপে ব্যাকগ্রাউন্ড মিডিয়া প্লেব্যাকের অনুমতি প্রয়োজন।
নিচে দেখানো অনুযায়ী অডিও, AirPlay এবং ছবির-মধ্যে-ছবি-এর জন্য ব্যাকগ্রাউন্ড মোড চালু করুন:

ব্যাকগ্রাউন্ড প্লেব্যাক সাপোর্ট করার জন্য
AVAudioSessionপ্রপার্টি সেট করুন, সেইসাথেIMASettings-এ ব্যাকগ্রাউন্ড প্লেব্যাক চালু করুন:... – (void)viewDidLoad { [super viewDidLoad]; self.playButton.layer.zPosition = MAXFLOAT; [[AVAudioSession sharedInstance] setActive:YES error:nil]; [[AVAudioSession sharedInstance] setCategory:AVAudioSessionCategoryPlayback error:nil]; [self setupAdsLoader]; [self setUpContentPlayer]; } – (void)setupAdsLoader { IMASettings *settings = [[IMASettings alloc] init]; settings.enableBackgroundPlayback = YES; self.adsLoader = [[IMAAdsLoader alloc] initWithSettings:settings]; self.adsLoader.delegate = self; }
পিকচার-ইন-পিকচারের জন্য নতুন iOS এবং IMA অবজেক্ট তৈরি করা হচ্ছে
'ছবির-মধ্যে-ছবি' ফিচারকে সাপোর্ট করার জন্য, Apple AVPictureInPictureController
এবং AVPictureinPictureControllerDelegate ক্লাস যোগ করেছে। IMA-এর পক্ষ থেকে
IMAPictureInPictureProxy যোগ করা হয়েছে। আপনার প্রোজেক্টে এইসব ক্লাস অন্তর্ভুক্ত করতে, আপনার কোডে
নিচের বিবৃতি যোগ করুন:
... @interface VideoViewController () <AVPictureInPictureControllerDelegate, IMAAdsLoaderDelegate, IMAAdsManagerDelegate, UIAlertViewDelegate> ... // PiP objects. @property(nonatomic, strong) IMAPictureInPictureProxy *pictureInPictureProxy; @property(nonatomic, strong) AVPictureInPictureController *pictureInPictureController; ... @end - (void)setUpContentPlayer { ... self.pictureInPictureProxy = [[IMAPictureInPictureProxy alloc] initWithAVPictureInPictureControllerDelegate:self]; self.pictureInPictureController = [[AVPictureInPictureController alloc] initWithPlayerLayer:self.contentPlayerLayer]; self.pictureInPictureController.delegate = self.pictureInPictureProxy; }
বিজ্ঞাপনের অনুরোধ পরিবর্তন করা
তৈরি করার জন্য আরও একটি নতুন অবজেক্ট আছে: IMAAVPlayerVideoDisplay. এটি আপনার IMAAdsRequest কনস্ট্রাক্টরে
পাস করা হয় এবং আপনার ভিডিও যখন পিকচার-ইন-পিকচার মোডে চলে তখন এটি SDK-কে PiP
উইন্ডোতে বিজ্ঞাপন যোগ করতে দেয়:
... - (void)requestAdsWithTag:(NSString *)adTagUrl { [self logMessage:@"Requesting ads"]; // Create an ad request with our ad tag, display container, and optional user context. IMAAdsRequest *request = [[IMAAdsRequest alloc] initWithAdTagUrl:adTagUrl adDisplayContainer:[self createAdDisplayContainer] avPlayerVideoDisplay:[[IMAAVPlayerVideoDisplay alloc] initWithAVPlayer:self.contentPlayer] pictureInPictureProxy:self.pictureInPictureProxy userContext:nil]; [self.adsLoader requestAdsWithRequest:request]; }
বিজ্ঞাপন শুরু করা
IMA SDK বিজ্ঞাপন পিকচার-ইন-পিকচার মোডে চালু করা যায় না। এর ফলে,
আপনাকে নিশ্চিত করতে হবে যে আপনার ভিডিও স্ট্যান্ডার্ড প্লেব্যাক মোডে
থাকাকালীন আপনি শুধুমাত্র [adsManager start] কল করবেন:
... - (void)adsManager:(IMAAdsManager *)adsManager didReceiveAdEvent:(IMAAdEvent *)event { [self logMessage:@"AdsManager event (%s).", AdEventNames[event.type]]; // When the SDK notified you that ads have been loaded, play them. switch (event.type) { case kIMAAdEvent_LOADED: if (![self.pictureInPictureController isPictureInPictureActive]) { [adsManager start]; } break; ... default: break; } }
ছবির-মধ্যে-ছবি মোডে প্রবেশ করা হচ্ছে
আপনি AVPlayerViewController ছাড়া AVPlayer ব্যবহার করলে, আপনাকে
নিজের পিকচার-ইন-পিকচার বোতাম যোগ করতে হবে। আমরা আমাদের উন্নত
স্যাম্পেলে
এইভাবে একটি প্রয়োগ করেছি:
- (IBAction)onPipButtonClicked:(id)sender {
if ([self.pictureInPictureController isPictureInPictureActive]) {
[self.pictureInPictureController stopPictureInPicture];
} else {
[self.pictureInPictureController startPictureInPicture];
}
}
প্রায়শই জিজ্ঞাসিত প্রশ্ন
- ভিডিওটি পিকচার-ইন-পিকচার মোডে থাকলে আমি কীভাবে বিজ্ঞাপন চালানো শুরু করব?
- ভিডিও 'পিকচার-ইন-পিকচার' মোডে থাকাকালীন বিজ্ঞাপন শুরু করা যাবে না; সেগুলি শুধুমাত্র স্ট্যান্ডার্ড প্লেব্যাক মোডে শুরু করা যাবে।
- আমার আগে থেকে থাকা 'ছবির-মধ্যে-ছবি' ইন্টিগ্রেশনকে আমার নিজের ক্লাসে
self.pictureInPictureController.delegateসেট করতে হবে। আমি কীভাবে ছবির-মধ্যে-ছবিতে IMA বিজ্ঞাপন প্রয়োগ করব এবং এখনও ডেলিগেট হিসেবে থাকব? - এছাড়াও, পিকচার-ইন-পিকচার মোডে বিজ্ঞাপন প্লেব্যাক চালু করতে IMA SDK-কে
AVPictureinPictureControllerDelegateমেসেজ পেতে হবে। এই কারণেই আমরা আপনাকেAVPictureinPictureController-এর ডেলিগেটকেIMAPictureInPicturyProxy-এর ইনস্ট্যান্স হিসেবে সেট করতে বলি। এই প্রক্সি অবজেক্ট আপনার অ্যাপে সবAVPictureinPictureControllerDelegateমেসেজ ফরওয়ার্ড করে, তবে পিকচার-ইন-পিকচার সাপোর্ট চালু করতে IMA-তে কলও ফরওয়ার্ড করে। মনে রাখবেন যে আপনাকে AVPlayerLayer-এর জন্য একটি লোকাল হ্যান্ডেলও বজায় রাখতে হবে।