Com os SDKs do IMA, é fácil integrar anúncios multimídia aos seus sites e apps. Os SDKs do IMA podem solicitar anúncios de qualquer de anúncios compatíveis com VAST e gerencie a reprodução de anúncios nos seus apps. Com os SDKs de DAI do IMA, os apps criam uma solicitação de streaming para anúncio e conteúdo de vídeo, seja VOD ou conteúdo ao vivo. Em seguida, o SDK retorna uma stream de vídeo combinado, para que você não precise alternar entre anúncios e conteúdo em vídeo no seu app.
Selecione a solução de DAI do seu interesse
DAI de veiculação de conjuntos
Este guia demonstra como reproduzir um stream de disponibilização de pod DAI ao vivo ou VOD, usando o SDK de DAI do IMA para iOS com um player de vídeo simples. Se quiser seguir junto com uma amostra completa, faça o download exemplo de veiculação de pod.
Visão geral da veiculação de conjunto DAI do IMA
A implementação da veiculação de pods usando o SDK de DAI do IMA para iOS envolve duas etapas componentes:
StreamRequest
: um objeto que define uma solicitação de stream para servidores de publicidade do Google. Precisam ser criados usandoIMAPodStreamRequest
ouIMAPodVODStreamRequest
para ativar a disponibilização de pods. Os dois métodos exigem um código de rede eIMAPodStreamRequest
também precisa de uma chave de recurso personalizada. Uma chave de API é opcional.IMAStreamManager
: um objeto que gerencia a comunicação entre o stream de vídeo e o SDK de DAI do IMA, como disparar pings de rastreamento e encaminhando eventos de stream para o editor.
Pré-requisitos
Antes de começar, os seguintes itens são necessários:
- Xcode 13 ou mais recente.
- CocoaPods (preferencial), Gerenciador de pacotes do Swift ou baixada da SDK de DAI do IMA para iOS.
- Um app iOS já configurado com o SDK de DAI do IMA para reproduzir streams de vídeo da DAI. Se você ainda não possui esse aplicativo, recomendamos o uso do DAI do iOS BasicExample como um ponto de partida. O BasicExample tem a base de código referenciada neste guia. Para mais informações sobre como implementar o SDK de DAI do IMA, consulte a Guia de início rápido.
Configurar as variáveis de disponibilização de pods
Todas as alterações necessárias para a disponibilização de pods são feitas em ViewController.swift no swift ou ViewController.m em Objective-C. Os snippets deste guia o padrão é usar a linguagem Swift. A primeira etapa é atualizar variáveis constantes.
Estas são as constantes de solicitação de stream do conjunto de anúncios que serão adicionadas:
STREAM_URL
(usado apenas para transmissões ao vivo): é o URL de stream de vídeo fornecido pelo o manipulador de manifesto ou um parceiro terceirizado usando a veiculação de pods. Ele deveria exigem que você insira o código de stream fornecido pelo SDK de DAI do IMA antes de fazer uma solicitação. Nesse caso, o URL de stream inclui um marcador,"[[STREAMID]]"
, que é substituído pelo ID de stream antes de fazer uma solicitação.NETWORK_CODE
: o código da rede da conta do Ad Manager 360.CUSTOM_ASSET_KEY
(Usada apenas para transmissões ao vivo): a chave de recurso personalizada que identifica seu evento de veiculação de conjunto no Ad Manager 360. Ela pode ser criada seu manipulador de manifesto ou um parceiro terceirizado de veiculação de pod.API_KEY
(usada apenas para transmissões ao vivo): é uma chave de API opcional que pode ser necessário para recuperar um ID de stream do SDK de DAI do IMA.
Altere a seção de variável do exemplo para corresponder ao seguinte:
...
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?
...
Criar uma solicitação de transmissão de conjunto ao vivo ou de VOD
Veiculação de conjunto de transmissão ao vivo
Modifique o método requestStream
para criar uma solicitação de stream de pod ao vivo
instanciando 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)
}
...
Veiculação de conjunto de stream de VOD
Modifique o método requestStream
para criar uma solicitação de stream do pod de VOD
instanciando 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)
}
...
Editar e definir o URL da transmissão
Veiculação de conjunto de transmissão ao vivo
Modifique os métodos IMAAdsLoaderDelegate
, usando streamManager.streamId
para
receber o ID do fluxo. Em seguida, insira o ID do stream no STREAM_URL
, substituindo
"[[STREAMID]]"
. Depois que essa alteração for feita, o novo URL de transmissão poderá ser
definido usando 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
}
...
Veiculação de conjunto de stream de VOD
Modifique os métodos IMAAdsLoaderDelegate
, usando streamManager.streamId
para
receber o ID do fluxo. Em seguida, solicite um URL de stream da sua tecnologia de vídeo
parceiro (VTP). Em seguida, chame IMAStreamManager.loadThirdPartyStream()
para que o IMA
carregue o URL da transmissão e as legendas retornadas pelo 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
}
Pronto! Agora você está solicitando e exibindo anúncios em um fluxo de veiculação de conjunto com o SDK de DAI do IMA para iOS. Para ver outros exemplos do SDK de DAI do IMA em uso, consulte as amostras no GitHub.