إشارات مرجعية

يوضّح هذا الدليل كيفية وضع إشارات مرجعية باستخدام حزمة تطوير البرامج لإدراج إعلان ديناميكي لإعلانات الوسائط التفاعلية عند استخدام ميزة إدراج الإعلانات الديناميكية (DAI) في عمليات بث الفيديوهات المسجّلة. وتفترض هذه الطريقة تنفيذ ميزة DAI لإعلانات الوسائط التفاعلية بشكلٍ سليم، مثل ما ورد في البدء.

ما وضع الإشارات المرجعية؟

الإشارة المرجعية هي إمكانية حفظ المحتوى ثم العودة إلى نقطة معيّنة في بث المحتوى. لنفترض أن المستخدم يشاهد محتوى لمدة خمس دقائق وغادر مقطع الفيديو ثم عاد إليه. يؤدي وضع إشارة مرجعية إلى حفظ ترتيب المستخدم في البث المباشر ليتمكّن البث من استئناف البث من حيث توقف، ما يوفّر للمشاهد تجربة سلسة.

مزيد من التفاصيل حول وضع إشارات DAI المرجعية

عند وضع إشارة مرجعية على بث DAI، يجب تسجيل معرّف البث ووقته عندما يغادر المستخدم الفيديو. عند عودة المستخدم، أعد طلب البث وحاول توفير الوقت. بما أنّ كلّ حدث من البث المطلوب يمكن أن يتضمّن فواصل إعلانية ذات مُدد مختلفة، لن يؤدي ذلك ببساطة إلى حفظ وقت البث. ننصحك بالمتابعة من وقت المحتوى نفسه.

طرق التحويل إلى الإنقاذ

توفّر حزمة تطوير البرامج لإدراج إعلان ديناميكي لإعلانات الوسائط التفاعلية طريقتَين لطلب وقت المحتوى لفترة بث معيّنة ووقت البث لوقت المحتوى معيّن. باستخدام طرق الإحالة الناجحة هذه، يمكنك تخزين وقت المحتوى الذي تم وضع إشارة عليه ثم الانتقال إلى وقت البث المقابل في النسخة الجديدة من البث. إليك النهج، بما في ذلك رابط لنموذج تطبيق يوضح تنفيذ إشارات مرجعية قيد التشغيل.

حفظ الإشارات المرجعية

حفظ إشارة مرجعية عند إيقاف النشاط مؤقتًا

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

نموذج التطبيق

نموذج التطبيق