Atlanan bir reklam arasına geri dönme
Koleksiyonlar ile düzeninizi koruyun
İçeriği tercihlerinize göre kaydedin ve kategorilere ayırın.
Video yayıncısı olarak, izleyicilerinizin şunları yapmasını engellemek isteyebilirsiniz:
videonun ortasında gösterilen reklamlara
geçmenizi sağlar. Kullanıcı reklam arasını geçmek için arama yaptığında
bunları reklam arasının başına döndürebilir ve daha sonra
bu reklam arası tamamlandıktan sonra kullanıcıları istediği konuma götürebilir. Bu
yeni bir özellik
olduğunu göreceksiniz.
Örnek olarak aşağıdaki şemaya bakın. İzleyiciniz bir video izliyorsa
ve 5 dakikadan 15. dakikaya geçmeye karar veriyor.
Ancak 10. dakikada, istediğiniz bir reklam arası var
izleyebilmeleri için şu şekilde çalışır:

Bu reklam arasını göstermek için aşağıdaki adımları uygulayın:
- Kullanıcının izlenmemiş bir reklam arasını geçen bir arama yapıp yapmadığını kontrol edin.
Gerekirse bunları reklam arasına geri döndürün.
- Reklam arası tamamlandıktan sonra reklamları orijinal konumuna geri döndürün.
Diyagram biçiminde bu, aşağıdaki gibi görünür:

Bu iş akışını IMA DAI SDK'sında
AdvancedExample (Gelişmiş Örnek).
Sarma işleminin, reklam arasını izlenmeden bırakmasını önleme
Kullanıcının izlenmemiş bir reklam arasından geçen bir arama yapıp yapmadığını kontrol edin.
Gerekirse bunları reklam arasına geri döndürün.
Android SDK'da sarma işlemini tespit etmek için PlayerControl
nesnesini kullanın.
Kullanıcı arama yaptığında onSeek()
yöntemini tetikleyin
SampleHlsVideoPlayerCallback
, SampleAdsWrapper
tarafından uygulandı.
Bu yöntem (aşağıda anlatılmıştır), kullanıcının etiketinden önce işaret noktasını kontrol eder
zannediyor. Oynatılmazsa söz konusu reklam arasının başına gidin
tercih ettikleri ilk arama noktası yerine o istedikleri zaman
snapBackTime
bölgesinde puan.
@Override
public void onSeek(int timeMillis) {
double timeToSeek = timeMillis;
if (streamManager != null) {
CuePoint cuePoint =
streamManager.getPreviousCuePointForStreamTime(timeMillis / 1000);
if (cuePoint != null && !cuePoint.isPlayed()) {
snapBackTime = timeToSeek / 1000.0; // Update snapback time.
// Missed cue point, so snap back to the beginning of cue point.
timeToSeek = cuePoint.getStartTime() * 1000;
videoPlayer.seek(Math.round(timeToSeek));
videoPlayer.setCanSeek(false);
return;
}
}
videoPlayer.seek(Math.round(timeToSeek));
}
Kullanıcıyı asıl hedefine geri götürün
Artık bir onAdBreakEnded
etkinliği aldığınızda snapBackTime
olup olmadığını kontrol edin.
ayarlandı. Öyleyse kullanıcıyı akışta o noktaya götürün çünkü reklam
nedeniyle reklam kesintisi yaşıyorlardı:
@Override
public void onAdBreakEnded() {
// Re-enable player controls.
videoPlayer.setCanSeek(true);
videoPlayer.enableControls(true);
if (snapBackTime > 0) {
videoPlayer.seek(Math.round(snapBackTime * 1000));
}
snapBackTime = 0;
}
Aksi belirtilmediği sürece bu sayfanın içeriği Creative Commons Atıf 4.0 Lisansı altında ve kod örnekleri Apache 2.0 Lisansı altında lisanslanmıştır. Ayrıntılı bilgi için Google Developers Site Politikaları'na göz atın. Java, Oracle ve/veya satış ortaklarının tescilli ticari markasıdır.
Son güncelleme tarihi: 2025-08-21 UTC.
[null,null,["Son güncelleme tarihi: 2025-08-21 UTC."],[[["\u003cp\u003eSnapback prevents viewers from skipping mid-roll ads by redirecting them to the ad and then returning them to their intended location.\u003c/p\u003e\n"],["\u003cp\u003eThis feature ensures ad completion before viewers proceed to the content they seek.\u003c/p\u003e\n"],["\u003cp\u003eSnapback functionality is implemented through the IMA DAI SDK, as demonstrated in the AdvancedExample.\u003c/p\u003e\n"],["\u003cp\u003eThe process involves identifying unwatched ad breaks and redirecting the viewer and then resuming playback at the target point after the ad.\u003c/p\u003e\n"]]],[],null,["# Return to a skipped ad break\n\nAs a video publisher, you may want to prevent your viewers from\nseeking past your mid-roll ads. When a user seeks past an ad break,\nyou can take them back to the start of that ad break, and then return\nthem to their seek location after that ad break has completed. This\nfeature is called \"snapback.\"\n\nAs an example, see the diagram below. Your viewer is watching a video,\nand decides to seek from the 5-minute mark to the 15-minute mark.\nThere is, however, an ad break at the 10-minute mark that you want\nthem to watch before they can watch the content after it:\n\nIn order to show this ad break, take the following steps:\n\n1. Check if the user ran a seek that jumped past an unwatched ad break, and if so, take them back to the ad break.\n2. After the ad break completes, return them to their original seek.\n\nIn diagram form, that looks like this:\n\nHere's how to implement this workflow in the IMA DAI SDK, as done in\n[AdvancedExample](//github.com/googleads/googleads-ima-android-dai).\n\nPrevent a seek from leaving an ad break unwatched\n-------------------------------------------------\n\nCheck if the user has run a seek that went past an unwatched ad break,\nand if so, take them back to the ad break.\nIn the Android SDK, use the `PlayerControl` object to detect seeking.\nWhen the user seeks, trigger the `onSeek()` method of the\n`SampleHlsVideoPlayerCallback` implemented by `SampleAdsWrapper`.\nThat method (presented below) checks the cue point prior to the user's\nseek time. If it is unplayed, seek to the beginning of that ad break\ninstead of their initial desired seek point, and save that desired seek\npoint in `snapBackTime`. \n\n @Override\n public void onSeek(int timeMillis) {\n double timeToSeek = timeMillis;\n if (streamManager != null) {\n CuePoint cuePoint =\n streamManager.getPreviousCuePointForStreamTime(timeMillis / 1000);\n if (cuePoint != null && !cuePoint.isPlayed()) {\n snapBackTime = timeToSeek / 1000.0; // Update snapback time.\n // Missed cue point, so snap back to the beginning of cue point.\n timeToSeek = cuePoint.getStartTime() * 1000;\n videoPlayer.seek(Math.round(timeToSeek));\n videoPlayer.setCanSeek(false);\n return;\n }\n }\n videoPlayer.seek(Math.round(timeToSeek));\n }\n\nPut the user back to their original seek\n----------------------------------------\n\nNow when you get an `onAdBreakEnded` event, check to see if `snapBackTime`\nis set. If so, take the user to that point in the stream, because the ad\nbreak they just watched was the result of snapback: \n\n @Override\n public void onAdBreakEnded() {\n // Re-enable player controls.\n videoPlayer.setCanSeek(true);\n videoPlayer.enableControls(true);\n if (snapBackTime \u003e 0) {\n videoPlayer.seek(Math.round(snapBackTime * 1000));\n }\n snapBackTime = 0;\n }"]]