IMA SDK'ları, multimedya reklamları web sitelerinize ve uygulamalarınıza entegre etmenizi kolaylaştırır. IMA SDK'ları herhangi birinden reklam iste VAST uyumlu reklam sunucusu oluşturup uygulamalarınızda reklam oynatmayı yönetin. IMA DAI SDK'larıyla, uygulamalar reklam ve içerik videosu (VOD veya canlı içerik) için akış isteği. Ardından SDK, birleştirilmiş bir video akışı döndürür. Böylece uygulamanızda reklam ve içerik videosu arasında geçiş yapmanız gerekmez.
İlgilendiğiniz DAI çözümünü seçin
Kapsül yayınlama DAI
Bu kılavuzda, DAI Kapsül Yayınlama canlı veya VOD yayınının basit bir video oynatıcı ile tvOS için IMA DAI SDK'sı. Tamamlanmış bir örnekle birlikte bu adımları uygulamak istiyorsanız Pod Yayınlama örnek uygulamasını (Obj C veya Swift) indirin.
IMA DAI Kapsül Yayınlama'ya genel bakış
tvOS için IMA DAI SDK'sını kullanarak kapsül yayınlama özelliğini uygulamak iki ana bileşenden oluşur:
StreamRequest
: Google'ın reklam sunucularına bir akış isteği tanımlayan nesne. Kapsül yayınlamayı etkinleştirmek içinIMAPodStreamRequest
veyaIMAPodVODStreamRequest
kullanılarak oluşturulmalıdır. Her iki yöntem de Ağ Kodu veIMAPodStreamRequest
için Özel Öğe Anahtarı da gereklidir. API Anahtarı isteğe bağlıdır.IMAStreamManager
: Video akışı ile IMA DAI SDK'sı arasındaki iletişimi (ör. izleme ping'lerini gönderme ve yayın akışı etkinliklerini yayıncıya yönlendirme) 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 edilir), Swift Package Manager veya bir dokümanının indirilmiş kopyasını tvOS için IMA DAI SDK'sı.
- DAI reklamları içeren video akışlarını oynatmak için IMA DAI SDK'sı ile önceden ayarlanmış bir tvOS uygulaması. Böyle bir uygulamanız yoksa tvOS DAI Temel Örnek olarak bir başlangıç noktası olabilir. BasicExample, bu adımda referans verilen kod tabanını rehberini inceleyin. IMA DAI SDK'sını uygulama hakkında daha fazla bilgi için Hızlı başlangıç kılavuzuna bakın.
Kapsül yayınlama değişkenlerinizi ayarlama
Kapsül yayınlama için gereken tüm değişiklikler Swift'te ViewController.swift
veya Objective-C'te ViewController.m
içinde yapılır. Bu kılavuzda yer alan snippet'ler varsayılan olarak Swift dilini kullanır. İlk adım,
sabit değişkenler.
Eklenecek reklam kapsülü veri akışı istek sabitleri aşağıda verilmiştir:
STREAM_URL
(Yalnızca canlı yayınlar için kullanılır): Manifest düzenleyiciniz veya kapsül yayınlama özelliğini kullanan üçüncü taraf iş ortağınız tarafından sağlanan video akış URL'si. Uygulama aktarmadan önce, IMA DAI SDK'sı tarafından sağlanan akış kimliğini istekte bulunabilirsiniz. Bu durumda, yayın URL'sinde bir yer tutucu ("[[STREAMID]]"
) bulunur. Bu yer tutucu, istek gönderilmeden önce yayın 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'ta kapsül yayınlama 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'sından akış kimliğini almak için gereklidir.
Ö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 =
"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?
...
Canlı veya VOD kapsülü akış isteği oluşturun
Canlı yayın kapsülü yayınlama
Canlı kapsül akışı isteği oluşturmak için requestStream
yöntemini şu tarihe kadar değiştirin:
IMAPodStreamRequest
örneği oluşturuluyor.
...
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ü yayınlama
IMAPodVODStreamRequest
sınıfını örneklendirerek VOD kapsülü akış isteği oluşturmak için requestStream
yöntemini 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
Aşağıdaki işlemler için streamManager.streamId
kullanarak IMAAdsLoaderDelegate
yöntemlerini değiştirin:
akış kimliğini alın. Ardından akış kimliğini STREAM_URL
bölümüne girin.
"[[STREAMID]]"
. Bu değişiklik yapıldıktan sonra yeni akış URL'si
videoDisplay.loadStream()
kullanılarak ayarlanır.
...
// 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ü yayınlama
Akış kimliğini almak için streamManager.streamId
kullanarak IMAAdsLoaderDelegate
yöntemlerini değiştirin. Ardından, video teknolojinizden bir akış URL'si isteyin.
iş ortağı (VTP) açın ve IMA'yı etkinleştirmek için IMAStreamManager.loadThirdPartyStream()
adlı iş ortağını arayın
yayın URL'sini ve TVP'niz tarafından döndürülen altyazıları
yükleyin.
...
// 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
}
İşte bu kadar. Artık tvOS için IMA DAI SDK'sını kullanarak kapsül yayınlama akışında reklam isteğinde bulunuyor ve reklamları görüntülüyorsunuz. IMA DAI SDK'sının kullanıldığı diğer örnekleri görmek için GitHub'daki örneklere göz atın.