SDK IMA giúp bạn dễ dàng tích hợp quảng cáo đa phương tiện vào trang web và ứng dụng của mình. SDK IMA có thể yêu cầu quảng cáo từ bất kỳ Máy chủ quảng cáo tuân thủ VAST và quản lý việc phát quảng cáo trong các ứng dụng của bạn. Với SDK IMA DAI, ứng dụng tạo ra yêu cầu phát trực tuyến cho quảng cáo và video nội dung, VOD hoặc nội dung trực tiếp. Sau đó, SDK này sẽ trả về một luồng video kết hợp, để bạn không phải quản lý việc chuyển đổi giữa quảng cáo và video nội dung trong ứng dụng của bạn.
Chọn giải pháp DAI mà bạn quan tâm
Phân phát nhóm DAI
Hướng dẫn này minh hoạ cách phát luồng phát trực tiếp hoặc VOD bằng tính năng Phân phát nhóm DAI bằng SDK IMA DAI cho tvOS bằng một trình phát video đơn giản. Nếu bạn muốn làm theo cùng với một mẫu đã hoàn tất, hãy tải ứng dụng mẫu về Phân phát pod xuống (Obj C hoặc Swift).
Tổng quan về việc phân phát nhóm IMA DAI
Việc triển khai tính năng phân phát nhóm bằng SDK IMA DAI cho tvOS bao gồm hai thành phần chính:
StreamRequest
: Một đối tượng xác định yêu cầu truyền trực tuyến đến máy chủ quảng cáo của Google. Phải được tạo bằngIMAPodStreamRequest
hoặcIMAPodVODStreamRequest
để bật tính năng phân phát nhóm. Cả hai phương pháp đều yêu cầu Mã mạng vàIMAPodStreamRequest
cũng cần một Khoá thành phần tuỳ chỉnh. Bạn không bắt buộc phải có Khoá API.IMAStreamManager
: Một đối tượng xử lý hoạt động giao tiếp giữa luồng video và SDK IMA DAI, chẳng hạn như kích hoạt ping theo dõi và chuyển tiếp các sự kiện phát trực tuyến đến nhà xuất bản.
Điều kiện tiên quyết
Trước khi bắt đầu, bạn cần có:
- Xcode 13 trở lên.
- CocoaPods (ưu tiên), Trình quản lý gói Swift hoặc bản sao đã tải xuống của SDK DAI IMA dành cho tvOS.
- Một ứng dụng tvOS đã được thiết lập bằng SDK IMA DAI để phát luồng video có quảng cáo DAI. Nếu chưa có một ứng dụng như vậy, bạn nên sử dụng DAI cho tvOS BasicExample dưới dạng một điểm xuất phát. BasicExample có cơ sở mã được tham chiếu trong hướng dẫn này. Để biết thêm thông tin về cách triển khai SDK DAI IMA, hãy xem Hướng dẫn bắt đầu nhanh.
Thiết lập các biến phân phát nhóm
Tất cả thay đổi cần thiết để phân phát pod đều được thực hiện trong ViewController.swift
trong Swift hoặc ViewController.m
trong Objective-C. Các đoạn mã trong hướng dẫn này
mặc định là sử dụng ngôn ngữ Swift. Bước đầu tiên là cập nhật các biến hằng số.
Dưới đây là các hằng số yêu cầu luồng nhóm quảng cáo cần thêm:
STREAM_URL
(Chỉ dùng cho sự kiện phát trực tiếp): URL luồng video do người cung cấp trình điều khiển tệp kê khai hoặc đối tác bên thứ ba sử dụng tính năng phân phát nhóm. Phải yêu cầu bạn phải chèn mã luồng do SDK IMA DAI cung cấp trước khi đưa ra yêu cầu. Trong trường hợp này, URL của luồng bao gồm một phần giữ chỗ,"[[STREAMID]]"
, được thay thế bằng mã luồng trước khi tạo yêu cầu.NETWORK_CODE
: Mã mạng cho tài khoản Ad Manager 360.CUSTOM_ASSET_KEY
(Chỉ dùng cho sự kiện phát trực tiếp): Khoá thành phần tuỳ chỉnh giúp xác định sự kiện phân phát nhóm trong Ad Manager 360. Tệp này có thể do trình điều khiển tệp kê khai hoặc đối tác phân phát nhóm quảng cáo bên thứ ba tạo.API_KEY
(Chỉ dùng cho sự kiện phát trực tiếp): Khoá API không bắt buộc có thể cần thiết để truy xuất mã luồng từ SDK IMA DAI.
Thay đổi phần biến của ví dụ để khớp với nội dung sau:
...
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?
...
Tạo yêu cầu phát trực tiếp hoặc yêu cầu phát trực tuyến nhóm quảng cáo VOD
Phân phát nhóm sự kiện phát trực tiếp
Sửa đổi phương thức requestStream
để tạo một yêu cầu luồng nhóm trực tiếp bằng cách
tạo thực thể 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)
}
...
Phân phát nhóm sự kiện phát trực tiếp VOD
Sửa đổi phương thức requestStream
để tạo yêu cầu truyền trực tuyến VOD bằng cách tạo bản sao 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)
}
...
Chỉnh sửa và thiết lập URL của sự kiện phát trực tiếp
Phân phát theo nhóm sự kiện phát trực tiếp
Sửa đổi các phương thức IMAAdsLoaderDelegate
, sử dụng streamManager.streamId
để
lấy mã luồng. Sau đó, hãy chèn mã luồng vào STREAM_URL
, thay thế
"[[STREAMID]]"
. Sau khi thực hiện thay đổi này, URL luồng mới có thể là
được đặt bằng 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
}
...
Phân phát nhóm sự kiện phát trực tiếp VOD
Sửa đổi các phương thức IMAAdsLoaderDelegate
, sử dụng streamManager.streamId
để lấy mã luồng. Sau đó, yêu cầu một URL luồng từ công nghệ video của bạn
đối tác (VTP) và gọi IMAStreamManager.loadThirdPartyStream()
để có IMA
tải URL của sự kiện phát trực tiếp và mọi phụ đề do TVP của bạn trả về.
...
// 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
}
Vậy là xong! Bạn hiện đang yêu cầu và hiển thị quảng cáo trong luồng phân phát nhóm với SDK IMA DAI cho tvOS. Để xem các ví dụ khác về việc sử dụng SDK IMA DAI, hãy xem các mẫu trên GitHub.