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