Khoá cài

Là nhà xuất bản video, bạn nên ngăn người xem tìm kiếm qua quảng cáo trong video. Khi người dùng tua qua một điểm chèn quảng cáo, bạn có thể đưa họ trở lại điểm bắt đầu của điểm chèn quảng cáo đó, sau đó đưa họ trở lại vị trí tìm kiếm sau khi điểm chèn quảng cáo đó kết thúc. Chiến dịch này được gọi là "quay lại".

Để biết ví dụ, hãy xem sơ đồ dưới đây. Khán giả đang xem video, và quyết định tìm từ mốc 5 phút đến mốc 15 phút. Tuy nhiên, có một điểm chèn quảng cáo ở mốc 10 phút mà bạn muốn để trẻ xem trước khi xem nội dung sau khi video đó kết thúc:

Để hiển thị điểm chèn quảng cáo này, hãy làm theo các bước sau:

  1. Kiểm tra xem người dùng có chạy một lượt tìm kiếm nhảy qua điểm chèn quảng cáo mà bạn chưa xem hay không, và nếu có, hãy đưa họ trở lại điểm chèn quảng cáo.
  2. Sau khi điểm chèn quảng cáo kết thúc, hãy đưa các quảng cáo trở về lượt tìm kiếm ban đầu.

Ở dạng biểu đồ, mã sẽ có dạng như sau:

Dưới đây là cách triển khai quy trình làm việc này trong SDK IMA DAI, như được thực hiện trong AdvancedExample.

Ngăn lượt tìm kiếm để lại một điểm chèn quảng cáo chưa được xem

Kiểm tra xem người dùng có chạy tính năng tua qua một điểm chèn quảng cáo chưa xem hay không. Nếu có, hãy đưa họ trở lại điểm chèn quảng cáo đó. Đối với ví dụ nâng cao về iOS, hãy sử dụng hoạt động tương tác của người dùng với giao diện người dùng để phát hiện thời điểm họ chạy một thao tác tìm kiếm. Giữ nguyên thời gian bắt đầu tua để kiểm tra nếu họ đã vượt qua một điểm chèn quảng cáo chưa được phát trong lần tìm kiếm. Khi người dùng phát hành các nút điều khiển video, so sánh thời gian hiện tại của chúng với thời điểm điểm chèn quảng cáo gần đây nhất. Nếu điểm chèn quảng cáo rơi xuống sau khi bắt đầu tua thời gian (nghĩa là người dùng đã vượt qua thời gian đó) và trò chơi vẫn chưa được chơi, di chuyển họ trở lại điểm bắt đầu của điểm chèn quảng cáo. Ngoài ra, hãy đặt cờ xem lại để kiểm tra sau trong trình xử lý hoàn thành điểm chèn quảng cáo:

- (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)];
  }
}

Đưa người dùng quay lại lệnh tìm kiếm ban đầu

Trong trình xử lý điểm chèn quảng cáo, hãy kiểm tra xem điểm chèn quảng cáo được phát là kết quả của tính năng quay lại nhanh. Nếu có, hãy trả lại người dùng đến vị trí họ muốn tìm kiếm ban đầu (miễn là không phải là đoạn giữa của điểm chèn quảng cáo vừa phát):

- (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;
    }
  }
}