اسنپ ​​بک

به‌عنوان یک ناشر ویدیو، ممکن است بخواهید از جستجوی بینندگان خود در تبلیغات میان‌پول خود جلوگیری کنید. وقتی کاربر به دنبال وقفه تبلیغاتی است، می‌توانید او را به ابتدای آن وقفه تبلیغاتی برگردانید و پس از اتمام آن وقفه تبلیغاتی، او را به مکان جستجوی خود برگردانید. این ویژگی "snapback" نام دارد.

به عنوان مثال، نمودار زیر را ببینید. بیننده شما در حال تماشای یک ویدیو است و تصمیم می گیرد از نقطه 5 دقیقه تا 15 دقیقه را جستجو کند. با این حال، یک وقفه تبلیغاتی در حد 10 دقیقه وجود دارد که می‌خواهید قبل از اینکه بتوانند محتوا را بعد از آن تماشا کنند، آن را تماشا کنند:

برای نمایش این استراحت تبلیغاتی، مراحل زیر را انجام دهید:

  1. بررسی کنید که آیا کاربر جستجویی انجام داده است که از یک وقفه تبلیغاتی تماشا نشده عبور کرده است یا خیر، و اگر چنین است، او را به استراحت تبلیغاتی برگردانید.
  2. پس از اتمام وقفه تبلیغاتی، آنها را به جستجوی اصلی خود برگردانید.

در شکل نمودار، به شکل زیر است:

در اینجا نحوه پیاده سازی این گردش کار در IMA DAI SDK، همانطور که در AdvancedExample انجام می شود، آمده است.

جلوگیری از بی توجهی یک وقفه تبلیغاتی به دنبال

بررسی کنید که آیا کاربر جستجویی را انجام داده است که از یک وقفه تبلیغاتی تماشا نشده گذشته است یا خیر، و اگر چنین است، او را به وقفه تبلیغاتی برگردانید. برای مثال iOS Advanced، از تعامل کاربر با رابط کاربری خود استفاده کنید تا تشخیص دهید چه زمانی جستجو کرده است. زمان شروع جستجو را حفظ کنید تا بررسی کنید که آیا آنها از وقفه تبلیغاتی پخش نشده در جستجوی خود عبور کرده اند یا خیر. وقتی کاربر کنترل‌های ویدیو را آزاد می‌کند، زمان فعلی او را با زمان آخرین وقفه تبلیغاتی مقایسه کنید. اگر وقفه آگهی بعد از زمان شروع جستجو (به این معنی است که کاربر از آن گذشته است) افتاد و هنوز پخش نشده است، آنها را به شروع استراحت جستجو کنید. همچنین، یک پرچم snapback تنظیم کنید تا بعداً در کنترل کننده کامل استراحت آگهی خود بررسی شود:

- (IBAction)videoControlsTouchStarted:(id)sender {
  self.seekStartTime = self.contentPlayer.currentTime;
}

- (IBAction)videoControlsTouchEnded:(id)sender {
  self.seekEndTime = CMTimeMake(self.progressBar.value, 1);
  IMACuepoint *lastCuepoint =
      [self.streamManager previousCuepointForStreamTime:CMTimeGetSeconds(self.seekEndTime)];
  if (!lastCuepoint.played && (lastCuepoint.startTime > CMTimeGetSeconds(self.seekStartTime))) {
    self.snapbackMode = YES
    // Add 1 to the seek time to get the keyframe at the start of the ad to be your landing place.
    [self.contentPlayer seekToTime:CMTimeMakeWithSeconds(lastCuepoint.startTime + 1, NSEC_PER_SEC)];
  }
}

کاربر را به جستجوی اصلی خود برگردانید

در کنترلر با پایان شکست آگهی خود، بررسی کنید که آیا شکست قبلی در نتیجه snapback پخش شده است یا خیر. اگر چنین است، کاربر را به مکانی که در ابتدا می‌خواست به دنبال آن بود برگردانید (تا زمانی که اواسط وقفه تبلیغاتی پخش نشده باشد):

- (void)streamManager:(IMAStreamManager *)streamManager didReceiveAdEvent:(IMAAdEvent *)event {
  switch (event.type) {
    case kIMAAdEvent_AD_BREAK_ENDED: {
      if (self.snapbackMode) {
        self.snapbackMode = NO;
        if (CMTimeCompare(self.seekEndTime, self.contentPlayer.currentTime)) {
          [self.contentPlayer seekToTime:self.seekEndTime];
        }
      }
      break;
    }
  }
}