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 지원 범위를 벗어납니다.
기본적으로 이러한 예외적인 케이스가 발생하더라도 사용자는 건너뛰기 기능을 지원하는 발신자를 먼저 연결한 다음 표시되는 건너뛰기 버튼을 클릭하여 기술적으로 건너뛰기를 시작할 수 있습니다.