Warning: The IMA SDK for Cast SDK v2 has been officially deprecated, as of November 17th, 2021. All existing users are urged to migrate to CAF native Ad Breaks.

تطبيق المُرسِل الذي يعمل بنظام التشغيل iOS

Stay organized with collections Save and categorize content based on your preferences.

يوضح لك هذا الدليل كيفية إنشاء تطبيق مرسل يعمل بنظام التشغيل iOS يعمل بتكنولوجيا Google Cast من خلال إرشادك إلى أحد الأمثلة على أحد التطبيقات الحالية.

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

المتطلبات الأساسية

ويستند هذا الدليل إلى المعرفة الحالية لأداة Google Cast SDK وIMA SDK لنظام التشغيل iOS. ويجب على المستخدمين التعرف على ما يلي:

يناقش هذا الدليل الإعداد المحدد المستخدَم في المثال "إرسال" للتواصل مع المتلقي. ولا تغطي شفرة إعداد Cast القياسية أو تشغيل إعلانات الوسائط التفاعلية العادية. لمزيد من التفاصيل حول تنفيذ جهاز الاستقبال، يُرجى مراجعة دليل استقبال HTML5.

جارٍ إرسال الرسائل

تم تنفيذ منطق الإرسال لتطبيق CastExample في CastViewController.m. فهو يستخدم قناة الإرسال المحدّدة في CastMessageChannel.h لتوجيه الرسائل بين المُستلِم والمُرسِل. تحاول الدالة castVideo تحميل عنوان URL للمحتوى، ثم تُرسل رسالة مخصّصة إلى المُستلِم تطلب منه طلب الإعلانات باستخدام علامة الإعلان نفسها والبحث عن الطابع الزمني الحالي للمرسِل.

CastViewController.m

- (IBAction)castVideo:(id)sender {
  // Show alert if not connected.
  if (!self.deviceManager ||
      self.deviceManager.connectionState != GCKConnectionStateConnected) {
    UIAlertController *alert = [UIAlertController
        alertControllerWithTitle:@"Not Connected"
                         message:@"Please connect to Cast device"
                  preferredStyle:UIAlertControllerStyleAlert];
    UIAlertAction *action =
        [UIAlertAction actionWithTitle:@"OK"
                                 style:UIAlertActionStyleDefault
                               handler:nil];
    [alert addAction:action];
    [self presentViewController:alert animated:YES completion:nil];
    return;
  }

  [self.viewController pauseVideo];
  NSString *contentUrl = self.viewController.kContentUrl;
  GCKMediaMetadata *metadata = [[GCKMediaMetadata alloc] init];
  GCKMediaInformation *mediaInformation =
      [[GCKMediaInformation alloc] initWithContentID:contentUrl
                                          streamType:GCKMediaStreamTypeBuffered
                                         contentType:@"video/mp4"
                                            metadata:metadata
                                      streamDuration:0
                                          customData:nil];
  [self.mediaControlChannel loadMedia:mediaInformation
                             autoplay:NO
                         playPosition:0];
  if (self.viewController.adIsVmap || !self.viewController.adHasStarted) {
    [self sendMessage:[NSString
                          stringWithFormat:@"requestAd,%@,%f",
                                           self.viewController.kAdTagUrl,
                                           CMTimeGetSeconds(
                                               self.viewController.contentPlayer
                                                   .currentTime)]];
  } else {
    [self sendMessage:[NSString
                          stringWithFormat:@"seek,%f",
                                           CMTimeGetSeconds(
                                               self.viewController.contentPlayer
                                                   .currentTime)]];
  }
}

- (void)sendMessage:(NSString *)message {
  NSLog(@"Sending message: %@", message);
  [self.messageChannel sendTextMessage:message];
}

يتم تحديد رسالتين: طلب التشغيل لاستئناف التشغيل على جهاز الاستقبال دون إعلانات، وrequestrequest الذي يعيد طلب علامة الإعلان نفسها على جهاز الاستقبال. يُستخدم هذا في قوائم تشغيل الإعلانات وVMAP في هذا المثال، ولكن يمكنك تحديد سلوكك الخاص فيما ينبغي أن يحدث عند الإرسال. يتم تحديد هذه الرسائل بفواصل، حيث تكون المعلمة الأولى هي اسم الرسالة، وتكون المعلمات المتبقية هي علامة الإعلان ووقت البحث.

تلقي الرسائل

يقدم جهاز الاستقبال إشعارات بتحديثات الوقت من فيديو الإرسال وعند توقف الإعلان الذي يتم إرساله وبدء المحتوى. يتم التعامل مع هذا في المُرسِل من خلال رسالتين:

  • onContentPauseRequested
  • onContentResumeRequested

يتم الفصل بين هذه الرسائل بفواصل ومنسقة بشكل مشابه لرسائل البحث وrequestAd الموضحة أعلاه.

- (void)onCastMessageReceived:(CastMessageChannel *)channel
                  withMessage:(NSString *)message {
  // handle the delegate being called here
  NSLog(@"Receiving message: %@", message);
  NSArray *splitMessage = [message componentsSeparatedByString:@","];
  NSString *event = splitMessage[0];
  if ([event isEqualToString:@"onContentPauseRequested"]) {
    self.castAdPlaying = true;
    self.castContentTime =
        CMTimeMakeWithSeconds([splitMessage[1] floatValue], 1);
  } else if ([event isEqualToString:@"onContentResumeRequested"]) {
    self.castAdPlaying = false;
  }
}

يتم استخدام المتغيّرَين castAdPlaying وcastContentTime لتحديد ما إذا كان يتم عرض إعلان على جهاز البث ولتخزين وقت المحتوى الذي بدأ فيه الإعلان. في حال توقف المُستلِم عن الإرسال، يعرف المُرسِل المكان الذي سيستأنف إرسال المحتوى منه.

الخطوات التالية

في هذه المرحلة، ستتفهم جيدًا كيفية تفاعل تطبيق المُرسِل الذي يعمل بنظام التشغيل iOS مع المُستلِم. لتجربتها، أنشئ تطبيق جهاز استقبال وسجّل جهاز استقبال من أجل تلقي رقم تعريف تطبيق يتم استخدامه مع مكالمات واجهة برمجة التطبيقات من تطبيق المرسل.