IMA SDK ช่วยให้ผสานรวมโฆษณามัลติมีเดียเข้ากับเว็บไซต์และแอปได้อย่างง่ายดาย IMA SDK สามารถ ขอโฆษณาจากเซิร์ฟเวอร์โฆษณา ที่รองรับ VAST และจัดการการเล่นโฆษณาในแอปได้ เมื่อใช้ IMA DAI SDK แอปจะส่งคำขอสตรีมสำหรับโฆษณาและเนื้อหาวิดีโอ ไม่ว่าจะเป็นเนื้อหา VOD หรือเนื้อหาสด จากนั้น SDK จะแสดงสตรีมวิดีโอที่รวมกัน เพื่อให้คุณไม่ต้องจัดการการสลับระหว่างโฆษณาและวิดีโอเนื้อหา ภายในแอป
เลือกโซลูชัน DAI ที่คุณสนใจ
DAI Pod Serving
คู่มือนี้แสดงวิธีเล่นไลฟ์สดหรือสตรีม VOD ที่ใช้ DAI Pod Serving โดยใช้ IMA DAI SDK สำหรับ tvOS กับวิดีโอเพลเยอร์ หากต้องการดูหรือทำตามตัวอย่างการผสานรวมที่เสร็จสมบูรณ์แล้ว ให้ดาวน์โหลดแอปตัวอย่างการแสดงโฆษณาพ็อด (Obj C หรือ Swift)
ภาพรวมของ DAI Pod Serving ใน IMA
การใช้ Pod Serving โดยใช้ IMA DAI SDK สำหรับ tvOS มีคอมโพเนนต์หลัก 2 อย่าง ดังนี้
StreamRequest
: ออบเจ็กต์ที่กำหนดคำขอสตรีมไปยังเซิร์ฟเวอร์โฆษณาของ Google ต้องสร้างโดยใช้IMAPodStreamRequest
หรือIMAPodVODStreamRequest
เพื่อเปิดใช้การแสดงพ็อด ทั้ง 2 วิธีต้องใช้รหัสเครือข่ายและIMAPodStreamRequest
ต้องใช้คีย์ชิ้นงานที่กำหนดเองด้วย คีย์ API เป็น ตัวเลือกIMAStreamManager
: ออบเจ็กต์ที่จัดการการสื่อสารระหว่าง วิดีโอสตรีมกับ IMA DAI SDK เช่น การทริกเกอร์พิงการติดตามและ การส่งต่อเหตุการณ์สตรีมไปยังผู้เผยแพร่โฆษณา
ข้อกำหนดเบื้องต้น
ก่อนเริ่มต้น คุณต้องมีสิ่งต่อไปนี้
- Xcode 13 ขึ้นไป
- CocoaPods (แนะนำ), Swift Package Manager หรือสำเนาที่ดาวน์โหลดของ IMA DAI SDK สำหรับ tvOS
- แอป tvOS ที่ตั้งค่าด้วย IMA DAI SDK เพื่อเล่นสตรีมวิดีโอที่มี โฆษณา DAI อยู่แล้ว หากยังไม่มีแอปดังกล่าว เราขอแนะนําให้ใช้ tvOS DAI BasicExample เป็นจุดเริ่มต้น BasicExample มีฐานของโค้ดที่อ้างอิงในคำแนะนำนี้ ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีติดตั้งใช้งาน IMA DAI SDK ได้ที่คู่มือเริ่มใช้งานฉบับย่อ
ตั้งค่าตัวแปร Pod Serving
การเปลี่ยนแปลงทั้งหมดที่จำเป็นสำหรับการแสดงโฆษณาพ็อดจะดำเนินการใน ViewController.swift
ใน
Swift หรือ ViewController.m
ใน Objective-C ข้อมูลโค้ดในคู่มือนี้
จะใช้ภาษา Swift โดยค่าเริ่มต้น ขั้นตอนแรกคือการอัปเดต
ตัวแปรค่าคงที่
ค่าคงที่ของคำขอสตรีมพ็อดโฆษณาที่ต้องเพิ่มมีดังนี้
STREAM_URL
(ใช้สำหรับไลฟ์สดเท่านั้น): URL สตรีมวิดีโอที่ได้รับจาก เครื่องมือจัดการไฟล์ Manifest หรือพาร์ทเนอร์บุคคลที่สามที่ใช้ Pod Serving โดยคุณจะต้อง แทรกรหัสสตรีมที่ได้รับจาก IMA DAI SDK ก่อนที่จะ ส่งคำขอ ในกรณีนี้ URL ของสตรีมจะมีตัวยึดตำแหน่ง"[[STREAMID]]"
ซึ่งจะแทนที่ด้วยรหัสสตรีมก่อนที่จะส่งคำขอNETWORK_CODE
: รหัสเครือข่ายสำหรับบัญชี Ad Manager 360CUSTOM_ASSET_KEY
(ใช้สำหรับไลฟ์สดเท่านั้น): คีย์ชิ้นงานที่กำหนดเองซึ่งระบุเหตุการณ์การแสดงพ็อดใน Ad Manager 360 โดยผู้จัดการไฟล์ Manifest หรือพาร์ทเนอร์ Pod Serving บุคคลที่สามจะเป็นผู้สร้าง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
การแสดงพ็อดไลฟ์สด
แก้ไขrequestStream
method เพื่อสร้างคำขอไลฟ์พอดสตรีมโดย
การสร้างอินสแตนซ์ 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)
}
...
การแสดงพ็อดในสตรีม VOD
แก้ไขเมธอด requestStream
เพื่อสร้างคำขอสตรีมพอดแคสต์ VOD โดยการ
สร้างอินสแตนซ์ IMAPodVODStreamRequest
...
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
เพื่อ
รับรหัสสตรีม จากนั้นแทรกรหัสสตรีมลงใน STREAM_URL
โดยแทนที่
"[[STREAMID]]"
เมื่อทำการเปลี่ยนแปลงนี้แล้ว คุณจะตั้งค่า URL ของสตรีมใหม่ได้โดยใช้ 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
}
...
การแสดงพ็อดในสตรีม VOD
แก้ไขเมธอด IMAAdsLoaderDelegate
โดยใช้ streamManager.streamId
เพื่อ
รับรหัสสตรีม จากนั้นขอ URL ของสตรีมจากพาร์ทเนอร์เทคโนโลยีวิดีโอ (VTP) และเรียกใช้ 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