IMA SDK'ları, multimedya reklamlarını 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. SDK, daha sonra Böylece, reklam ve içerik videosu arasında geçiş yönetmek zorunda kalmazsınız. bir kontrol listesidir.
İlgilendiğiniz DAI çözümünü seçme
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ıyla iOS için IMA DAI SDK'sı oluşturabilirsiniz. Proje yönetimi planınızla ilgili tamamlanmış bir örnekle birlikte, kapsül sunma örneği.
IMA DAI Kapsül Yayınlamaya genel bakış
iOS için IMA DAI SDK'sı kullanarak kapsül yayınlamanın uygulanması iki temel kavramdan ibarettir: bileşenler:
StreamRequest
: Şu akış isteğini tanımlayan bir nesne: Google'ın reklam sunucuları. Aşağıdakilerden biri kullanılarak oluşturulmalıdır:IMAPodStreamRequest
veyaIMAPodVODStreamRequest
kullanarak kapsül sunmayı etkinleştirin. Her iki yöntem de Ağ Kodu veIMAPodStreamRequest
için Özel Öğe Anahtarı da gereklidir. API Anahtarı isteğe bağlıdır.IMAStreamManager
: Şu öğeler arasındaki iletişimi işleyen bir nesne: izleme ping'lerini tetikleme ve IMA DAI SDK'sını kullanma gibi, Akış etkinliklerini yayıncıya yönlendirme.
Ö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 indirilmiş kopyasını iOS için IMA DAI SDK'sı.
- Video akışlarını DAI reklamları. Böyle bir uygulamanız yoksa iOS DAI Temel Örnek: 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ılavuzu.
Kapsül sunma değişkenlerinizi ayarlama
Kapsül yayınlama için gereken tüm değişiklikler ViewController.swift içinde Swift veya ViewController.m ile kullanılabilir. Bu kılavuzdaki snippet'ler varsayılan olarak Swift dilini kullanır. İlk adım, sabit değişkenler.
Eklenecek reklam kapsülü akış isteği sabit değerleri aşağıda verilmiştir:
STREAM_URL
(Yalnızca canlı yayınlar için kullanılır): tarafından sağlanan video akışı URL'si manifest düzenleyiciniz veya üçüncü taraf iş ortağınız aracılığıyla hazırlayın. Uygulama aktarmadan önce IMA DAI SDK'sı tarafından sağlanan akış kimliğini girmenizi gerektirir: istekte bulunabilirsiniz. Bu durumda, akış URL'si bir yer tutucu içerir."[[STREAMID]]"
(bu veri, akış kimliğiyle değiştirilir). isteği gönderin.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ımlar. Bu, şunlar tarafından oluşturulabilir: manifest düzenleyiciniz veya üçüncü taraf kapsül sunma iş ortağınız.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şturma
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
VOD Kapsül Akışı isteği oluşturmak için requestStream
yöntemini şu tarihe kadar değiştirin:
IMAPodVODStreamRequest
ö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 = 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
Aşağıdaki işlemler için streamManager.streamId
kullanarak IMAAdsLoaderDelegate
yöntemlerini değiştirin:
akış kimliğini alın. Ardından, video teknolojinizden bir akış URL'si isteyin.
iş ortağı (VTP) ile ilişkilidir. Ardından IMA'yı etkinleştirmek için IMAStreamManager.loadThirdPartyStream()
çağırı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 aşağıdakilerle kapsül yayınlama akışında reklam istiyor ve gösteriyorsunuz: iOS için IMA DAI SDK'sı. Kullanılan IMA DAI SDK'sının diğer örneklerini görmek için GitHub'daki örneklere bakın.