ভিডিও প্রকাশক হিসেবে, আপনি হয়ত চাইবেন যে দর্শকরা যেন আপনার মিড-রোল বিজ্ঞাপন এড়িয়ে না যান। কোনও ব্যবহারকারী বিজ্ঞাপন বিরতি পেরিয়ে গেলে, আপনি তাকে সেই বিজ্ঞাপন বিরতির শুরুতে ফিরিয়ে নিয়ে যেতে পারেন এবং বিজ্ঞাপন বিরতি শেষ হওয়ার পরে তাকে আবার তার সিক লোকেশনে ফিরিয়ে নিয়ে যেতে পারেন। এই ফিচারকে "স্ন্যাপব্যাক" বলা হয়।
উদাহরণ হিসেবে, নিচের ডায়াগ্রামটি দেখুন। আপনার দর্শক একটি ভিডিও দেখছেন, এবং ৫-মিনিট মার্ক থেকে ১৫-মিনিট মার্ক পর্যন্ত ভিডিওটি টেনে নিয়ে যাওয়ার সিদ্ধান্ত নেন। তবে, ১০ মিনিটের মাথায় একটি বিজ্ঞাপন বিরতি আছে এবং আপনি চান যে দর্শকরা এর পরের কন্টেন্ট দেখার আগে এই বিজ্ঞাপনটি দেখুন:

এই বিজ্ঞাপন বিরতি দেখাতে, নিম্নলিখিত ধাপগুলি অনুসরণ করুন:
- ব্যবহারকারী ভিডিওর কোনও অংশ এড়িয়ে গিয়েছেন কিনা তা চেক করুন, যার ফলে তিনি না দেখা বিজ্ঞাপন বিরতি পেরিয়ে গেছেন, এবং যদি তাই হয়, তাহলে তাকে বিজ্ঞাপন বিরতিতে ফিরিয়ে আনুন।
- বিজ্ঞাপন বিরতি শেষ হওয়ার পরে, তাদের আসল সিকে ফিরিয়ে আনুন।
ডায়াগ্রামের আকারে এটি দেখতে এইরকম হয়:

IMA DAI SDK-তে এই ওয়ার্কফ্লো কীভাবে প্রয়োগ করবেন তা এখানে দেওয়া হল, যেমনটি AdvancedExample-এ করা হয়েছে।
বিজ্ঞাপন বিরতি না দেখে যাতে কেউ ভিডিওর অন্য অংশে চলে যেতে না পারেন তা আটকানো
ব্যবহারকারী এমন কোনও সিক রান করেছেন কিনা তা চেক করুন যা না দেখা বিজ্ঞাপন বিরতিকে পেরিয়ে গেছে,
এবং যদি তাই হয়, তাহলে তাকে বিজ্ঞাপন বিরতিতে ফিরিয়ে নিয়ে যান।
Android SDK-তে, সিকিং শনাক্ত করতে PlayerControl অবজেক্ট ব্যবহার করুন।
ব্যবহারকারী সিক করলে, SampleAdsWrapper দ্বারা প্রয়োগ করা SampleHlsVideoPlayerCallback-এর onSeek() পদ্ধতি ট্রিগার করুন।
সেই পদ্ধতি (নিচে দেখানো হয়েছে) ব্যবহারকারীর সিক টাইমের আগে কিউ পয়েন্ট চেক করে। এটি চালানো না হলে, ব্যবহারকারীর প্রাথমিক পছন্দসই সিক পয়েন্টের পরিবর্তে
সেই বিজ্ঞাপন বিরতির শুরুতে সিক করুন এবং সেই পছন্দসই সিক পয়েন্ট
snapBackTime-এ সেভ করুন।
@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));
}
ব্যবহারকারীকে তার আসল সিক-এ ফিরিয়ে নিয়ে যান
এখন আপনি onAdBreakEnded ইভেন্ট পেলে, snapBackTime সেট করা আছে কিনা
তা চেক করে দেখুন। যদি তাই হয়, তাহলে ব্যবহারকারীকে স্ট্রিমের সেই পয়েন্টে নিয়ে যান, কারণ তিনি যে বিজ্ঞাপন বিরতি দেখেছেন তা স্ন্যাপব্যাকের ফলাফল:
@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;
}