IMA SDK'ları, multimedya reklamları web sitelerinize ve uygulamalarınıza entegre etmeyi kolaylaştırır. IMA SDK'ları, herhangi bir VAST uyumlu reklam sunucusundan reklam isteğinde bulunabilir ve uygulamalarınızda reklam oynatmayı yönetebilir. IMA DAI SDK'ları ile uygulamalar, reklam ve içerik videosu (VOD veya canlı içerik) için bir akış isteğinde bulunur. SDK daha sonra birleşik bir video akışı döndürür. Böylece uygulamanızda reklam ve içerik videosu arasında geçiş yapmayı yönetmeniz gerekmez.
İlgilendiğiniz DAI çözümünü seçin
Kapsül yayınlama DAI
Bu kılavuzda, bir video oynatıcıyla tvOS için IMA DAI SDK'yı kullanarak DAI kapsül yayınlama canlı veya VOD akışının nasıl oynatılacağı gösterilmektedir. Tamamlanmış bir örnek entegrasyonu görüntülemek veya takip etmek için kapsül yayınlama örnek uygulamasını (Obj C veya Swift) indirin.
IMA DAI Kapsül Yayınlamaya Genel Bakış
tvOS için IMA DAI SDK'yı kullanarak kapsül yayınlamayı uygulama işlemi iki ana bileşenden oluşur:
StreamRequest
: Google'ın reklam sunucularına yönelik bir yayın isteğini tanımlayan nesne. Kapsül yayınlamanın etkinleştirilmesi içinIMAPodStreamRequest
veyaIMAPodVODStreamRequest
kullanılarak oluşturulmalıdır. Her iki yöntemde de Ağ Kodu gerekir.IMAPodStreamRequest
için ayrıca Özel Öğenin Anahtarı da gerekir. API anahtarı isteğe bağlıdır.IMAStreamManager
: İzleme ping'lerinin tetiklenmesi ve akış etkinliklerinin yayıncıya iletilmesi gibi video akışı ile IMA DAI SDK arasındaki iletişimi yöneten bir nesne.
Ön koşullar
Başlamadan önce aşağıdakilere ihtiyacınız vardır:
- Xcode 13 veya sonraki sürümler.
- CocoaPods (tercih edilen), Swift Package Manager veya tvOS için IMA DAI SDK'nın indirilmiş bir kopyası.
- DAI reklamlarıyla video akışlarını oynatmak için IMA DAI SDK'sı ile önceden ayarlanmış bir tvOS uygulaması. Böyle bir uygulamanız yoksa başlangıç noktası olarak tvOS DAI BasicExample uygulamasını kullanmanızı öneririz. BasicExample, bu kılavuzda referans verilen kod tabanına sahiptir. IMA DAI SDK'sını uygulama hakkında daha fazla bilgi için Hızlı başlangıç kılavuzu'na bakın.
Kapsül yayınlama değişkenlerinizi ayarlama
Pod Serving için gereken tüm değişiklikler ViewController.swift
(Swift) veya ViewController.m
(Objective-C) içinde yapılır. Bu kılavuzdaki snippet'ler varsayılan olarak Swift dilini kullanır. İlk adım, sabit değişkenleri güncellemek.
Eklenecek reklam kapsülü akışı isteği sabitleri şunlardır:
STREAM_URL
(Yalnızca canlı yayınlar için kullanılır): Kapsül yayınlama kullanan manifest manipülatörünüz veya üçüncü taraf iş ortağınız tarafından sağlanan video akışı URL'si. İstek göndermeden önce IMA DAI SDK tarafından sağlanan akış kimliğini girmenizi gerektirmelidir. Bu durumda, akış URL'si bir yer tutucu içerir."[[STREAMID]]"
, istekte bulunmadan önce akış kimliğiyle değiştirilir.NETWORK_CODE
: Ad Manager 360 hesabınızın ağ kodu.CUSTOM_ASSET_KEY
(Yalnızca canlı yayınlar için kullanılır): Ad Manager 360'taki Pod Serving etkinliğinizi tanımlayan özel öğe anahtarı. Bu, manifest düzenleyiciniz veya üçüncü taraf kapsül yayınlama iş ortağınız tarafından oluşturulabilir.API_KEY
(Yalnızca canlı yayınlar için kullanılır): IMA DAI SDK'dan akış kimliği almak için gerekli olabilecek isteğe bağlı bir API anahtarı.
Örneğin değişken bölümünü aşağıdakiyle eşleşecek şekilde değiştirin:
...
class ViewController:
UIViewController,
IMAAdsLoaderDelegate,
IMAStreamManagerDelegate,
AVPlayerViewControllerDelegate
{
static let streamUrl = ""
static let networkCode = ""
static let customAssetKey = ""
static let APIKey = ""
static let backupStreamURLString = ""
var adsLoader: IMAAdsLoader?
...
Canlı veya VOD kapsülü akışı isteği oluşturma
Canlı yayın kapsülü yayınlama
requestStream
yöntemini, IMAPodStreamRequest
öğesini oluşturarak canlı pod akışı isteği oluşturacak şekilde değiştirin.
...
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 akışı kapsülü sunma
requestStream
yöntemini, IMAPodVODStreamRequest
öğesini oluşturarak VOD pod akışı isteği oluşturacak şekilde değiştirin.
...
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)
}
...
Akış URL'sini düzenleme ve ayarlama
Canlı yayın kapsülü yayınlama
Akış kimliğini almak için streamManager.streamId
yöntemlerini IMAAdsLoaderDelegate
kullanarak değiştirin. Ardından, akış kimliğini STREAM_URL
içine "[[STREAMID]]"
yerine yerleştirin. Bu değişiklik yapıldıktan sonra yeni yayın URL'si videoDisplay.loadStream()
kullanılarak ayarlanabilir.
...
// 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 akışı kapsülü sunma
Akış kimliğini almak için streamManager.streamId
yöntemlerini IMAAdsLoaderDelegate
kullanarak değiştirin. Ardından, video teknolojisi iş ortağınızdan (VTP) bir akış URL'si isteyin ve IMAStreamManager.loadThirdPartyStream()
numaralı telefonu arayarak IMA'nın akış URL'sini ve TVP'niz tarafından döndürülen tüm altyazıları yüklemesini sağlayın.
...
// 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 öğelerini temizleme
IMA DAI SDK ile bir pod yayını akışında reklam isteme ve görüntüleme işlemlerini başarıyla tamamladığınızda, pod yayını oturumu tamamlandıktan sonra tüm kaynakları temizlemenizi öneririz. Akış oynatmayı durdurmak, tüm reklam izlemeyi durdurmak ve yüklenen tüm akış öğelerini serbest bırakmak için IMAStreamManager.destroy()
işlevini çağırın.
tvOS SDK'nın kullanıldığı diğer örnekleri görmek için GitHub'daki örneklere bakın.