IMA SDK ช่วยให้การผสานรวมโฆษณามัลติมีเดียลงในเว็บไซต์และแอปเป็นเรื่องง่าย IMA SDK สามารถขอโฆษณาจากเซิร์ฟเวอร์โฆษณาที่ สอดคล้องกับ VAST และจัดการการเล่นโฆษณาในแอปของคุณ เมื่อใช้ IMA DAI SDK แอปจะส่งคำขอสตรีมสำหรับโฆษณาและวิดีโอเนื้อหาไม่ว่าจะเป็น VOD หรือเนื้อหาสด จากนั้น SDK จะแสดงสตรีมวิดีโอแบบรวมเพื่อให้คุณไม่ต้องจัดการการสลับระหว่างโฆษณาและวิดีโอเนื้อหาภายในแอป
เลือกโซลูชัน DAI ที่สนใจ
DAI ที่แสดงพ็อด
คู่มือนี้แสดงวิธีเล่นสตรีม DAI Pod Feeds แบบสดหรือ VOD โดยใช้ IMA DAI SDK สำหรับ tvOS ที่มีโปรแกรมเล่นวิดีโอแบบง่าย หากคุณต้องการทำตามตัวอย่างที่สมบูรณ์ ให้ดาวน์โหลดแอปตัวอย่างการให้บริการพ็อด (Obj C หรือ Swift)
ภาพรวมการแสดงพ็อด IMA DAI
การใช้งานการแสดงพ็อดโดยใช้ IMA DAI SDK สำหรับ tvOS จะมีองค์ประกอบหลัก 2 อย่าง ได้แก่
StreamRequest
: ออบเจ็กต์ที่กำหนดคำขอสตรีมไปยังเซิร์ฟเวอร์โฆษณาของ Google ต้องสร้างโดยใช้IMAPodStreamRequest
หรือIMAPodVODStreamRequest
เพื่อเปิดใช้การแสดงพ็อด ทั้ง 2 วิธีจำเป็นต้องมีรหัสเครือข่าย และIMAPodStreamRequest
ก็ต้องมีคีย์เนื้อหาที่กำหนดเองด้วย คุณจะใช้ API Key หรือไม่ก็ได้IMAStreamManager
: ออบเจ็กต์ที่จัดการการสื่อสารระหว่างสตรีมวิดีโอกับ IMA DAI SDK เช่น การเริ่มคำสั่ง ping การติดตามและการส่งต่อเหตุการณ์สตรีมไปยังผู้เผยแพร่โฆษณา
ข้อกำหนดเบื้องต้น
ก่อนที่จะเริ่มต้น คุณต้องมีสิ่งต่อไปนี้
- Xcode 13 ขึ้นไป
- CocoaPods (แนะนำ), Swift Package Manager หรือสำเนาที่ดาวน์โหลด IMA DAI SDK สำหรับ tvOS
- แอป tvOS ที่ตั้งค่า IMA DAI SDK ไว้เพื่อเล่นสตรีมวิดีโอด้วยโฆษณา DAI แล้ว หากคุณยังไม่มีแอปประเภทนี้ เราขอแนะนำให้ใช้ tvOS DAI BasicExample เป็นจุดเริ่มต้น BasicExample มีฐานของโค้ดอ้างอิงในคู่มือนี้ ดูข้อมูลเพิ่มเติมเกี่ยวกับวิธีใช้ IMA DAI SDK ได้ที่คู่มือเริ่มใช้งานฉบับย่อ
ตั้งค่าตัวแปรการแสดงพ็อด
การเปลี่ยนแปลงทั้งหมดที่จำเป็นสำหรับการแสดงพ็อดใน ViewController.swift
ใน Swft หรือ ViewController.m
ใน Objective-C ตัวอย่างข้อมูลในคู่มือนี้
ใช้ภาษา Swift เป็นค่าเริ่มต้น ขั้นตอนแรกคือการอัปเดตตัวแปร
คงที่
ค่าคงที่คำขอสตรีมพ็อดโฆษณาที่จะเพิ่มมีดังนี้
STREAM_URL
(ใช้สำหรับสตรีมแบบสดเท่านั้น): URL ของสตรีมวิดีโอที่มาจากเครื่องมือการจัดการไฟล์ Manifest หรือพาร์ทเนอร์บุคคลที่สามที่ใช้การแสดงพ็อด ต้องใส่รหัสสตรีมที่ได้จาก IMA DAI SDK ก่อนที่จะส่งคำขอ ในกรณีนี้ URL ของสตรีมจะมีตัวยึดตำแหน่ง"[[STREAMID]]"
ซึ่งแทนที่ด้วยรหัสสตรีมก่อนที่จะส่งคำขอNETWORK_CODE
: รหัสเครือข่ายสำหรับบัญชี Ad Manager 360CUSTOM_ASSET_KEY
(ใช้สำหรับสตรีมแบบสดเท่านั้น): คีย์เนื้อหาที่กำหนดเองซึ่งระบุเหตุการณ์การแสดงพ็อดใน Ad Manager 360 ซึ่งสามารถสร้างขึ้นโดยเครื่องมือจัดการไฟล์ Manifest หรือพาร์ทเนอร์การแสดงพ็อดบุคคลที่สามAPI_KEY
(ใช้สำหรับสตรีมแบบสดเท่านั้น): คีย์ API ที่ไม่บังคับซึ่งต้องใช้เพื่อดึงรหัสสตรีมจาก IMA DAI SDK
เปลี่ยนส่วนตัวแปรของตัวอย่างให้ตรงกับรายการต่อไปนี้
...
class ViewController:
UIViewController,
IMAAdsLoaderDelegate,
IMAStreamManagerDelegate,
AVPlayerViewControllerDelegate
{
static let streamUrl =
"https://encodersim.sandbox.google.com/masterPlaylist/9c654d63-5373-4673-8c8d-6d92b66b9d46/master.m3u8?gen-seg-redirect=true&network=51636543&event=google-sample&pids=devrel4628000,devrel896000,devrel3528000,devrel1428000,devrel2628000,devrel1928000&seg-host=dai.google.com&stream_id=[[STREAMID]]"
static let networkCode = "51636543"
static let customAssetKey = "google-sample"
static let APIKey = ""
static let backupStreamURLString =
"http://googleimadev-vh.akamaihd.net/i/big_buck_bunny/bbb-,480p,720p,1080p,.mov.csmil/master.m3u8"
var adsLoader: IMAAdsLoader?
...
สร้างคำขอสตรีมพ็อดแบบสดหรือ VOD
การแสดงพ็อดสตรีมแบบสด
แก้ไขเมธอด 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)
}
...
การแสดงพ็อดสตรีม 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 SDK สำหรับ tvOS หากต้องการดูตัวอย่างอื่นๆ ของ IMA DAI SDK ที่มีการใช้งานอยู่ ให้ดูที่ตัวอย่างบน GitHub