คู่มือนี้แสดงวิธีใช้การบุ๊กมาร์กโดยใช้ IMA DAI SDK เมื่อใช้การแทรกโฆษณาแบบไดนามิก (DAI) สำหรับสตรีมวิดีโอออนดีมานด์ (VOD) ซึ่งถือว่ามีการใช้งาน IMA DAI ที่ใช้งานได้ เช่น การใช้งานที่แสดงใน เริ่มต้นใช้งาน
การบุ๊กมาร์กคืออะไร
การสร้างบุ๊กมาร์กเป็นความสามารถในการบันทึกจุดที่เฉพาะเจาะจงในสตรีมเนื้อหา แล้วกลับไปยังจุดนั้นได้ สมมติว่าผู้ใช้คนหนึ่งดูเนื้อหานาน 5 นาที ออกจากสตรีมวิดีโอ แล้วกลับมาดูต่อ การสร้างบุ๊กมาร์กจะบันทึกตำแหน่งของผู้ใช้ในสตรีม ดังนั้นสตรีมจะกลับมาที่จุดที่ดูค้างไว้ แล้วให้ผู้ใช้ดูต่อได้อย่างต่อเนื่อง
การบุ๊กมาร์ก DAI เบื้องหลัง
เมื่อบุ๊กมาร์กสตรีม DAI คุณต้องบันทึกรหัสสตรีมและเวลา เมื่อผู้ใช้ออกจากวิดีโอ เมื่อผู้ใช้กลับมา ให้ขอ สตรีมอีกครั้งและข้ามไปยังเวลาที่บันทึกไว้ เนื่องจากสตรีมแต่ละอินสแตนซ์ที่ขออาจมีช่วงพักโฆษณาที่มีระยะเวลาต่างกัน การบันทึกเวลาสตรีมจึงใช้ไม่ได้ สิ่งที่คุณต้องการจริงๆ คือการดูต่อจากเวลาของเนื้อหาเดิม
วิธีการ Conversion ช่วยคุณได้
IMA DAI SDK มีเมธอด 2 รายการสำหรับขอเวลาเนื้อหา สำหรับเวลาสตรีมที่ระบุ และเวลาสตรีมสำหรับเวลาเนื้อหาที่ระบุ เมื่อใช้วิธีการแปลงเหล่านี้ คุณจะจัดเก็บเวลาของเนื้อหาที่บุ๊กมาร์กไว้ แล้วไปยังเวลาของสตรีมที่สอดคล้องกันใน อินสแตนซ์ใหม่ของสตรีมได้ ต่อไปนี้คือแนวทาง รวมถึงลิงก์ ไปยังแอปตัวอย่างที่แสดงการติดตั้งใช้งานการบุ๊กมาร์กที่ใช้งานได้
การบันทึกบุ๊กมาร์ก
บันทึกบุ๊กมาร์กเมื่อกิจกรรมหยุดชั่วคราว
- (void)viewWillDisappear:(BOOL)animated {
[super viewWillDisappear:animated];
[self.contentPlayer pause];
// Ignore this if you're presenting a modal view (e.g. in-app clickthrough).
if ([self.navigationController.viewControllers indexOfObject:self] ==
NSNotFound) {
NSTimeInterval contentTime =
[self.streamManager contentTimeForStreamTime:CMTimeGetSeconds(
self.contentPlayer.currentTime)];
self.video.savedTime = contentTime;
...
}
}
กำลังโหลดบุ๊กมาร์ก
โหลดบุ๊กมาร์กเมื่อขอสตรีมอีกครั้ง ซึ่งเป็นส่วนหนึ่งของการติดตั้งใช้งานอินเทอร์เฟซ VideoStreamPlayer
- (void)streamManager:(IMAStreamManager *)streamManager didReceiveAdEvent:(IMAAdEvent *)event {
...
case kIMAAdEvent_STREAM_LOADED: {
if (self.video.savedTime > 0) {
NSTimeInterval streamTime =
[self.streamManager streamTimeForContentTime:self.video.savedTime];
[self.IMAVideoDisplay.playerItem
seekToTime:CMTimeMakeWithSeconds(streamTime, NSEC_PER_SEC)];
self.video.savedTime = 0;
}
}
}