এই নির্দেশিকা দেখায় যে কীভাবে ভিডিও প্লেয়ারের সাথে tvOS-এর জন্য IMA DAI SDK ব্যবহার করে DAI পড পরিবেশন লাইভ বা VOD স্ট্রিম চালাতে হয়। সম্পূর্ণ স্যাম্পেল ইন্টিগ্রেশন দেখতে বা অনুসরণ করতে, Pod Serving উদাহরণ অ্যাপ ডাউনলোড করুন (Obj C অথবা Swift)।
IMA DAI পড পরিবেশন সংক্রান্ত ওভারভিউ
tvOS-এর জন্য IMA DAI SDK ব্যবহার করে পড পরিবেশন করার ক্ষেত্রে দুটি প্রধান কম্পোনেন্ট রয়েছে:
StreamRequest: Google-এর বিজ্ঞাপন সার্ভারে স্ট্রিম অনুরোধকে সংজ্ঞায়িত করে এমন অবজেক্ট। পড সার্ভিং চালু করতেIMAPodStreamRequestবাIMAPodVODStreamRequestব্যবহার করে তৈরি করতে হবে। দুটি পদ্ধতির জন্যই নেটওয়ার্ক কোড প্রয়োজন এবংIMAPodStreamRequest-এর জন্য কাস্টম অ্যাসেট কী প্রয়োজন। API Key ঐচ্ছিক।IMAStreamManager: এমন একটি অবজেক্ট যা ভিডিও স্ট্রিম এবং IMA DAI SDK-এর মধ্যে যোগাযোগ পরিচালনা করে, যেমন ট্র্যাকিং পিং ফায়ার করা এবং প্রকাশকের কাছে স্ট্রিম ইভেন্ট ফরওয়ার্ড করা।
পূর্বশর্ত
শুরু করার আগে, আপনার নিম্নলিখিতগুলি প্রয়োজন:
- Xcode 13 বা তার পরবর্তী যেকোনও ভার্সন।
- IMA SDK ইনস্টল করার পদ্ধতি:
- Swift প্যাকেজ ম্যানেজার (preferred)
- tvOS-এর জন্য IMA SDK-এর ডাউনলোড কপি
- DAI বিজ্ঞাপনের সাথে ভিডিও স্ট্রিম চালানোর জন্য tvOS অ্যাপ আগে থেকেই IMA DAI SDK-এর সাথে সেট-আপ করা আছে। আপনার কাছে আগে থেকে এই ধরনের কোনও অ্যাপ না থাকলে, আমরা আপনাকে tvOS DAI BasicExample দিয়ে শুরু করতে সাজেস্ট করি। BasicExample-এ এই গাইডে উল্লেখ করা কোডবেস আছে। IMA DAI SDK কীভাবে প্রয়োগ করতে হয় সেই সম্পর্কে আরও জানতে, দ্রুত শুরু করার নির্দেশিকা দেখুন।
আপনার পড সার্ভিসিং ভেরিয়েবল সেট-আপ করুন
পড সার্ভিংয়ের জন্য সব পরিবর্তন Swift-এ ViewController.swift-এ অথবা Objective-C-তে ViewController.m-এ করুন। এই গাইডের স্নিপেটগুলি
ডিফল্টরূপে Swift ভাষা ব্যবহার করে। প্রথম ধাপ হল কনস্ট্যান্ট ভেরিয়েবেল
আপডেট করা।
নিম্নলিখিত বিজ্ঞাপন পড স্ট্রিম অনুরোধের কনস্ট্যান্ট যোগ করুন:
STREAM_URL(শুধুমাত্র লাইভস্ট্রিমের জন্য ব্যবহার করা হয়): আপনার ম্যানিফেস্ট ম্যানিপুলেটর বা পড সার্ভিং ব্যবহারকারী থার্ড-পার্টি পার্টনারের প্রদান করা ভিডিও স্ট্রিম URL। অনুরোধ করার আগে, আপনাকে IMA DAI SDK-এর দেওয়া স্ট্রিম আইডি যোগ করতে হবে। এই ক্ষেত্রে, স্ট্রিম URL-এ একটি প্লেসহোল্ডার,"[[STREAMID]]"অন্তর্ভুক্ত থাকে, যা আপনি অনুরোধ করার আগে স্ট্রিম আইডি দিয়ে পরিবর্তন করেন।NETWORK_CODE: আপনার Ad Manager 360 অ্যাকাউন্টের নেটওয়ার্ক কোড।CUSTOM_ASSET_KEY(শুধুমাত্র লাইভস্ট্রিমের জন্য ব্যবহার করা হয়): কাস্টম অ্যাসেট কী যা Ad Manager 360-তে আপনার পড পরিবেশন ইভেন্ট শনাক্ত করে। আপনার ম্যানিফেস্ট ম্যানিপুলেটর বা থার্ড-পার্টি পড পরিবেশন পার্টনার এটি তৈরি করতে পারে।API_KEY(শুধুমাত্র লাইভস্ট্রিমের জন্য ব্যবহার করা হয়): একটি ঐচ্ছিক API কী যা IMA DAI SDK থেকে স্ট্রিম আইডি ফিরিয়ে আনার জন্য প্রয়োজন হতে পারে।
নিম্নলিখিতটির সাথে ম্যাচ করতে উদাহরণের ভেরিয়েবেল বিভাগ পরিবর্তন করুন:
...
class ViewController:
UIViewController,
IMAAdsLoaderDelegate,
IMAStreamManagerDelegate,
AVPlayerViewControllerDelegate
{
static let streamUrl = ""
static let networkCode = ""
static let customAssetKey = ""
static let APIKey = ""
static let backupStreamURLString = ""
var adsLoader: IMAAdsLoader?
...
লাইভ বা VOD পড স্ট্রিম অনুরোধের মধ্যে যেকোনও একটি তৈরি করুন
লাইভস্ট্রিম পড পরিবেশন করা
IMAPodStreamRequest ইনস্ট্যান্টিয়েট করে লাইভ পড স্ট্রিম অনুরোধ তৈরি করতে requestStream পদ্ধতিটি
পরিবর্তন করুন।
...
func requestStream() {
guard let playerViewController = self.playerViewController else return
guard let adContainerView = self.adContainerView else return
guard let adsLoader = self.adsLoader else return
self.videoDisplay = IMAAVPlayerVideoDisplay(avPlayer: playerViewController.player)
adDisplayContainer = IMAAdDisplayContainer(
adContainer: adContainerView, viewController: self)
// Create a podserving stream request.
request = IMAPodStreamRequest(
networkCode: self.networkCode,
customAssetKey: self.customAssetKey,
adDisplayContainer: adDisplayContainer,
videoDisplay: self.videoDisplay,
userContext: nil)
adsLoader.requestStream(with: request)
}
...
VOD স্ট্রিম পড পরিবেশন
requestStream পদ্ধতিটি পরিবর্তন করুন যাতে IMAPodVODStreamRequest ইনস্ট্যান্টিয়েট করে VOD পড স্ট্রিম অনুরোধ তৈরি করা যায়।
...
func requestStream() {
guard let playerViewController = self.playerViewController else return
guard let adContainerView = self.adContainerView else return
guard let adsLoader = self.adsLoader else return
self.videoDisplay = IMAAVPlayerVideoDisplay(avPlayer: playerViewController.player)
adDisplayContainer = IMAAdDisplayContainer(
adContainer: adContainerView, viewController: self)
// Create a podserving stream request.
request = IMAPodVODStreamRequest(
networkCode: self.networkCode,
adDisplayContainer: adDisplayContainer,
videoDisplay: self.videoDisplay,
userContext: nil)
adsLoader.requestStream(with: request)
}
...
স্ট্রিম URL এডিট ও সেট করা
লাইভস্ট্রিম পড পরিবেশন করা
IMAAdsLoaderDelegate পদ্ধতি পরিবর্তন করুন, স্ট্রিম আইডি পেতে
streamManager.streamId ব্যবহার করুন। তারপর "[[STREAMID]]"-এর জায়গায় STREAM_URL-এ স্ট্রিম আইডি লিখুন। এই পরিবর্তন করার পরে, videoDisplay.loadStream() ব্যবহার করে নতুন স্ট্রিম URL সেট করুন।
...
// MARK: - IMAAdsLoaderDelegate
func adsLoader(_ loader: IMAAdsLoader!, adsLoadedWith adsLoadedData: IMAAdsLoadedData!) {
let streamManager = adsLoadedData.streamManager
let streamId = streamManager.streamId
let urlString = streamUrl.replacingOccurrences(of: "[[STREAMID]]", with: streamId)
let loadedStreamUrl = URL(string:urlString)
self.videoDisplay.loadStream(loadedStreamUrl, subtitles:@[])
self.videoDisplay.play()
streamManager.delegate = self
streamManager.initialize(with: nil)
self.streamManager = streamManager
}
...
VOD স্ট্রিম পড পরিবেশন
স্ট্রিম আইডি পেতে streamManager.streamId ব্যবহার করে IMAAdsLoaderDelegate পদ্ধতি
পরিবর্তন করুন। তারপর, আপনার ভিডিও প্রযুক্তি পার্টনারের (VTP) থেকে স্ট্রিম URL-এর অনুরোধ করুন এবং IMAStreamManager.loadThirdPartyStream() কল করুন যাতে IMA
স্ট্রিম URL এবং আপনার TVP-এর মাধ্যমে ফেরত পাঠানো যেকোনও সাবটাইটেল লোড করতে পারে।
...
// MARK: - IMAAdsLoaderDelegate
func adsLoader(_ loader: IMAAdsLoader!, adsLoadedWith adsLoadedData: IMAAdsLoadedData!) {
let streamManager = adsLoadedData.streamManager
let streamId = streamManager.streamId
// 'vtpInterface' is a place holder for your own video technology partner
// (VTP) API calls.
let streamUrl = vtpInterface.requestStreamURL(streamID)
self.streamManager.loadThirdPartyStream(streamUrl, streamSubtitles:@[])
streamManager.delegate = self
streamManager.initialize(with: nil)
self.streamManager = streamManager
}
IMA DAI অ্যাসেট ক্লিন-আপ করা
IMA DAI SDK-এর মাধ্যমে পড সার্ভিং স্ট্রিমে বিজ্ঞাপনের অনুরোধ করা এবং দেখানোর কাজ সফলভাবে শেষ করার পরে, পড সার্ভিং সেশন সম্পূর্ণ হলে আমরা আপনাকে যেকোনও রিসোর্স ক্লিন-আপ করার সাজেশন দিই। স্ট্রিম প্লেব্যাক বন্ধ করতে, সব বিজ্ঞাপন ট্র্যাকিং বন্ধ করতে এবং লোড করা সব স্ট্রিম অ্যাসেট রিলিজ করতে IMAStreamManager.destroy() কল করুন।
tvOS SDK ব্যবহার করার অন্যান্য উদাহরণ দেখতে, GitHub-এ স্যাম্পেল দেখুন।