건너뛰기 가능 여부

CAF DAI SDK로 건너뛸 수 있는 광고를 요청하고 표시하는 것은 약간 복잡한 작업입니다. 사용 중인 발신자와 수신자 조합이 건너뛰기 버튼을 표시하고 상호작용할 수 있는지 확인해야 하기 때문입니다.

SDK는 현재 수신기가 건너뛰기 버튼을 직접 렌더링하고 상호작용할 수 있는지 감지하기 위해 최선을 다합니다. 하지만 게시자는 imaRequestData.senderCanSkip 속성을 전환하여 첨부된 발신자에게 건너뛸 수 있는 광고를 게재할 수 있는지 확인해야 합니다.

CAF DAI SDK의 모든 샘플에서senderCanSkip은 미디어 객체의 일부로 발신기에서 직접 전달됩니다. 이는 의도적으로 단일 발신자에 잘 작동하는 구현이지만, 실제 애플리케이션에서는 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;
    };

...

궁극적으로 게시자는 사용자 경험에 대한 책임을 지며, 스트림 요청이 이루어진 시점과 광고가 재생되는 시점 사이에 모든 건너뛸 수 있는 발신자의 연결이 해제될 수 있으므로 광고를 건너뛸 수 있는지 확인하고 발신자와 수신자 모두 건너뛰기를 지원할 수 없도록 하는 핸들러를 STARTED 이벤트에 연결하는 것이 좋습니다. 광고가 표시되는 경우 이 핸들러가 자동으로 건너뛸 수 있습니다. 그러나 이러한 고급 구현은 CAF DAI 지원 범위를 벗어납니다.

기본적으로 이러한 극단적인 사례가 발생하는 경우 사용자는 건너뛰기 기능을 지원하는 발신자를 먼저 연결한 다음 표시되는 건너뛰기 버튼을 클릭하여 기술적으로는 건너뛰기를 시작할 수 있습니다.