דילוג

אין צורך להציג מודעות שניתן לדלג עליהן ולהציג אותן עם CAF DAI SDK, מפני שהתהליך הזה מצריך הבחנה בין היכולת של השולחים והמקבלים להשתמש להציג לחצן ולדלג עליו.

ה-SDK נעשה כמיטב יכולתו כדי לזהות אם המקבל הנוכחי יכול לבצע אינטראקציה ישירות עם לחצן הדילוג ולקיים איתו אינטראקציה. עם זאת, בעל התוכן הדיגיטלי צריך לקבוע אם מי מהשולחים המצורפים יוכל להציג מודעות ניתנות לדילוג, על ידי החלפת המצב של המאפיין imaRequestData.senderCanSkip.

בכל הדוגמאות ל-SDK של DAI CAF, השולח יכול לדלג ישירות מהשולח כחלק מאובייקט המדיה. מדובר בהטמעה פשוטה ויעילה של שולח יחיד, אבל באפליקציות בעולם האמיתי יכול להיות שמקלט CAF יצורף לכמה אפליקציות של שולחים, והשולח שתור בתור קובץ מדיה לא יהיה מחובר יותר כשאובייקט המדיה ייטען ובקשת הסטרימינג תישלח.

נמען מתקדם יותר יכול לעקוב אחרי אילו סוגים של שולחים משויכים תומכים בדילוגים, ואילו לא, ולבדוק אם הטעינה מתבצעת כרגע.

דוגמה לשולח אחד):

...

    let getStreamRequest = (request) => {
      const imaRequestData = request.media.customData;
      let streamRequest = null;
      if (imaRequestData.assetKey) {
        // Live stream
        streamRequest = new google.ima.cast.dai.api.LiveStreamRequest();
        streamRequest.assetKey = imaRequestData.assetKey;
      } else if (imaRequestData.contentSourceId) {
        // VOD stream
        streamRequest = new google.ima.cast.dai.api.VODStreamRequest();
        streamRequest.contentSourceId = imaRequestData.contentSourceId;
        streamRequest.videoId = imaRequestData.videoId;
      }
      if (streamRequest && imarequestdata.ApiKey) {
        streamRequest.ApiKey = imarequestdata.ApiKey;
      }
      if (streamRequest && imarequestdata.senderCanSkip) {
        streamRequest.senderCanSkip = imaRequestData.senderCanSkip;
      }
      return streamRequest;
    };
...

דוגמה (תמיכה בשליחה לכמה נמענים):

...

    let getStreamRequest = (request) => {
      const imaRequestData = request.media.customData;
      let streamRequest = null;
      if (imaRequestData.assetKey) {
        // Live stream
        streamRequest = new google.ima.cast.dai.api.LiveStreamRequest();
        streamRequest.assetKey = imaRequestData.assetKey;
      } else if (imaRequestData.contentSourceId) {
        // VOD stream
        streamRequest = new google.ima.cast.dai.api.VODStreamRequest();
        streamRequest.contentSourceId = imaRequestData.contentSourceId;
        streamRequest.videoId = imaRequestData.videoId;
      }
      if (streamRequest && imarequestdata.ApiKey) {
        streamRequest.ApiKey = imarequestdata.ApiKey;
      }

      let senders = castContext.getSenders();
      let senderCanSkip = (sender) => {
        const skippableUserAgents = [
          "iOS CastSDK",
          "Android CastSDK"
        ];
        // trim user agent to just include device
        let userAgent = sender.userAgent.explode(',')[0];
        return skippableUserAgents.includes(userAgent);
      };
      if (streamRequest && senders.some(senderCanSkip)) {
        streamRequest.senderCanSkip = imarequestdata.senderCanSkip;
      }
      return streamRequest;
    };

...

בסופו של דבר, בעלי התוכן הדיגיטלי אחראים לחוויית המשתמשים שלהם, ומכיוון שכל השולחים שניתן לדלג עליהם יכולים להתנתק בין המועד שבו נשלחת הבקשה לסטרימינג ועד שהמודעה מופעלת, מומלץ לצרף גורם handler לאירוע STARTED כדי לבדוק אם ניתן לדלג על המודעה, והשולחים והמקבל לא יכולים לתמוך בדילוגים. ה-handler הזה יכול לדלג על מודעות כאלה באופן אוטומטי, אם הן מופיעות. עם זאת, הטמעה מתקדמת כזו היא מעבר לטווח התמיכה של CAF DAI.

כברירת מחדל, גם אם בקשת הקצה מתרחשת, המשתמש עדיין יכול ליזום תקלה טכנית על ידי חיבור שולח שתומך בדילוגים ולאחר מכן לחיצה על לחצן הדילוג שמופיע.