IMA SDK'ları, multimedya reklamları web sitelerinize ve uygulamalarınıza entegre etmenizi kolaylaştırır. IMA SDK'ları, VAST ile uyumlu herhangi bir reklam sunucusundan reklam isteyebilir 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 yayın isteği gönderir. 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
IMA SDK'ları, multimedya reklamları web sitelerinize ve uygulamalarınıza entegre etmenizi kolaylaştırır. IMA SDK'ları, VAST ile uyumlu herhangi bir reklam sunucusundan reklam isteyebilir 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 yayın isteği gönderir. 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.
Bu kılavuzda, canlı ve seç-izle yayın oynatma için video oynatıcıyla birlikte IMA DAI SDK'sı kullanılarak DAI kapsül yayınlama 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 örneğini indirin.
IMA DAI Kapsül Yayınlama'ya genel bakış
StreamRequest
: Google'ın reklam sunucularına bir akış isteği tanımlayan nesne. Kapsül yayınlamayı etkinleştirmek içinImaSdkFactory.createPodStreamRequest()
veyaImaSdkFactory.createPodVodStreamRequest()
kullanılarak oluşturulmalıdır. Bu yöntemler için ağ kodu gerekir.createPodStreamRequest
için ayrıca özel öğe anahtarı ve isteğe bağlı API anahtarı gerekir. Her ikisi de diğer isteğe bağlı parametreleri içerir.StreamManager
: 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
DAI reklamları içeren video akışlarını oynatmak için IMA DAI SDK'sı ile önceden ayarlanmış bir Android uygulaması. Böyle bir uygulamanız yoksa başlangıç noktası olarak Android DAI BasicExample'u kullanmanızı öneririz. BasicExample, bu kılavuzda referans verilen kod tabanını içerir.
IMA DAI'nin çalışması için uygulamanızın
VideoStreamPlayerCallback.onUserTextReceived()
kullanarak ID3 etkinlikleri göndermesi önemlidir. Bu tam hizmet DAI kod snippet'i örneğine bakın.
Kapsül yayınlama değişkenlerinizi ayarlama
Kapsül yayınlama için gereken tüm değişiklikler SampleAdsWrapper.java dosyasında yapılır. İlk adım, sabit değişkenleri güncellemektir.
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: Kapsül yayınlama özelliğini kullanan manifest düzenleyiciniz veya üçüncü taraf iş ortağınız tarafından sağlanan video akışı URL'si. İstekte bulunmadan önce IMA DAI SDK'sı tarafından sağlanan akış kimliğini girmeniz gerekir. Bu durumda, yayın URL'sinde istekte bulunmadan önce yayın kimliğiyle değiştirilen bir yer tutucu ("[[STREAMID]]"
) bulunur.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 bir yayın kimliği almak için gerekli olabilecek isteğe bağlı bir API anahtarı.
Android DAI BasicExample, çeşitli farklı akış türlerini oynatmak için tasarlanmıştır ancak kapsül yayınlama için yalnızca tek bir akışı oynatacak şekilde ayarlanmıştır. Örneğin değişken bölümünü aşağıdakiyle eşleşecek şekilde değiştirin:
/** This class adds ad-serving support to Sample HlsVideoPlayer */
public class SampleAdsWrapper
implements AdEvent.AdEventListener, AdErrorEvent.AdErrorListener, AdsLoader.AdsLoadedListener {
// Podserving Stream Constants.
private static final String STREAM_URL =
"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]]";
private static final String NETWORK_CODE = "51636543";
private static final String CUSTOM_ASSET_KEY = "google-sample";
private static final String API_KEY = "";
private static final String PLAYER_TYPE = "DAISamplePlayer";
/** Log interface, so we can output the log commands to the UI or similar. */
public interface Logger {
...
Kapsül yayınlamayı etkinleştirmek için canlı veya VOD kapsül yayın isteği oluşturma
Canlı yayın kapsülü yayınlama
Çeşitli akış türleri oluşturmak için kullanılan buildStreamRequest()
yöntemini kaldırın. Ardından, canlı kapsül yayınlama reklam isteği oluşturmak için requestAndPlayAds()
değerini ImaSdkFactory.createPodStreamRequest()
olarak değiştirin. Son olarak, AdsLoader.requestStream()
kullanarak aktarma isteğinde bulunun.
public void requestAndPlayAds() {
StreamRequest request =
sdkFactory.createPodStreamRequest(NETWORK_CODE, CUSTOM_ASSET_KEY, API_KEY);
request.setFormat(StreamFormat.HLS);
adsLoader.addAdErrorListener(this);
adsLoader.addAdsLoadedListener(this);
adsLoader.requestStream(request);
}
Seç-izle video akışı kapsülü yayınlama
Çeşitli akış türleri oluşturmak için kullanılan buildStreamRequest()
yöntemini kaldırın. Ardından, VOD Pod Yayınlama reklam isteği oluşturmak için requestAndPlayAds()
değerini ImaSdkFactory.createPodVodStreamRequest()
olarak değiştirin. Son olarak, AdsLoader.requestStream()
kullanarak aktarma isteğinde bulunun.
public void requestAndPlayAds() {
StreamRequest request =
sdkFactory.createPodVodStreamRequest(NETWORK_CODE);
request.setFormat(StreamFormat.HLS);
adsLoader.addAdErrorListener(this);
adsLoader.addAdsLoadedListener(this);
adsLoader.requestStream(request);
}
Akış URL'sini düzenleme ve ayarlama
Canlı yayın kapsülü yayınlama
Akış kimliğini almak için StreamManager.getStreamId()
numaralı telefonu arayın. Ardından bu, "[[STREAMID]]"
yerine STEAM_URL
içine yerleştirilmelidir. Bu değişiklik yapıldıktan sonra yeni yayın URL'si videoPlayer.setStreamUrl()
kullanılarak ayarlanabilir.
@Override
public void onAdsManagerLoaded(AdsManagerLoadedEvent event) {
streamManager = event.getStreamManager();
streamManager.addAdErrorListener(this);
streamManager.addAdEventListener(this);
// To enable streams
String streamID = streamManager.getStreamId();
String streamUrl = STREAM_URL.replace("[[STREAMID]]", streamID);
streamManager.init();
videoPlayer.setStreamUrl(streamUrl);
videoPlayer.play();
}
Seç-izle video akışı kapsülü yayınlama
Akış kimliğini almak için StreamManager.getStreamId()
numaralı telefonu arayın. Ardından, video teknolojisi iş ortağınızdan (VTP) bir yayın URL'si isteyin. Ardından, IMA'nın akış URL'sini ve TVP'niz tarafından döndürülen tüm altyazılar yüklemesi için StreamManager.loadThirdPartyStream()
işlevini çağırın.
@Override
public void onAdsManagerLoaded(AdsManagerLoadedEvent event) {
streamManager = event.getStreamManager();
streamManager.addAdErrorListener(this);
streamManager.addAdEventListener(this);
// To enable streams
String streamID = streamManager.getStreamId();
// 'vtpInterface' is a place holder for your own video technology partner
// (VTP) API calls.
String streamUrl = vtpInterface.requestStreamURL(streamID);
streamManager.init();
// Pass any subtitles returned by your VTP in this step as well.
streamManager.loadThirdPartyStream(streamUrl, subtitles);
}
Kapsül sunumu etkinleştirildiğinde IMA, VideoStreamPlayer.loadUrl()
'e çağrı yapmaz. Bu nedenle, videoPlayer.setStreamUrl()
ve videoPlayer.play()
'ye yapılan tüm çağrıları kaldırabilirsiniz.
IMA DAI öğelerini temizleme
IMA DAI SDK'sını kullanarak bir Pod Yayınlama akışında reklam isteğinde bulunma ve görüntüleme işlemlerini başarıyla tamamladığınızda, Pod Yayınlama oturumu tamamlandıktan sonra tüm kaynakları temizlemenizi öneririz. Akış oynatmayı durdurmak, tüm reklam izlemeyi durdurmak ve yüklü tüm akış öğelerini serbest bırakmak için StreamManager.destroy()
çağrısı yapın.
Android SDK'sının kullanıldığı diğer örnekleri görmek için GitHub'daki örneklere göz atın.