इस गाइड में, tvOS के लिए आईएमए डीएआई एसडीके और वीडियो प्लेयर का इस्तेमाल करके, डीएआई पॉड सर्विंग लाइव या वीओडी स्ट्रीम चलाने का तरीका बताया गया है. पूरा हो चुका सैंपल इंटिग्रेशन देखने या उसे फ़ॉलो करने के लिए, पॉड सर्विंग का उदाहरण देने वाला ऐप्लिकेशन (Obj C या Swift) डाउनलोड करें.
आईएमए डीएआई पॉड सर्विंग की खास जानकारी
tvOS के लिए IMA डीएआई एसडीके का इस्तेमाल करके, पॉड सर्विंग की सुविधा लागू करने के लिए, दो मुख्य कॉम्पोनेंट की ज़रूरत होती है:
StreamRequest: यह एक ऐसा ऑब्जेक्ट है जो Google के विज्ञापन सर्वर को स्ट्रीम के लिए अनुरोध भेजता है. पॉड सर्विंग की सुविधा चालू करने के लिए, इसेIMAPodStreamRequestयाIMAPodVODStreamRequestका इस्तेमाल करके बनाया जाना चाहिए. दोनों तरीकों के लिए, नेटवर्क कोड की ज़रूरत होती है. साथ ही,IMAPodStreamRequestके लिए कस्टम एसेट कुंजी की भी ज़रूरत होती है. एपीआई पासकोड डालना ज़रूरी नहीं है.IMAStreamManager: यह एक ऐसा ऑब्जेक्ट है जो वीडियो स्ट्रीम और आईएमए डीएआई SDK के बीच कम्यूनिकेशन को मैनेज करता है. जैसे, ट्रैकिंग पिंग को ट्रिगर करना और स्ट्रीम इवेंट को पब्लिशर को भेजना.
ज़रूरी शर्तें
शुरू करने से पहले, आपको ये चीज़ें चाहिए:
- Xcode 13 या इसके बाद का वर्शन.
- आईएमए एसडीके इंस्टॉल करने का तरीका:
- Swift Package Manager (पसंदीदा)
- tvOS के लिए IMA SDK की डाउनलोड की गई कॉपी
- एक tvOS ऐप्लिकेशन, जिसे पहले से ही आईएमए डीएआई SDK के साथ सेट अप किया गया हो, ताकि डीएआई विज्ञापनों के साथ वीडियो स्ट्रीम चलाए जा सकें. अगर आपके पास पहले से ऐसा कोई ऐप्लिकेशन नहीं है, तो हमारा सुझाव है कि आप शुरुआत करने के लिए, tvOS DAI BasicExample का इस्तेमाल करें. BasicExample में वह कोड बेस है जिसका रेफ़रंस इस गाइड में दिया गया है. आईएमए डीएआई एसडीके को लागू करने के तरीके के बारे में ज़्यादा जानने के लिए, आसानी से बताने/सिखाने वाली गाइड देखें.
पॉड सर्विंग वैरिएबल सेट अप करना
Swift में ViewController.swift या Objective-C में ViewController.m में, पॉड सर्विंग के लिए सभी बदलाव करें. इस गाइड में दिए गए स्निपेट,
डिफ़ॉल्ट रूप से Swift भाषा का इस्तेमाल करते हैं. सबसे पहले, कॉन्स्टेंट वैरिएबल को अपडेट करें.
विज्ञापनों के पॉड की स्ट्रीम के अनुरोध के लिए, ये कॉन्स्टेंट जोड़ें:
STREAM_URL(सिर्फ़ लाइव स्ट्रीम के लिए इस्तेमाल किया जाता है): पॉड सर्विंग का इस्तेमाल करके, आपके मेनिफ़ेस्ट मैनिपुलेटर या थर्ड पार्टी पार्टनर से मिला वीडियो स्ट्रीम का यूआरएल. अनुरोध करने से पहले, आपको आईएमए डीएआई एसडीके से मिला स्ट्रीम आईडी डालना होगा. इस मामले में, स्ट्रीम के यूआरएल में एक प्लेसहोल्डर,"[[STREAMID]]"शामिल होता है. अनुरोध करने से पहले, आपको इसे स्ट्रीम आईडी से बदलना होगा.NETWORK_CODE: आपके Ad Manager 360 खाते का नेटवर्क कोड.CUSTOM_ASSET_KEY(सिर्फ़ लाइव स्ट्रीम के लिए इस्तेमाल किया जाता है): कस्टम ऐसेट कुंजी, जो Ad Manager 360 में आपके पॉड सर्विंग इवेंट की पहचान करती है. मेनिफ़ेस्ट मैनिप्युलेटर या पॉड सर्विंग पार्टनर, इसे बना सकता है.API_KEY(सिर्फ़ लाइव स्ट्रीम के लिए इस्तेमाल किया जाता है): यह एक वैकल्पिक एपीआई पासकोड है. आईएमए डीएआई एसडीके से स्ट्रीम आईडी पाने के लिए, इसकी ज़रूरत पड़ सकती है.
उदाहरण के वैरिएबल सेक्शन को बदलकर, यहां दिए गए वैरिएबल के मुताबिक बनाएं:
...
class ViewController:
UIViewController,
IMAAdsLoaderDelegate,
IMAStreamManagerDelegate,
AVPlayerViewControllerDelegate
{
static let streamUrl = ""
static let networkCode = ""
static let customAssetKey = ""
static let APIKey = ""
static let backupStreamURLString = ""
var adsLoader: IMAAdsLoader?
...
लाइव या वीओडी पॉड स्ट्रीम का अनुरोध करना
लाइव स्ट्रीम पॉड सर्विंग
requestStream तरीके में बदलाव करके, लाइव पॉड स्ट्रीम का अनुरोध करें. इसके लिए, IMAPodStreamRequest को इंस्टैंशिएट करें.
...
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)
}
...
वीओडी स्ट्रीम पॉड सर्विंग
IMAPodVODStreamRequest को इंस्टैंशिएट करके, वीओडी पॉड स्ट्रीम का अनुरोध करने के लिए, 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 = IMAPodVODStreamRequest(
networkCode: self.networkCode,
adDisplayContainer: adDisplayContainer,
videoDisplay: self.videoDisplay,
userContext: nil)
adsLoader.requestStream(with: request)
}
...
स्ट्रीम के यूआरएल में बदलाव करना और उसे सेट करना
लाइव स्ट्रीम पॉड सर्विंग
IMAAdsLoaderDelegate के तरीकों में बदलाव करें. इसके लिए, streamManager.streamId का इस्तेमाल करके स्ट्रीम आईडी पाएं. इसके बाद, स्ट्रीम आईडी को STREAM_URL में डालें और "[[STREAMID]]" को बदलें. यह बदलाव करने के बाद, videoDisplay.loadStream() का इस्तेमाल करके नया स्ट्रीम यूआरएल सेट करें.
...
// 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
}
...
वीओडी स्ट्रीम पॉड सर्विंग
IMAAdsLoaderDelegate के तरीकों में बदलाव करें. इसके लिए, streamManager.streamId का इस्तेमाल करके स्ट्रीम आईडी पाएं. इसके बाद, अपने वीडियो टेक्नोलॉजी पार्टनर (वीटीपी) से स्ट्रीम यूआरएल का अनुरोध करें और IMAStreamManager.loadThirdPartyStream() को कॉल करें, ताकि आईएमए, स्ट्रीम यूआरएल और आपके टीवीपी से मिले सबटाइटल लोड कर सके.
...
// 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
}
आईएमए डीएआई ऐसेट को क्लीन अप करना
आईएमए डीएआई एसडीके की मदद से, पॉड सर्विंग स्ट्रीम में विज्ञापनों का अनुरोध करने और उन्हें दिखाने की प्रोसेस पूरी होने के बाद, हमारा सुझाव है कि आप पॉड सर्विंग सेशन पूरा होने के बाद सभी रिसॉर्स मिटा दें. स्ट्रीम प्लेबैक को रोकने, विज्ञापन की सभी ट्रैकिंग बंद करने, और लोड की गई सभी स्ट्रीम ऐसेट को रिलीज़ करने के लिए, IMAStreamManager.destroy() को कॉल करें.
tvOS SDK टूल के इस्तेमाल के अन्य उदाहरण देखने के लिए, GitHub पर सैंपल देखें.